From 2788a80850aae3bca348cc40109f7ce9ff3d2dea Mon Sep 17 00:00:00 2001 From: Alec Date: Wed, 28 Aug 2024 15:28:34 -0700 Subject: [PATCH 1/3] feat: add updated python from nextron branch --- app/background.js | 40232 ++++++++++++++++++++++++++++++++++ app/preload.js | 128 + package-lock.json | 8288 +++++++ package.json | 2 +- py/csv/legacy_graph.json | 882 + py/csv/structure_graph.json | 17540 +++++++++++++++ py/deep_registration.py | 504 + py/demons.py | 95 +- py/map.py | 94 +- py/requirements.txt | 6 +- py/slice_atlas.py | 366 +- py/slice_estimator.py | 378 + py/test_alignment.py | 277 + yarn.lock | 2266 +- 14 files changed, 69804 insertions(+), 1254 deletions(-) create mode 100644 app/background.js create mode 100644 app/preload.js create mode 100644 package-lock.json create mode 100644 py/csv/legacy_graph.json create mode 100644 py/csv/structure_graph.json create mode 100644 py/deep_registration.py create mode 100644 py/slice_estimator.py create mode 100644 py/test_alignment.py diff --git a/app/background.js b/app/background.js new file mode 100644 index 0000000..e1a783a --- /dev/null +++ b/app/background.js @@ -0,0 +1,40232 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("electron-serve"), require("electron-store"), require("axios"), require("tar"), require("extract-zip"), require("python-shell")); + else if(typeof define === 'function' && define.amd) + define(["electron-serve", "electron-store", "axios", "tar", "extract-zip", "python-shell"], factory); + else { + var a = typeof exports === 'object' ? factory(require("electron-serve"), require("electron-store"), require("axios"), require("tar"), require("extract-zip"), require("python-shell")) : factory(root["electron-serve"], root["electron-store"], root["axios"], root["tar"], root["extract-zip"], root["python-shell"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(global, (__WEBPACK_EXTERNAL_MODULE_electron_serve__, __WEBPACK_EXTERNAL_MODULE_electron_store__, __WEBPACK_EXTERNAL_MODULE_axios__, __WEBPACK_EXTERNAL_MODULE_tar__, __WEBPACK_EXTERNAL_MODULE_extract_zip__, __WEBPACK_EXTERNAL_MODULE_python_shell__) => { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/archiver-utils/file.js": +/*!*********************************************!*\ + !*** ./node_modules/archiver-utils/file.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * archiver-utils + * + * Copyright (c) 2012-2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-archiver/blob/master/LICENSE-MIT + */ +var fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js"); +var path = __webpack_require__(/*! path */ "path"); + +var flatten = __webpack_require__(/*! lodash.flatten */ "./node_modules/lodash.flatten/index.js"); +var difference = __webpack_require__(/*! lodash.difference */ "./node_modules/lodash.difference/index.js"); +var union = __webpack_require__(/*! lodash.union */ "./node_modules/lodash.union/index.js"); +var isPlainObject = __webpack_require__(/*! lodash.isplainobject */ "./node_modules/lodash.isplainobject/index.js"); + +var glob = __webpack_require__(/*! glob */ "./node_modules/glob/glob.js"); + +var file = module.exports = {}; + +var pathSeparatorRe = /[\/\\]/g; + +// Process specified wildcard glob patterns or filenames against a +// callback, excluding and uniquing files in the result set. +var processPatterns = function(patterns, fn) { + // Filepaths to return. + var result = []; + // Iterate over flattened patterns array. + flatten(patterns).forEach(function(pattern) { + // If the first character is ! it should be omitted + var exclusion = pattern.indexOf('!') === 0; + // If the pattern is an exclusion, remove the ! + if (exclusion) { pattern = pattern.slice(1); } + // Find all matching files for this pattern. + var matches = fn(pattern); + if (exclusion) { + // If an exclusion, remove matching files. + result = difference(result, matches); + } else { + // Otherwise add matching files. + result = union(result, matches); + } + }); + return result; +}; + +// True if the file path exists. +file.exists = function() { + var filepath = path.join.apply(path, arguments); + return fs.existsSync(filepath); +}; + +// Return an array of all file paths that match the given wildcard patterns. +file.expand = function(...args) { + // If the first argument is an options object, save those options to pass + // into the File.prototype.glob.sync method. + var options = isPlainObject(args[0]) ? args.shift() : {}; + // Use the first argument if it's an Array, otherwise convert the arguments + // object to an array and use that. + var patterns = Array.isArray(args[0]) ? args[0] : args; + // Return empty set if there are no patterns or filepaths. + if (patterns.length === 0) { return []; } + // Return all matching filepaths. + var matches = processPatterns(patterns, function(pattern) { + // Find all matching files for this pattern. + return glob.sync(pattern, options); + }); + // Filter result set? + if (options.filter) { + matches = matches.filter(function(filepath) { + filepath = path.join(options.cwd || '', filepath); + try { + if (typeof options.filter === 'function') { + return options.filter(filepath); + } else { + // If the file is of the right type and exists, this should work. + return fs.statSync(filepath)[options.filter](); + } + } catch(e) { + // Otherwise, it's probably not the right type. + return false; + } + }); + } + return matches; +}; + +// Build a multi task "files" object dynamically. +file.expandMapping = function(patterns, destBase, options) { + options = Object.assign({ + rename: function(destBase, destPath) { + return path.join(destBase || '', destPath); + } + }, options); + var files = []; + var fileByDest = {}; + // Find all files matching pattern, using passed-in options. + file.expand(options, patterns).forEach(function(src) { + var destPath = src; + // Flatten? + if (options.flatten) { + destPath = path.basename(destPath); + } + // Change the extension? + if (options.ext) { + destPath = destPath.replace(/(\.[^\/]*)?$/, options.ext); + } + // Generate destination filename. + var dest = options.rename(destBase, destPath, options); + // Prepend cwd to src path if necessary. + if (options.cwd) { src = path.join(options.cwd, src); } + // Normalize filepaths to be unix-style. + dest = dest.replace(pathSeparatorRe, '/'); + src = src.replace(pathSeparatorRe, '/'); + // Map correct src path to dest path. + if (fileByDest[dest]) { + // If dest already exists, push this src onto that dest's src array. + fileByDest[dest].src.push(src); + } else { + // Otherwise create a new src-dest file mapping object. + files.push({ + src: [src], + dest: dest, + }); + // And store a reference for later use. + fileByDest[dest] = files[files.length - 1]; + } + }); + return files; +}; + +// reusing bits of grunt's multi-task source normalization +file.normalizeFilesArray = function(data) { + var files = []; + + data.forEach(function(obj) { + var prop; + if ('src' in obj || 'dest' in obj) { + files.push(obj); + } + }); + + if (files.length === 0) { + return []; + } + + files = _(files).chain().forEach(function(obj) { + if (!('src' in obj) || !obj.src) { return; } + // Normalize .src properties to flattened array. + if (Array.isArray(obj.src)) { + obj.src = flatten(obj.src); + } else { + obj.src = [obj.src]; + } + }).map(function(obj) { + // Build options object, removing unwanted properties. + var expandOptions = Object.assign({}, obj); + delete expandOptions.src; + delete expandOptions.dest; + + // Expand file mappings. + if (obj.expand) { + return file.expandMapping(obj.src, obj.dest, expandOptions).map(function(mapObj) { + // Copy obj properties to result. + var result = Object.assign({}, obj); + // Make a clone of the orig obj available. + result.orig = Object.assign({}, obj); + // Set .src and .dest, processing both as templates. + result.src = mapObj.src; + result.dest = mapObj.dest; + // Remove unwanted properties. + ['expand', 'cwd', 'flatten', 'rename', 'ext'].forEach(function(prop) { + delete result[prop]; + }); + return result; + }); + } + + // Copy obj properties to result, adding an .orig property. + var result = Object.assign({}, obj); + // Make a clone of the orig obj available. + result.orig = Object.assign({}, obj); + + if ('src' in result) { + // Expose an expand-on-demand getter method as .src. + Object.defineProperty(result, 'src', { + enumerable: true, + get: function fn() { + var src; + if (!('result' in fn)) { + src = obj.src; + // If src is an array, flatten it. Otherwise, make it into an array. + src = Array.isArray(src) ? flatten(src) : [src]; + // Expand src files, memoizing result. + fn.result = file.expand(expandOptions, src); + } + return fn.result; + } + }); + } + + if ('dest' in result) { + result.dest = obj.dest; + } + + return result; + }).flatten().value(); + + return files; +}; + + +/***/ }), + +/***/ "./node_modules/archiver-utils/index.js": +/*!**********************************************!*\ + !*** ./node_modules/archiver-utils/index.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * archiver-utils + * + * Copyright (c) 2015 Chris Talkington. + * Licensed under the MIT license. + * https://github.com/archiverjs/archiver-utils/blob/master/LICENSE + */ +var fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js"); +var path = __webpack_require__(/*! path */ "path"); +var nutil = __webpack_require__(/*! util */ "util"); +var lazystream = __webpack_require__(/*! lazystream */ "./node_modules/lazystream/lib/lazystream.js"); +var normalizePath = __webpack_require__(/*! normalize-path */ "./node_modules/normalize-path/index.js"); +var defaults = __webpack_require__(/*! lodash.defaults */ "./node_modules/lodash.defaults/index.js"); + +var Stream = (__webpack_require__(/*! stream */ "stream").Stream); +var PassThrough = (__webpack_require__(/*! readable-stream */ "./node_modules/archiver-utils/node_modules/readable-stream/readable.js").PassThrough); + +var utils = module.exports = {}; +utils.file = __webpack_require__(/*! ./file.js */ "./node_modules/archiver-utils/file.js"); + +function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + nutils.inspect(path)); + } +} + +utils.collectStream = function(source, callback) { + var collection = []; + var size = 0; + + source.on('error', callback); + + source.on('data', function(chunk) { + collection.push(chunk); + size += chunk.length; + }); + + source.on('end', function() { + var buf = new Buffer(size); + var offset = 0; + + collection.forEach(function(data) { + data.copy(buf, offset); + offset += data.length; + }); + + callback(null, buf); + }); +}; + +utils.dateify = function(dateish) { + dateish = dateish || new Date(); + + if (dateish instanceof Date) { + dateish = dateish; + } else if (typeof dateish === 'string') { + dateish = new Date(dateish); + } else { + dateish = new Date(); + } + + return dateish; +}; + +// this is slightly different from lodash version +utils.defaults = function(object, source, guard) { + var args = arguments; + args[0] = args[0] || {}; + + return defaults(...args); +}; + +utils.isStream = function(source) { + return source instanceof Stream; +}; + +utils.lazyReadStream = function(filepath) { + return new lazystream.Readable(function() { + return fs.createReadStream(filepath); + }); +}; + +utils.normalizeInputSource = function(source) { + if (source === null) { + return new Buffer(0); + } else if (typeof source === 'string') { + return new Buffer(source); + } else if (utils.isStream(source) && !source._readableState) { + var normalized = new PassThrough(); + source.pipe(normalized); + + return normalized; + } + + return source; +}; + +utils.sanitizePath = function(filepath) { + return normalizePath(filepath, false).replace(/^\w+:/, '').replace(/^(\.\.\/|\/)+/, ''); +}; + +utils.trailingSlashIt = function(str) { + return str.slice(-1) !== '/' ? str + '/' : str; +}; + +utils.unixifyPath = function(filepath) { + return normalizePath(filepath, false).replace(/^\w+:/, ''); +}; + +utils.walkdir = function(dirpath, base, callback) { + var results = []; + + if (typeof base === 'function') { + callback = base; + base = dirpath; + } + + fs.readdir(dirpath, function(err, list) { + var i = 0; + var file; + var filepath; + + if (err) { + return callback(err); + } + + (function next() { + file = list[i++]; + + if (!file) { + return callback(null, results); + } + + filepath = path.join(dirpath, file); + + fs.stat(filepath, function(err, stats) { + results.push({ + path: filepath, + relative: path.relative(base, filepath).replace(/\\/g, '/'), + stats: stats + }); + + if (stats && stats.isDirectory()) { + utils.walkdir(filepath, base, function(err, res) { + res.forEach(function(dirEntry) { + results.push(dirEntry); + }); + next(); + }); + } else { + next(); + } + }); + })(); + }); +}; + + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js ***! + \****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +var Readable = __webpack_require__(/*! ./_stream_readable */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_readable.js"); +var Writable = __webpack_require__(/*! ./_stream_writable */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_writable.js"); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_passthrough.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_passthrough.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + + +module.exports = PassThrough; + +var Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_transform.js"); + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_readable.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_readable.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +module.exports = Readable; + +/**/ +var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = (__webpack_require__(/*! events */ "events").EventEmitter); + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/archiver-utils/node_modules/safe-buffer/index.js").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +/**/ +var debugUtil = __webpack_require__(/*! util */ "util"); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/BufferList.js"); +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/destroy.js"); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/archiver-utils/node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/archiver-utils/node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_transform.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_transform.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; + +var Duplex = __webpack_require__(/*! ./_stream_duplex */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_writable.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_writable.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +/**/ +var internalUtil = { + deprecate: __webpack_require__(/*! util-deprecate */ "./node_modules/util-deprecate/node.js") +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/archiver-utils/node_modules/safe-buffer/index.js").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/destroy.js"); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/BufferList.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/BufferList.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/archiver-utils/node_modules/safe-buffer/index.js").Buffer); +var util = __webpack_require__(/*! util */ "util"); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/destroy.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/destroy.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } + } + + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/stream.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/lib/internal/streams/stream.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! stream */ "stream"); + + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/readable-stream/readable.js": +/*!******************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/readable-stream/readable.js ***! + \******************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +var Stream = __webpack_require__(/*! stream */ "stream"); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_readable.js"); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_writable.js"); + exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_duplex.js"); + exports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_transform.js"); + exports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ "./node_modules/archiver-utils/node_modules/readable-stream/lib/_stream_passthrough.js"); +} + + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/safe-buffer/index.js": +/*!***********************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/safe-buffer/index.js ***! + \***********************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(/*! buffer */ "buffer") +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ "./node_modules/archiver-utils/node_modules/string_decoder/lib/string_decoder.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/archiver-utils/node_modules/string_decoder/lib/string_decoder.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/archiver-utils/node_modules/safe-buffer/index.js").Buffer); +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), + +/***/ "./node_modules/archiver/index.js": +/*!****************************************!*\ + !*** ./node_modules/archiver/index.js ***! + \****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Archiver Vending + * + * @ignore + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ +var Archiver = __webpack_require__(/*! ./lib/core */ "./node_modules/archiver/lib/core.js"); + +var formats = {}; + +/** + * Dispenses a new Archiver instance. + * + * @constructor + * @param {String} format The archive format to use. + * @param {Object} options See [Archiver]{@link Archiver} + * @return {Archiver} + */ +var vending = function(format, options) { + return vending.create(format, options); +}; + +/** + * Creates a new Archiver instance. + * + * @param {String} format The archive format to use. + * @param {Object} options See [Archiver]{@link Archiver} + * @return {Archiver} + */ +vending.create = function(format, options) { + if (formats[format]) { + var instance = new Archiver(format, options); + instance.setFormat(format); + instance.setModule(new formats[format](options)); + + return instance; + } else { + throw new Error('create(' + format + '): format not registered'); + } +}; + +/** + * Registers a format for use with archiver. + * + * @param {String} format The name of the format. + * @param {Function} module The function for archiver to interact with. + * @return void + */ +vending.registerFormat = function(format, module) { + if (formats[format]) { + throw new Error('register(' + format + '): format already registered'); + } + + if (typeof module !== 'function') { + throw new Error('register(' + format + '): format module invalid'); + } + + if (typeof module.prototype.append !== 'function' || typeof module.prototype.finalize !== 'function') { + throw new Error('register(' + format + '): format module missing methods'); + } + + formats[format] = module; +}; + +/** + * Check if the format is already registered. + * + * @param {String} format the name of the format. + * @return boolean + */ +vending.isRegisteredFormat = function (format) { + if (formats[format]) { + return true; + } + + return false; +}; + +vending.registerFormat('zip', __webpack_require__(/*! ./lib/plugins/zip */ "./node_modules/archiver/lib/plugins/zip.js")); +vending.registerFormat('tar', __webpack_require__(/*! ./lib/plugins/tar */ "./node_modules/archiver/lib/plugins/tar.js")); +vending.registerFormat('json', __webpack_require__(/*! ./lib/plugins/json */ "./node_modules/archiver/lib/plugins/json.js")); + +module.exports = vending; + +/***/ }), + +/***/ "./node_modules/archiver/lib/core.js": +/*!*******************************************!*\ + !*** ./node_modules/archiver/lib/core.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Archiver Core + * + * @ignore + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ +var fs = __webpack_require__(/*! fs */ "fs"); +var glob = __webpack_require__(/*! readdir-glob */ "./node_modules/readdir-glob/index.js"); +var async = __webpack_require__(/*! async */ "./node_modules/async/dist/async.mjs"); +var path = __webpack_require__(/*! path */ "path"); +var util = __webpack_require__(/*! archiver-utils */ "./node_modules/archiver-utils/index.js"); + +var inherits = (__webpack_require__(/*! util */ "util").inherits); +var ArchiverError = __webpack_require__(/*! ./error */ "./node_modules/archiver/lib/error.js"); +var Transform = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Transform); + +var win32 = process.platform === 'win32'; + +/** + * @constructor + * @param {String} format The archive format to use. + * @param {(CoreOptions|TransformOptions)} options See also {@link ZipOptions} and {@link TarOptions}. + */ +var Archiver = function(format, options) { + if (!(this instanceof Archiver)) { + return new Archiver(format, options); + } + + if (typeof format !== 'string') { + options = format; + format = 'zip'; + } + + options = this.options = util.defaults(options, { + highWaterMark: 1024 * 1024, + statConcurrency: 4 + }); + + Transform.call(this, options); + + this._format = false; + this._module = false; + this._pending = 0; + this._pointer = 0; + + this._entriesCount = 0; + this._entriesProcessedCount = 0; + this._fsEntriesTotalBytes = 0; + this._fsEntriesProcessedBytes = 0; + + this._queue = async.queue(this._onQueueTask.bind(this), 1); + this._queue.drain(this._onQueueDrain.bind(this)); + + this._statQueue = async.queue(this._onStatQueueTask.bind(this), options.statConcurrency); + this._statQueue.drain(this._onQueueDrain.bind(this)); + + this._state = { + aborted: false, + finalize: false, + finalizing: false, + finalized: false, + modulePiped: false + }; + + this._streams = []; +}; + +inherits(Archiver, Transform); + +/** + * Internal logic for `abort`. + * + * @private + * @return void + */ +Archiver.prototype._abort = function() { + this._state.aborted = true; + this._queue.kill(); + this._statQueue.kill(); + + if (this._queue.idle()) { + this._shutdown(); + } +}; + +/** + * Internal helper for appending files. + * + * @private + * @param {String} filepath The source filepath. + * @param {EntryData} data The entry data. + * @return void + */ +Archiver.prototype._append = function(filepath, data) { + data = data || {}; + + var task = { + source: null, + filepath: filepath + }; + + if (!data.name) { + data.name = filepath; + } + + data.sourcePath = filepath; + task.data = data; + this._entriesCount++; + + if (data.stats && data.stats instanceof fs.Stats) { + task = this._updateQueueTaskWithStats(task, data.stats); + if (task) { + if (data.stats.size) { + this._fsEntriesTotalBytes += data.stats.size; + } + + this._queue.push(task); + } + } else { + this._statQueue.push(task); + } +}; + +/** + * Internal logic for `finalize`. + * + * @private + * @return void + */ +Archiver.prototype._finalize = function() { + if (this._state.finalizing || this._state.finalized || this._state.aborted) { + return; + } + + this._state.finalizing = true; + + this._moduleFinalize(); + + this._state.finalizing = false; + this._state.finalized = true; +}; + +/** + * Checks the various state variables to determine if we can `finalize`. + * + * @private + * @return {Boolean} + */ +Archiver.prototype._maybeFinalize = function() { + if (this._state.finalizing || this._state.finalized || this._state.aborted) { + return false; + } + + if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) { + this._finalize(); + return true; + } + + return false; +}; + +/** + * Appends an entry to the module. + * + * @private + * @fires Archiver#entry + * @param {(Buffer|Stream)} source + * @param {EntryData} data + * @param {Function} callback + * @return void + */ +Archiver.prototype._moduleAppend = function(source, data, callback) { + if (this._state.aborted) { + callback(); + return; + } + + this._module.append(source, data, function(err) { + this._task = null; + + if (this._state.aborted) { + this._shutdown(); + return; + } + + if (err) { + this.emit('error', err); + setImmediate(callback); + return; + } + + /** + * Fires when the entry's input has been processed and appended to the archive. + * + * @event Archiver#entry + * @type {EntryData} + */ + this.emit('entry', data); + this._entriesProcessedCount++; + + if (data.stats && data.stats.size) { + this._fsEntriesProcessedBytes += data.stats.size; + } + + /** + * @event Archiver#progress + * @type {ProgressData} + */ + this.emit('progress', { + entries: { + total: this._entriesCount, + processed: this._entriesProcessedCount + }, + fs: { + totalBytes: this._fsEntriesTotalBytes, + processedBytes: this._fsEntriesProcessedBytes + } + }); + + setImmediate(callback); + }.bind(this)); +}; + +/** + * Finalizes the module. + * + * @private + * @return void + */ +Archiver.prototype._moduleFinalize = function() { + if (typeof this._module.finalize === 'function') { + this._module.finalize(); + } else if (typeof this._module.end === 'function') { + this._module.end(); + } else { + this.emit('error', new ArchiverError('NOENDMETHOD')); + } +}; + +/** + * Pipes the module to our internal stream with error bubbling. + * + * @private + * @return void + */ +Archiver.prototype._modulePipe = function() { + this._module.on('error', this._onModuleError.bind(this)); + this._module.pipe(this); + this._state.modulePiped = true; +}; + +/** + * Determines if the current module supports a defined feature. + * + * @private + * @param {String} key + * @return {Boolean} + */ +Archiver.prototype._moduleSupports = function(key) { + if (!this._module.supports || !this._module.supports[key]) { + return false; + } + + return this._module.supports[key]; +}; + +/** + * Unpipes the module from our internal stream. + * + * @private + * @return void + */ +Archiver.prototype._moduleUnpipe = function() { + this._module.unpipe(this); + this._state.modulePiped = false; +}; + +/** + * Normalizes entry data with fallbacks for key properties. + * + * @private + * @param {Object} data + * @param {fs.Stats} stats + * @return {Object} + */ +Archiver.prototype._normalizeEntryData = function(data, stats) { + data = util.defaults(data, { + type: 'file', + name: null, + date: null, + mode: null, + prefix: null, + sourcePath: null, + stats: false + }); + + if (stats && data.stats === false) { + data.stats = stats; + } + + var isDir = data.type === 'directory'; + + if (data.name) { + if (typeof data.prefix === 'string' && '' !== data.prefix) { + data.name = data.prefix + '/' + data.name; + data.prefix = null; + } + + data.name = util.sanitizePath(data.name); + + if (data.type !== 'symlink' && data.name.slice(-1) === '/') { + isDir = true; + data.type = 'directory'; + } else if (isDir) { + data.name += '/'; + } + } + + // 511 === 0777; 493 === 0755; 438 === 0666; 420 === 0644 + if (typeof data.mode === 'number') { + if (win32) { + data.mode &= 511; + } else { + data.mode &= 4095 + } + } else if (data.stats && data.mode === null) { + if (win32) { + data.mode = data.stats.mode & 511; + } else { + data.mode = data.stats.mode & 4095; + } + + // stat isn't reliable on windows; force 0755 for dir + if (win32 && isDir) { + data.mode = 493; + } + } else if (data.mode === null) { + data.mode = isDir ? 493 : 420; + } + + if (data.stats && data.date === null) { + data.date = data.stats.mtime; + } else { + data.date = util.dateify(data.date); + } + + return data; +}; + +/** + * Error listener that re-emits error on to our internal stream. + * + * @private + * @param {Error} err + * @return void + */ +Archiver.prototype._onModuleError = function(err) { + /** + * @event Archiver#error + * @type {ErrorData} + */ + this.emit('error', err); +}; + +/** + * Checks the various state variables after queue has drained to determine if + * we need to `finalize`. + * + * @private + * @return void + */ +Archiver.prototype._onQueueDrain = function() { + if (this._state.finalizing || this._state.finalized || this._state.aborted) { + return; + } + + if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) { + this._finalize(); + } +}; + +/** + * Appends each queue task to the module. + * + * @private + * @param {Object} task + * @param {Function} callback + * @return void + */ +Archiver.prototype._onQueueTask = function(task, callback) { + var fullCallback = () => { + if(task.data.callback) { + task.data.callback(); + } + callback(); + } + + if (this._state.finalizing || this._state.finalized || this._state.aborted) { + fullCallback(); + return; + } + + this._task = task; + this._moduleAppend(task.source, task.data, fullCallback); +}; + +/** + * Performs a file stat and reinjects the task back into the queue. + * + * @private + * @param {Object} task + * @param {Function} callback + * @return void + */ +Archiver.prototype._onStatQueueTask = function(task, callback) { + if (this._state.finalizing || this._state.finalized || this._state.aborted) { + callback(); + return; + } + + fs.lstat(task.filepath, function(err, stats) { + if (this._state.aborted) { + setImmediate(callback); + return; + } + + if (err) { + this._entriesCount--; + + /** + * @event Archiver#warning + * @type {ErrorData} + */ + this.emit('warning', err); + setImmediate(callback); + return; + } + + task = this._updateQueueTaskWithStats(task, stats); + + if (task) { + if (stats.size) { + this._fsEntriesTotalBytes += stats.size; + } + + this._queue.push(task); + } + + setImmediate(callback); + }.bind(this)); +}; + +/** + * Unpipes the module and ends our internal stream. + * + * @private + * @return void + */ +Archiver.prototype._shutdown = function() { + this._moduleUnpipe(); + this.end(); +}; + +/** + * Tracks the bytes emitted by our internal stream. + * + * @private + * @param {Buffer} chunk + * @param {String} encoding + * @param {Function} callback + * @return void + */ +Archiver.prototype._transform = function(chunk, encoding, callback) { + if (chunk) { + this._pointer += chunk.length; + } + + callback(null, chunk); +}; + +/** + * Updates and normalizes a queue task using stats data. + * + * @private + * @param {Object} task + * @param {fs.Stats} stats + * @return {Object} + */ +Archiver.prototype._updateQueueTaskWithStats = function(task, stats) { + if (stats.isFile()) { + task.data.type = 'file'; + task.data.sourceType = 'stream'; + task.source = util.lazyReadStream(task.filepath); + } else if (stats.isDirectory() && this._moduleSupports('directory')) { + task.data.name = util.trailingSlashIt(task.data.name); + task.data.type = 'directory'; + task.data.sourcePath = util.trailingSlashIt(task.filepath); + task.data.sourceType = 'buffer'; + task.source = Buffer.concat([]); + } else if (stats.isSymbolicLink() && this._moduleSupports('symlink')) { + var linkPath = fs.readlinkSync(task.filepath); + var dirName = path.dirname(task.filepath); + task.data.type = 'symlink'; + task.data.linkname = path.relative(dirName, path.resolve(dirName, linkPath)); + task.data.sourceType = 'buffer'; + task.source = Buffer.concat([]); + } else { + if (stats.isDirectory()) { + this.emit('warning', new ArchiverError('DIRECTORYNOTSUPPORTED', task.data)); + } else if (stats.isSymbolicLink()) { + this.emit('warning', new ArchiverError('SYMLINKNOTSUPPORTED', task.data)); + } else { + this.emit('warning', new ArchiverError('ENTRYNOTSUPPORTED', task.data)); + } + + return null; + } + + task.data = this._normalizeEntryData(task.data, stats); + + return task; +}; + +/** + * Aborts the archiving process, taking a best-effort approach, by: + * + * - removing any pending queue tasks + * - allowing any active queue workers to finish + * - detaching internal module pipes + * - ending both sides of the Transform stream + * + * It will NOT drain any remaining sources. + * + * @return {this} + */ +Archiver.prototype.abort = function() { + if (this._state.aborted || this._state.finalized) { + return this; + } + + this._abort(); + + return this; +}; + +/** + * Appends an input source (text string, buffer, or stream) to the instance. + * + * When the instance has received, processed, and emitted the input, the `entry` + * event is fired. + * + * @fires Archiver#entry + * @param {(Buffer|Stream|String)} source The input source. + * @param {EntryData} data See also {@link ZipEntryData} and {@link TarEntryData}. + * @return {this} + */ +Archiver.prototype.append = function(source, data) { + if (this._state.finalize || this._state.aborted) { + this.emit('error', new ArchiverError('QUEUECLOSED')); + return this; + } + + data = this._normalizeEntryData(data); + + if (typeof data.name !== 'string' || data.name.length === 0) { + this.emit('error', new ArchiverError('ENTRYNAMEREQUIRED')); + return this; + } + + if (data.type === 'directory' && !this._moduleSupports('directory')) { + this.emit('error', new ArchiverError('DIRECTORYNOTSUPPORTED', { name: data.name })); + return this; + } + + source = util.normalizeInputSource(source); + + if (Buffer.isBuffer(source)) { + data.sourceType = 'buffer'; + } else if (util.isStream(source)) { + data.sourceType = 'stream'; + } else { + this.emit('error', new ArchiverError('INPUTSTEAMBUFFERREQUIRED', { name: data.name })); + return this; + } + + this._entriesCount++; + this._queue.push({ + data: data, + source: source + }); + + return this; +}; + +/** + * Appends a directory and its files, recursively, given its dirpath. + * + * @param {String} dirpath The source directory path. + * @param {String} destpath The destination path within the archive. + * @param {(EntryData|Function)} data See also [ZipEntryData]{@link ZipEntryData} and + * [TarEntryData]{@link TarEntryData}. + * @return {this} + */ +Archiver.prototype.directory = function(dirpath, destpath, data) { + if (this._state.finalize || this._state.aborted) { + this.emit('error', new ArchiverError('QUEUECLOSED')); + return this; + } + + if (typeof dirpath !== 'string' || dirpath.length === 0) { + this.emit('error', new ArchiverError('DIRECTORYDIRPATHREQUIRED')); + return this; + } + + this._pending++; + + if (destpath === false) { + destpath = ''; + } else if (typeof destpath !== 'string'){ + destpath = dirpath; + } + + var dataFunction = false; + if (typeof data === 'function') { + dataFunction = data; + data = {}; + } else if (typeof data !== 'object') { + data = {}; + } + + var globOptions = { + stat: true, + dot: true + }; + + function onGlobEnd() { + this._pending--; + this._maybeFinalize(); + } + + function onGlobError(err) { + this.emit('error', err); + } + + function onGlobMatch(match){ + globber.pause(); + + var ignoreMatch = false; + var entryData = Object.assign({}, data); + entryData.name = match.relative; + entryData.prefix = destpath; + entryData.stats = match.stat; + entryData.callback = globber.resume.bind(globber); + + try { + if (dataFunction) { + entryData = dataFunction(entryData); + + if (entryData === false) { + ignoreMatch = true; + } else if (typeof entryData !== 'object') { + throw new ArchiverError('DIRECTORYFUNCTIONINVALIDDATA', { dirpath: dirpath }); + } + } + } catch(e) { + this.emit('error', e); + return; + } + + if (ignoreMatch) { + globber.resume(); + return; + } + + this._append(match.absolute, entryData); + } + + var globber = glob(dirpath, globOptions); + globber.on('error', onGlobError.bind(this)); + globber.on('match', onGlobMatch.bind(this)); + globber.on('end', onGlobEnd.bind(this)); + + return this; +}; + +/** + * Appends a file given its filepath using a + * [lazystream]{@link https://github.com/jpommerening/node-lazystream} wrapper to + * prevent issues with open file limits. + * + * When the instance has received, processed, and emitted the file, the `entry` + * event is fired. + * + * @param {String} filepath The source filepath. + * @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and + * [TarEntryData]{@link TarEntryData}. + * @return {this} + */ +Archiver.prototype.file = function(filepath, data) { + if (this._state.finalize || this._state.aborted) { + this.emit('error', new ArchiverError('QUEUECLOSED')); + return this; + } + + if (typeof filepath !== 'string' || filepath.length === 0) { + this.emit('error', new ArchiverError('FILEFILEPATHREQUIRED')); + return this; + } + + this._append(filepath, data); + + return this; +}; + +/** + * Appends multiple files that match a glob pattern. + * + * @param {String} pattern The [glob pattern]{@link https://github.com/isaacs/minimatch} to match. + * @param {Object} options See [node-readdir-glob]{@link https://github.com/yqnn/node-readdir-glob#options}. + * @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and + * [TarEntryData]{@link TarEntryData}. + * @return {this} + */ +Archiver.prototype.glob = function(pattern, options, data) { + this._pending++; + + options = util.defaults(options, { + stat: true, + pattern: pattern + }); + + function onGlobEnd() { + this._pending--; + this._maybeFinalize(); + } + + function onGlobError(err) { + this.emit('error', err); + } + + function onGlobMatch(match){ + globber.pause(); + var entryData = Object.assign({}, data); + entryData.callback = globber.resume.bind(globber); + entryData.stats = match.stat; + entryData.name = match.relative; + + this._append(match.absolute, entryData); + } + + var globber = glob(options.cwd || '.', options); + globber.on('error', onGlobError.bind(this)); + globber.on('match', onGlobMatch.bind(this)); + globber.on('end', onGlobEnd.bind(this)); + + return this; +}; + +/** + * Finalizes the instance and prevents further appending to the archive + * structure (queue will continue til drained). + * + * The `end`, `close` or `finish` events on the destination stream may fire + * right after calling this method so you should set listeners beforehand to + * properly detect stream completion. + * + * @return {Promise} + */ +Archiver.prototype.finalize = function() { + if (this._state.aborted) { + var abortedError = new ArchiverError('ABORTED'); + this.emit('error', abortedError); + return Promise.reject(abortedError); + } + + if (this._state.finalize) { + var finalizingError = new ArchiverError('FINALIZING'); + this.emit('error', finalizingError); + return Promise.reject(finalizingError); + } + + this._state.finalize = true; + + if (this._pending === 0 && this._queue.idle() && this._statQueue.idle()) { + this._finalize(); + } + + var self = this; + + return new Promise(function(resolve, reject) { + var errored; + + self._module.on('end', function() { + if (!errored) { + resolve(); + } + }) + + self._module.on('error', function(err) { + errored = true; + reject(err); + }) + }) +}; + +/** + * Sets the module format name used for archiving. + * + * @param {String} format The name of the format. + * @return {this} + */ +Archiver.prototype.setFormat = function(format) { + if (this._format) { + this.emit('error', new ArchiverError('FORMATSET')); + return this; + } + + this._format = format; + + return this; +}; + +/** + * Sets the module used for archiving. + * + * @param {Function} module The function for archiver to interact with. + * @return {this} + */ +Archiver.prototype.setModule = function(module) { + if (this._state.aborted) { + this.emit('error', new ArchiverError('ABORTED')); + return this; + } + + if (this._state.module) { + this.emit('error', new ArchiverError('MODULESET')); + return this; + } + + this._module = module; + this._modulePipe(); + + return this; +}; + +/** + * Appends a symlink to the instance. + * + * This does NOT interact with filesystem and is used for programmatically creating symlinks. + * + * @param {String} filepath The symlink path (within archive). + * @param {String} target The target path (within archive). + * @param {Number} mode Sets the entry permissions. + * @return {this} + */ +Archiver.prototype.symlink = function(filepath, target, mode) { + if (this._state.finalize || this._state.aborted) { + this.emit('error', new ArchiverError('QUEUECLOSED')); + return this; + } + + if (typeof filepath !== 'string' || filepath.length === 0) { + this.emit('error', new ArchiverError('SYMLINKFILEPATHREQUIRED')); + return this; + } + + if (typeof target !== 'string' || target.length === 0) { + this.emit('error', new ArchiverError('SYMLINKTARGETREQUIRED', { filepath: filepath })); + return this; + } + + if (!this._moduleSupports('symlink')) { + this.emit('error', new ArchiverError('SYMLINKNOTSUPPORTED', { filepath: filepath })); + return this; + } + + var data = {}; + data.type = 'symlink'; + data.name = filepath.replace(/\\/g, '/'); + data.linkname = target.replace(/\\/g, '/'); + data.sourceType = 'buffer'; + + if (typeof mode === "number") { + data.mode = mode; + } + + this._entriesCount++; + this._queue.push({ + data: data, + source: Buffer.concat([]) + }); + + return this; +}; + +/** + * Returns the current length (in bytes) that has been emitted. + * + * @return {Number} + */ +Archiver.prototype.pointer = function() { + return this._pointer; +}; + +/** + * Middleware-like helper that has yet to be fully implemented. + * + * @private + * @param {Function} plugin + * @return {this} + */ +Archiver.prototype.use = function(plugin) { + this._streams.push(plugin); + return this; +}; + +module.exports = Archiver; + +/** + * @typedef {Object} CoreOptions + * @global + * @property {Number} [statConcurrency=4] Sets the number of workers used to + * process the internal fs stat queue. + */ + +/** + * @typedef {Object} TransformOptions + * @property {Boolean} [allowHalfOpen=true] If set to false, then the stream + * will automatically end the readable side when the writable side ends and vice + * versa. + * @property {Boolean} [readableObjectMode=false] Sets objectMode for readable + * side of the stream. Has no effect if objectMode is true. + * @property {Boolean} [writableObjectMode=false] Sets objectMode for writable + * side of the stream. Has no effect if objectMode is true. + * @property {Boolean} [decodeStrings=true] Whether or not to decode strings + * into Buffers before passing them to _write(). `Writable` + * @property {String} [encoding=NULL] If specified, then buffers will be decoded + * to strings using the specified encoding. `Readable` + * @property {Number} [highWaterMark=16kb] The maximum number of bytes to store + * in the internal buffer before ceasing to read from the underlying resource. + * `Readable` `Writable` + * @property {Boolean} [objectMode=false] Whether this stream should behave as a + * stream of objects. Meaning that stream.read(n) returns a single value instead + * of a Buffer of size n. `Readable` `Writable` + */ + +/** + * @typedef {Object} EntryData + * @property {String} name Sets the entry name including internal path. + * @property {(String|Date)} [date=NOW()] Sets the entry date. + * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions. + * @property {String} [prefix] Sets a path prefix for the entry name. Useful + * when working with methods like `directory` or `glob`. + * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing + * for reduction of fs stat calls when stat data is already known. + */ + +/** + * @typedef {Object} ErrorData + * @property {String} message The message of the error. + * @property {String} code The error code assigned to this error. + * @property {String} data Additional data provided for reporting or debugging (where available). + */ + +/** + * @typedef {Object} ProgressData + * @property {Object} entries + * @property {Number} entries.total Number of entries that have been appended. + * @property {Number} entries.processed Number of entries that have been processed. + * @property {Object} fs + * @property {Number} fs.totalBytes Number of bytes that have been appended. Calculated asynchronously and might not be accurate: it growth while entries are added. (based on fs.Stats) + * @property {Number} fs.processedBytes Number of bytes that have been processed. (based on fs.Stats) + */ + + +/***/ }), + +/***/ "./node_modules/archiver/lib/error.js": +/*!********************************************!*\ + !*** ./node_modules/archiver/lib/error.js ***! + \********************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/** + * Archiver Core + * + * @ignore + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ + +var util = __webpack_require__(/*! util */ "util"); + +const ERROR_CODES = { + 'ABORTED': 'archive was aborted', + 'DIRECTORYDIRPATHREQUIRED': 'diretory dirpath argument must be a non-empty string value', + 'DIRECTORYFUNCTIONINVALIDDATA': 'invalid data returned by directory custom data function', + 'ENTRYNAMEREQUIRED': 'entry name must be a non-empty string value', + 'FILEFILEPATHREQUIRED': 'file filepath argument must be a non-empty string value', + 'FINALIZING': 'archive already finalizing', + 'QUEUECLOSED': 'queue closed', + 'NOENDMETHOD': 'no suitable finalize/end method defined by module', + 'DIRECTORYNOTSUPPORTED': 'support for directory entries not defined by module', + 'FORMATSET': 'archive format already set', + 'INPUTSTEAMBUFFERREQUIRED': 'input source must be valid Stream or Buffer instance', + 'MODULESET': 'module already set', + 'SYMLINKNOTSUPPORTED': 'support for symlink entries not defined by module', + 'SYMLINKFILEPATHREQUIRED': 'symlink filepath argument must be a non-empty string value', + 'SYMLINKTARGETREQUIRED': 'symlink target argument must be a non-empty string value', + 'ENTRYNOTSUPPORTED': 'entry not supported' +}; + +function ArchiverError(code, data) { + Error.captureStackTrace(this, this.constructor); + //this.name = this.constructor.name; + this.message = ERROR_CODES[code] || code; + this.code = code; + this.data = data; +} + +util.inherits(ArchiverError, Error); + +exports = module.exports = ArchiverError; + +/***/ }), + +/***/ "./node_modules/archiver/lib/plugins/json.js": +/*!***************************************************!*\ + !*** ./node_modules/archiver/lib/plugins/json.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * JSON Format Plugin + * + * @module plugins/json + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ +var inherits = (__webpack_require__(/*! util */ "util").inherits); +var Transform = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Transform); + +var crc32 = __webpack_require__(/*! buffer-crc32 */ "./node_modules/buffer-crc32/index.js"); +var util = __webpack_require__(/*! archiver-utils */ "./node_modules/archiver-utils/index.js"); + +/** + * @constructor + * @param {(JsonOptions|TransformOptions)} options + */ +var Json = function(options) { + if (!(this instanceof Json)) { + return new Json(options); + } + + options = this.options = util.defaults(options, {}); + + Transform.call(this, options); + + this.supports = { + directory: true, + symlink: true + }; + + this.files = []; +}; + +inherits(Json, Transform); + +/** + * [_transform description] + * + * @private + * @param {Buffer} chunk + * @param {String} encoding + * @param {Function} callback + * @return void + */ +Json.prototype._transform = function(chunk, encoding, callback) { + callback(null, chunk); +}; + +/** + * [_writeStringified description] + * + * @private + * @return void + */ +Json.prototype._writeStringified = function() { + var fileString = JSON.stringify(this.files); + this.write(fileString); +}; + +/** + * [append description] + * + * @param {(Buffer|Stream)} source + * @param {EntryData} data + * @param {Function} callback + * @return void + */ +Json.prototype.append = function(source, data, callback) { + var self = this; + + data.crc32 = 0; + + function onend(err, sourceBuffer) { + if (err) { + callback(err); + return; + } + + data.size = sourceBuffer.length || 0; + data.crc32 = crc32.unsigned(sourceBuffer); + + self.files.push(data); + + callback(null, data); + } + + if (data.sourceType === 'buffer') { + onend(null, source); + } else if (data.sourceType === 'stream') { + util.collectStream(source, onend); + } +}; + +/** + * [finalize description] + * + * @return void + */ +Json.prototype.finalize = function() { + this._writeStringified(); + this.end(); +}; + +module.exports = Json; + +/** + * @typedef {Object} JsonOptions + * @global + */ + + +/***/ }), + +/***/ "./node_modules/archiver/lib/plugins/tar.js": +/*!**************************************************!*\ + !*** ./node_modules/archiver/lib/plugins/tar.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * TAR Format Plugin + * + * @module plugins/tar + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ +var zlib = __webpack_require__(/*! zlib */ "zlib"); + +var engine = __webpack_require__(/*! tar-stream */ "./node_modules/tar-stream/index.js"); +var util = __webpack_require__(/*! archiver-utils */ "./node_modules/archiver-utils/index.js"); + +/** + * @constructor + * @param {TarOptions} options + */ +var Tar = function(options) { + if (!(this instanceof Tar)) { + return new Tar(options); + } + + options = this.options = util.defaults(options, { + gzip: false + }); + + if (typeof options.gzipOptions !== 'object') { + options.gzipOptions = {}; + } + + this.supports = { + directory: true, + symlink: true + }; + + this.engine = engine.pack(options); + this.compressor = false; + + if (options.gzip) { + this.compressor = zlib.createGzip(options.gzipOptions); + this.compressor.on('error', this._onCompressorError.bind(this)); + } +}; + +/** + * [_onCompressorError description] + * + * @private + * @param {Error} err + * @return void + */ +Tar.prototype._onCompressorError = function(err) { + this.engine.emit('error', err); +}; + +/** + * [append description] + * + * @param {(Buffer|Stream)} source + * @param {TarEntryData} data + * @param {Function} callback + * @return void + */ +Tar.prototype.append = function(source, data, callback) { + var self = this; + + data.mtime = data.date; + + function append(err, sourceBuffer) { + if (err) { + callback(err); + return; + } + + self.engine.entry(data, sourceBuffer, function(err) { + callback(err, data); + }); + } + + if (data.sourceType === 'buffer') { + append(null, source); + } else if (data.sourceType === 'stream' && data.stats) { + data.size = data.stats.size; + + var entry = self.engine.entry(data, function(err) { + callback(err, data); + }); + + source.pipe(entry); + } else if (data.sourceType === 'stream') { + util.collectStream(source, append); + } +}; + +/** + * [finalize description] + * + * @return void + */ +Tar.prototype.finalize = function() { + this.engine.finalize(); +}; + +/** + * [on description] + * + * @return this.engine + */ +Tar.prototype.on = function() { + return this.engine.on.apply(this.engine, arguments); +}; + +/** + * [pipe description] + * + * @param {String} destination + * @param {Object} options + * @return this.engine + */ +Tar.prototype.pipe = function(destination, options) { + if (this.compressor) { + return this.engine.pipe.apply(this.engine, [this.compressor]).pipe(destination, options); + } else { + return this.engine.pipe.apply(this.engine, arguments); + } +}; + +/** + * [unpipe description] + * + * @return this.engine + */ +Tar.prototype.unpipe = function() { + if (this.compressor) { + return this.compressor.unpipe.apply(this.compressor, arguments); + } else { + return this.engine.unpipe.apply(this.engine, arguments); + } +}; + +module.exports = Tar; + +/** + * @typedef {Object} TarOptions + * @global + * @property {Boolean} [gzip=false] Compress the tar archive using gzip. + * @property {Object} [gzipOptions] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options} + * to control compression. + * @property {*} [*] See [tar-stream]{@link https://github.com/mafintosh/tar-stream} documentation for additional properties. + */ + +/** + * @typedef {Object} TarEntryData + * @global + * @property {String} name Sets the entry name including internal path. + * @property {(String|Date)} [date=NOW()] Sets the entry date. + * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions. + * @property {String} [prefix] Sets a path prefix for the entry name. Useful + * when working with methods like `directory` or `glob`. + * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing + * for reduction of fs stat calls when stat data is already known. + */ + +/** + * TarStream Module + * @external TarStream + * @see {@link https://github.com/mafintosh/tar-stream} + */ + + +/***/ }), + +/***/ "./node_modules/archiver/lib/plugins/zip.js": +/*!**************************************************!*\ + !*** ./node_modules/archiver/lib/plugins/zip.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * ZIP Format Plugin + * + * @module plugins/zip + * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} + * @copyright (c) 2012-2014 Chris Talkington, contributors. + */ +var engine = __webpack_require__(/*! zip-stream */ "./node_modules/zip-stream/index.js"); +var util = __webpack_require__(/*! archiver-utils */ "./node_modules/archiver-utils/index.js"); + +/** + * @constructor + * @param {ZipOptions} [options] + * @param {String} [options.comment] Sets the zip archive comment. + * @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC. + * @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers. + * @param {Boolean} [options.namePrependSlash=false] Prepends a forward slash to archive file paths. + * @param {Boolean} [options.store=false] Sets the compression method to STORE. + * @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options} + */ +var Zip = function(options) { + if (!(this instanceof Zip)) { + return new Zip(options); + } + + options = this.options = util.defaults(options, { + comment: '', + forceUTC: false, + namePrependSlash: false, + store: false + }); + + this.supports = { + directory: true, + symlink: true + }; + + this.engine = new engine(options); +}; + +/** + * @param {(Buffer|Stream)} source + * @param {ZipEntryData} data + * @param {String} data.name Sets the entry name including internal path. + * @param {(String|Date)} [data.date=NOW()] Sets the entry date. + * @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions. + * @param {String} [data.prefix] Sets a path prefix for the entry name. Useful + * when working with methods like `directory` or `glob`. + * @param {fs.Stats} [data.stats] Sets the fs stat data for this entry allowing + * for reduction of fs stat calls when stat data is already known. + * @param {Boolean} [data.store=ZipOptions.store] Sets the compression method to STORE. + * @param {Function} callback + * @return void + */ +Zip.prototype.append = function(source, data, callback) { + this.engine.entry(source, data, callback); +}; + +/** + * @return void + */ +Zip.prototype.finalize = function() { + this.engine.finalize(); +}; + +/** + * @return this.engine + */ +Zip.prototype.on = function() { + return this.engine.on.apply(this.engine, arguments); +}; + +/** + * @return this.engine + */ +Zip.prototype.pipe = function() { + return this.engine.pipe.apply(this.engine, arguments); +}; + +/** + * @return this.engine + */ +Zip.prototype.unpipe = function() { + return this.engine.unpipe.apply(this.engine, arguments); +}; + +module.exports = Zip; + +/** + * @typedef {Object} ZipOptions + * @global + * @property {String} [comment] Sets the zip archive comment. + * @property {Boolean} [forceLocalTime=false] Forces the archive to contain local file times instead of UTC. + * @property {Boolean} [forceZip64=false] Forces the archive to contain ZIP64 headers. + * @prpperty {Boolean} [namePrependSlash=false] Prepends a forward slash to archive file paths. + * @property {Boolean} [store=false] Sets the compression method to STORE. + * @property {Object} [zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options} + * to control compression. + * @property {*} [*] See [zip-stream]{@link https://archiverjs.com/zip-stream/ZipStream.html} documentation for current list of properties. + */ + +/** + * @typedef {Object} ZipEntryData + * @global + * @property {String} name Sets the entry name including internal path. + * @property {(String|Date)} [date=NOW()] Sets the entry date. + * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions. + * @property {Boolean} [namePrependSlash=ZipOptions.namePrependSlash] Prepends a forward slash to archive file paths. + * @property {String} [prefix] Sets a path prefix for the entry name. Useful + * when working with methods like `directory` or `glob`. + * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing + * for reduction of fs stat calls when stat data is already known. + * @property {Boolean} [store=ZipOptions.store] Sets the compression method to STORE. + */ + +/** + * ZipStream Module + * @external ZipStream + * @see {@link https://www.archiverjs.com/zip-stream/ZipStream.html} + */ + + +/***/ }), + +/***/ "./main/helpers/create-window.ts": +/*!***************************************!*\ + !*** ./main/helpers/create-window.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createWindow: () => (/* binding */ createWindow) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ "./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js"); +/* harmony import */ var _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_assign__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/assign */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_assign__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_assign__WEBPACK_IMPORTED_MODULE_9__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_some__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/some */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_some__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_some__WEBPACK_IMPORTED_MODULE_10__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_symbols__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_symbols__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_symbols__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_define_properties__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_define_properties__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_define_properties__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_define_property__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_define_property__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_define_property__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_11__); +/* harmony import */ var electron_store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! electron-store */ "electron-store"); +/* harmony import */ var electron_store__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(electron_store__WEBPACK_IMPORTED_MODULE_12__); + +function ownKeys(e, r) { var t = _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_1___default()(e); if ((_babel_runtime_corejs3_core_js_stable_object_get_own_property_symbols__WEBPACK_IMPORTED_MODULE_2___default())) { var o = _babel_runtime_corejs3_core_js_stable_object_get_own_property_symbols__WEBPACK_IMPORTED_MODULE_2___default()(e); r && (o = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(o).call(o, function (r) { return _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4___default()(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_5___default()(_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _babel_runtime_corejs3_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : (_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_6___default()) ? _babel_runtime_corejs3_core_js_stable_object_define_properties__WEBPACK_IMPORTED_MODULE_7___default()(e, _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_6___default()(t)) : _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_5___default()(_context3 = ownKeys(Object(t))).call(_context3, function (r) { _babel_runtime_corejs3_core_js_stable_object_define_property__WEBPACK_IMPORTED_MODULE_8___default()(e, r, _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4___default()(t, r)); }); } return e; } + + + + + + + + + + + + +const createWindow = (windowName, options) => { + const key = "window-state"; + const name = `window-state-${windowName}`; + const store = new (electron_store__WEBPACK_IMPORTED_MODULE_12___default())({ + name + }); + const defaultSize = { + width: options.width, + height: options.height + }; + let state = {}; + const restore = () => store.get(key, defaultSize); + const getCurrentPosition = () => { + const position = win.getPosition(); + const size = win.getSize(); + return { + x: position[0], + y: position[1], + width: size[0], + height: size[1] + }; + }; + const windowWithinBounds = (windowState, bounds) => { + return windowState.x >= bounds.x && windowState.y >= bounds.y && windowState.x + windowState.width <= bounds.x + bounds.width && windowState.y + windowState.height <= bounds.y + bounds.height; + }; + const resetToDefaults = () => { + const bounds = electron__WEBPACK_IMPORTED_MODULE_11__.screen.getPrimaryDisplay().bounds; + return _babel_runtime_corejs3_core_js_stable_object_assign__WEBPACK_IMPORTED_MODULE_9___default()({}, defaultSize, { + x: (bounds.width - defaultSize.width) / 2, + y: (bounds.height - defaultSize.height) / 2 + }); + }; + const ensureVisibleOnSomeDisplay = windowState => { + var _context; + const visible = _babel_runtime_corejs3_core_js_stable_instance_some__WEBPACK_IMPORTED_MODULE_10___default()(_context = electron__WEBPACK_IMPORTED_MODULE_11__.screen.getAllDisplays()).call(_context, display => { + return windowWithinBounds(windowState, display.bounds); + }); + if (!visible) { + // Window is partially or fully not visible now. + // Reset it to safe defaults. + return resetToDefaults(); + } + return windowState; + }; + const saveState = () => { + if (!win.isMinimized() && !win.isMaximized()) { + _babel_runtime_corejs3_core_js_stable_object_assign__WEBPACK_IMPORTED_MODULE_9___default()(state, getCurrentPosition()); + } + store.set(key, state); + }; + state = ensureVisibleOnSomeDisplay(restore()); + const win = new electron__WEBPACK_IMPORTED_MODULE_11__.BrowserWindow(_objectSpread(_objectSpread(_objectSpread({}, state), options), {}, { + webPreferences: _objectSpread({ + nodeIntegration: false, + contextIsolation: true + }, options.webPreferences) + })); + win.on("close", saveState); + return win; +}; + +/***/ }), + +/***/ "./main/helpers/handlers.ts": +/*!**********************************!*\ + !*** ./main/helpers/handlers.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ setupHandlers: () => (/* binding */ setupHandlers) +/* harmony export */ }); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _projects_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./projects-tools */ "./main/helpers/projects-tools.ts"); +/* harmony import */ var python_shell__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! python-shell */ "python-shell"); +/* harmony import */ var python_shell__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(python_shell__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! os */ "os"); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_4__); +// handlers.ts + + + + + +function runPythonScript(event, options, pyScriptsPath) { + const { + scriptName, + args, + resultEvent, + killEvent + } = options; + const envPythonPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(os__WEBPACK_IMPORTED_MODULE_4___default().homedir(), ".belljar", "benv"); + const platform = os__WEBPACK_IMPORTED_MODULE_4___default().platform(); + const pyCommand = platform === "win32" ? `${envPythonPath}/Scripts/python` : `${envPythonPath}/bin/python`; + const scriptOptions = { + mode: "text", + pythonPath: pyCommand, + scriptPath: pyScriptsPath, + args + }; + const pyshell = new python_shell__WEBPACK_IMPORTED_MODULE_2__.PythonShell(scriptName, scriptOptions); + let total = 0; + let current = 0; + pyshell.on("stderr", stderr => { + console.error(stderr); + }); + pyshell.on("message", message => { + if (total === 0) { + total = Number(message); + } else if (message === "Done!") { + pyshell.end((err, code, signal) => { + if (err) throw err; + event.sender.send(resultEvent); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.removeAllListeners(killEvent); + }); + } else { + current++; + event.sender.send("updateLoad", [Math.round(current / total * 100), message]); + } + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.once(killEvent, () => { + pyshell.kill(); + }); +} + +/** + * Sets up event handlers for various IPC events. + * + * @param {string} pyScriptsPath - The path to the Python scripts. + * @return {void} + */ +function setupHandlers(pyScriptsPath) { + const homeDir = os__WEBPACK_IMPORTED_MODULE_4___default().homedir(); + const isProd = "development" === "production"; + const resourceDir = isProd ? path__WEBPACK_IMPORTED_MODULE_3___default().join(process.resourcesPath, "py") : path__WEBPACK_IMPORTED_MODULE_3___default().join(__dirname, "../py"); + + /** + * Handler for the "create-project" event. + * Creates a new Bell jar project. + * @param {Electron.IpcMainInvokeEvent} _event - The event object. + * @param {string} name - The name of the new project. + * @param {string} description - The description of the new project. + * @return {Promise<{ success: boolean; error?: string; }>} - A promise that resolves to an object indicating success or failure. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("create-project", async (_event, name, description) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.createProject)(name, description); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for the "import-project" event. + * Imports a Bell jar project. + * @param {Electron.IpcMainInvokeEvent} _event - The event object. + * + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("import-project", async _event => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.importProject)(); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for the "export-project" event. + * Exports a project by name. + * @param {Electron.IpcMainInvokeEvent} _event - The event object. + * @param {string} name - The name of the project to export. + * @return {Promise<{ success: boolean; error?: string; }>} - A promise that resolves to an object indicating success or failure. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("export-project", async (_event, name) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.exportProject)(name).then(() => { + return { + success: true + }; + }); + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for the "load-project" event. + * Loads a project by name. + * + * @param {Electron.IpcMainInvokeEvent} _event - The event object. + * @param {string} name - The name of the project to load. + * @return {Promise<{ success: boolean; error?: string; project?: ProjectMetadata; }>} - A promise that resolves to an object indicating success or failure, along with an optional project object. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("load-project", async (_event, name) => { + try { + const project = (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.loadProject)(name); + return { + success: true, + project + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for the "delete-project" event. + * Deletes a project by name. + * + * @param {Electron.IpcMainInvokeEvent} _event - The event object. + * @param {string} name - The name of the project to delete. + * @return {Promise<{ success: boolean; error?: string; }>} - A promise that resolves to an object indicating success or failure, along with an optional error message. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("delete-project", async (_event, name) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.deleteProject)(name); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for uploading files to a project. + * + * @param {IpcMainEvent} _event - The IPC event. + * @param {string} projectName - The name of the project. + * @param {string} animalName - The name of the animal. + * @param {string} dataType - The type of data. + * @param {string[]} filePaths - The paths of the files to upload. + * @returns {Promise<{ success: boolean, error?: string }>} - A promise that resolves to an object indicating success or failure. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("upload-files", async (_event, projectName, animalName, dataType, filePaths) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.uploadFile)(projectName, animalName, dataType, filePaths); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for getting animal data. + * + * @param {IpcMainEvent} _event - The IPC event. + * @param {string} projectName - The name of the project. + * @param {string} animalName - The name of the animal. + * @returns {Promise<{ success: boolean, data?: AnimalData, error?: string }>} - A promise that resolves to an object indicating success or failure, along with an optional animal data object. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("get-animal-data", async (_event, projectName, animalName) => { + try { + const animalData = (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.getAnimalData)(projectName, animalName); + return { + success: true, + data: animalData + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for deleting an animal. + * + * @param {IpcMainEvent} _event - The IPC event. + * @param {string} projectName - The name of the project. + * @param {string} animalName - The name of the animal. + * @returns {Promise<{ success: boolean, error?: string }>} - A promise that resolves to an object indicating success or failure. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("delete-animal", async (_event, projectName, animalName) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.deleteAnimal)(projectName, animalName); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for deleting a file. + * @param {IpcMainEvent} _event - The IPC event. + * @param {string} projectName - The name of the project. + * @param {string} animalName - The name of the animal. + * @param {string} dataType - The type of data. + * @param {string} filePath - The path of the file to delete. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("delete-file", async (_event, projectName, animalName, dataType, fileName) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.deleteFile)(projectName, animalName, dataType, fileName); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for adding an animal. + * @param {IpcMainEvent} _event - The IPC event. + * @param {string} projectName - The name of the project. + * @param {string} animalName - The name of the animal. + * @param {AnimalMetadata} animalData - The metadata of the animal. + * @returns {Promise<{ success: boolean, error?: string }>} - A promise that resolves to an object indicating success or failure. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("add-animal", async (_event, projectName, animalName, animalData) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.addAnimal)(projectName, animalName, animalData); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + + /** + * Handler for getting project data. + * @param {IpcMainEvent} _event - The IPC event. + * @returns {Promise<{ success: boolean, projects?: ProjectData, error?: string }>} - A promise that resolves to an object indicating success or failure, along with an optional project data object. + */ + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("get-projects", async () => { + try { + const projects = (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.getProjects)(); + return { + success: true, + projects: projects + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("get-animal-data-directory", async (_event, projectName, animalName, dataType) => { + try { + // Gets a symlinked temp dir to the animal background data + const tempDir = await (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.getAnimalDataDirectory)(projectName, animalName, dataType); + return { + success: true, + directory: tempDir + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("delete-animal-data-directory", async (event, projectName, animalName, directory) => { + try { + (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.deleteAnimalDataDirectory)(projectName, animalName, directory); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("get-directory", async () => { + const selectedDirectory = (0,_projects_tools__WEBPACK_IMPORTED_MODULE_1__.selectDirectory)(); + if (!selectedDirectory) { + return { + success: false, + error: "No directory selected" + }; + } + return { + success: true, + directory: selectedDirectory + }; + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runMax", (event, data) => { + const args = [`-o ${data[1]}`, `-i ${data[0]}`, `-d ${data[2]}`, `-t ${data[3]}`, "-g False"]; + runPythonScript(event, { + scriptName: "max.py", + args, + resultEvent: "maxResult", + killEvent: "killMax" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runAdjust", (event, data) => { + const structPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(resourceDir, "csv/structure_map.pkl"); + const args = [`-i ${data[0]}`, `-s ${structPath}`, `-a ${data[1]}`]; + runPythonScript(event, { + scriptName: "adjust.py", + args, + resultEvent: "adjustResult", + killEvent: "killAdjust" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.handle("runAlign", (event, data) => { + const modelPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(homeDir, ".belljar", "models/predictor.pt"); + const nrrdPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(homeDir, ".belljar", "nrrd"); + const mapPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(resourceDir, "csv/structure_map.pkl"); + const args = [`-o ${data[1]}`, `-i ${data[0]}`, `-w ${data[2]}`, `-a ${data[3]}`, `-m ${modelPath}`, `-n ${nrrdPath}`, `-c ${mapPath}`, `-l ${data[4]}`]; + runPythonScript(event, { + scriptName: "map.py", + args, + resultEvent: "alignResult", + killEvent: "killAlign" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runIntensity", (event, data) => { + const structPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(resourceDir, "csv/structure_map.pkl"); + const args = [`-i ${data[0]}`, `-o ${data[1]}`, `-a ${data[2]}`, `-w ${data[3]}`, `-m ${structPath}`]; + runPythonScript(event, { + scriptName: "region.py", + args, + resultEvent: "intensityResult", + killEvent: "killIntensity" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runCount", (event, data) => { + const structPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(resourceDir, "csv/structure_map.pkl"); + const customArgs = [`-p ${data[0]}`, `-a ${data[1]}`, `-o ${data[2]}`, `-m ${structPath}`]; + if (data[3]) { + customArgs.push(`--layers`); + } + runPythonScript(event, { + scriptName: "count.py", + args: customArgs, + resultEvent: "countResult", + killEvent: "killCount" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runCollate", (event, data) => { + const args = [`-o ${data[1]}`, `-i ${data[0]}`, `-r ${data[2]}`, `-s ${path__WEBPACK_IMPORTED_MODULE_3___default().join(resourceDir, "csv/structure_map.pkl")}`, "-g False"]; + runPythonScript(event, { + scriptName: "collate.py", + args, + resultEvent: "collateResult", + killEvent: "killCollate" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runSharpen", (event, data) => { + const customArgs = [`-o ${data[1]}`, `-i ${data[0]}`, `-r ${data[2]}`, `-a ${data[3]}`]; + if (data[4]) { + customArgs.push(`--equalize`); + } + runPythonScript(event, { + scriptName: "sharpen.py", + args: customArgs, + resultEvent: "sharpenResult", + killEvent: "killSharpen" + }, pyScriptsPath); + }); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.on("runDetection", (event, data) => { + const models = { + somata: "models/chaosdruid.pt", + nuclei: "models/ankou.pt" + }; + let modelPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(homeDir, models[data[6]]); + if (data[4].length > 0) { + modelPath = data[4]; + } + const customArgs = [`-i ${data[0]}`, `-o ${data[1]}`, `-c ${data[2]}`, `-t ${data[3]}`, `-a ${data[7]}`, `-m ${modelPath}`]; + if (data[5]) { + customArgs.push(`--multichannel`); + } + runPythonScript(event, { + scriptName: "find_neurons.py", + args: customArgs, + resultEvent: "detectResult", + killEvent: "killDetect" + }, pyScriptsPath); + }); +} + +/***/ }), + +/***/ "./main/helpers/index.ts": +/*!*******************************!*\ + !*** ./main/helpers/index.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createWindow: () => (/* reexport safe */ _create_window__WEBPACK_IMPORTED_MODULE_0__.createWindow), +/* harmony export */ performSetup: () => (/* reexport safe */ _perform_setup__WEBPACK_IMPORTED_MODULE_1__.performSetup) +/* harmony export */ }); +/* harmony import */ var _create_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create-window */ "./main/helpers/create-window.ts"); +/* harmony import */ var _perform_setup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./perform-setup */ "./main/helpers/perform-setup.ts"); + + + +/***/ }), + +/***/ "./main/helpers/perform-setup.ts": +/*!***************************************!*\ + !*** ./main/helpers/perform-setup.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ performSetup: () => (/* binding */ performSetup) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_parse_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/parse-int */ "./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_parse_int__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_parse_int__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ "./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ "./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! axios */ "axios"); +/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var tar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! tar */ "tar"); +/* harmony import */ var tar__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(tar__WEBPACK_IMPORTED_MODULE_9__); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! os */ "os"); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_10__); +/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! child_process */ "child_process"); +/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_11__); + + + + + + + + + + + + +// User folder +const homeFolder = os__WEBPACK_IMPORTED_MODULE_10___default().homedir(); +// Bell Jar folder +const belljarFolder = `${homeFolder}/.belljar`; +// Google Cloud Storage bucket +const bucket = "https://storage.googleapis.com/belljar_updates"; +// Helper function to generate object path +const objectPath = (item, version) => `${bucket}/${item}-${version}.tar.gz`; +// Manifest file + +async function downloadFile(url, path, filename) { + const response = await axios__WEBPACK_IMPORTED_MODULE_6___default()({ + url, + method: "GET", + responseType: "stream" + }); + const totalLength = _babel_runtime_corejs3_core_js_stable_parse_int__WEBPACK_IMPORTED_MODULE_0___default()(response.headers["content-length"], 10); + let downloadedLength = 0; + const writer = fs__WEBPACK_IMPORTED_MODULE_8___default().createWriteStream(`${path}/${filename}`); + response.data.on("data", chunk => { + downloadedLength += chunk.length; + const progress = downloadedLength / totalLength * 100; + electron__WEBPACK_IMPORTED_MODULE_7__.ipcMain.emit("download-progress", progress); + }); + response.data.pipe(writer); + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default())((resolve, reject) => { + writer.on("finish", resolve); + writer.on("error", reject); + }); +} +const MANIFEST = { + models: "v952", + nrrd: "v91" +}; +function checkManifest(directoryPath) { + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default())((resolve, reject) => { + const manifestPath = `${directoryPath}/manifest.json`; + + // check if manufest file exists + if (!fs__WEBPACK_IMPORTED_MODULE_8___default().existsSync(manifestPath)) { + // If not, all files are outdated, and create the manifest file + fs__WEBPACK_IMPORTED_MODULE_8___default().writeFile(manifestPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_2___default()(MANIFEST), error => { + if (error) { + console.error("Error writing manifest file:", error); + } + }); + resolve(_babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_3___default()(MANIFEST)); + } + fs__WEBPACK_IMPORTED_MODULE_8___default().readFile(manifestPath, "utf8", (error, data) => { + var _context; + if (error) { + // Handle error reading manifest file + console.error("Error reading manifest file:", error); + reject(error); + return; + } + const manifestData = JSON.parse(data); + const outdatedItems = []; + _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_4___default()(_context = _babel_runtime_corejs3_core_js_stable_object_keys__WEBPACK_IMPORTED_MODULE_3___default()(MANIFEST)).call(_context, item => { + const version = MANIFEST[item]; + + // Check if directory exists + if (!fs__WEBPACK_IMPORTED_MODULE_8___default().existsSync(`${directoryPath}/${item}`)) { + outdatedItems.push(item); + } + + // Check if version is outdated + if (manifestData[item] !== version) { + outdatedItems.push(item); + } + }); + + // overwrite manifest file + fs__WEBPACK_IMPORTED_MODULE_8___default().writeFile(manifestPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_2___default()(MANIFEST), error => { + if (error) { + console.error("Error writing manifest file:", error); + } + }); + resolve(outdatedItems); + }); + }); +} +async function downloadFromManifest(directoryPath) { + try { + const outdatedItems = await checkManifest(directoryPath); + const downloadPromises = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5___default()(outdatedItems).call(outdatedItems, async item => { + const version = MANIFEST[item]; + + // Download the file + const url = objectPath(item, version); + const filename = `${item}.tar.gz`; + await downloadFile(url, directoryPath, filename); + + // Extract the tarball + const tarballPath = `${directoryPath}/${filename}`; + await extractTarball(tarballPath, directoryPath); + + // Delete the tarball + await deleteFile(tarballPath); + }); + await _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default().all(downloadPromises); + } catch (error) { + console.error("Error downloading from manifest:", error); + } +} +async function deleteFile(filePath) { + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default())((resolve, reject) => { + fs__WEBPACK_IMPORTED_MODULE_8___default().unlink(filePath, error => { + if (error) { + reject(error); + } else { + resolve(); + } + }); + }); +} +async function extractTarball(filePath, destinationPath) { + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default())((resolve, reject) => { + (0,tar__WEBPACK_IMPORTED_MODULE_9__.extract)({ + file: filePath, + cwd: destinationPath + }).then(resolve).catch(reject); + }); +} +function createDirectoryInHomeFolder(directoryName, subdirs) { + const directoryPath = `${homeFolder}/${directoryName}`; + if (!fs__WEBPACK_IMPORTED_MODULE_8___default().existsSync(directoryPath)) { + fs__WEBPACK_IMPORTED_MODULE_8___default().mkdirSync(directoryPath, { + recursive: true + }); + } + _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_4___default()(subdirs).call(subdirs, subdir => { + let localPath = `${directoryPath}/${subdir}`; + if (!fs__WEBPACK_IMPORTED_MODULE_8___default().existsSync(localPath)) { + fs__WEBPACK_IMPORTED_MODULE_8___default().mkdirSync(localPath, { + recursive: true + }); + } + }); +} +const pythonVersions = { + win32: `${bucket}/cpython-3.10.13%2B20230826-x86_64-pc-windows-msvc-shared-install_only.tar.gz`, + darwin: `${bucket}/cpython-3.10.13%2B20230826-x86_64-apple-darwin-install_only.tar.gz`, + "darwin-arm64": `${bucket}/cpython-3.10.13%2B20230826-aarch64-apple-darwin-install_only.tar.gz`, + linux: `${bucket}/cpython-3.10.13%2B20230826-x86_64-unknown-linux-gnu-install_only.tar.gz` +}; +async function setupPython(window, pythonScriptsPath) { + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default())((resolve, reject) => { + const platform = os__WEBPACK_IMPORTED_MODULE_10___default().platform(); + const architecture = os__WEBPACK_IMPORTED_MODULE_10___default().arch(); + let pythonVersion = pythonVersions[platform]; + if (platform === "darwin" && architecture === "arm64") { + pythonVersion = pythonVersions["darwin-arm64"]; + } + + // check if python folder exists + if (fs__WEBPACK_IMPORTED_MODULE_8___default().existsSync(`${belljarFolder}/benv`)) { + // try and install dependencies to make sure all packages are installed + window.webContents.send("setup-progress", "Updating Python packages..."); + const requirementsPath = `${pythonScriptsPath}/requirements.txt`; + const envPyCommand = platform === "win32" ? `${belljarFolder}/benv/Scripts/python` : `${belljarFolder}/benv/bin/python`; + (0,child_process__WEBPACK_IMPORTED_MODULE_11__.exec)(`${envPyCommand} -m pip install -r ${requirementsPath}`, error => { + if (error) { + console.error("Error installing Python packages:", error); + } else { + resolve(); + } + }); + return; + } + + // Download Python tarball + const pythonTarballPath = `${belljarFolder}/python.tar.gz`; + downloadFile(pythonVersion, belljarFolder, "python.tar.gz").then(() => { + // Extract Python tarball + window.webContents.send("setup-progress", "Extracting Python tarball..."); + extractTarball(pythonTarballPath, belljarFolder).then(() => { + // Delete Python tarball + deleteFile(pythonTarballPath).then(() => { + window.webContents.send("setup-progress", "Creating virtual environment..."); + // Create Python virtual environment + const pyCommand = platform === "win32" ? "python" : "python3"; + (0,child_process__WEBPACK_IMPORTED_MODULE_11__.exec)(`${pyCommand} -m venv ${belljarFolder}/benv`, error => { + if (error) { + console.error("Error creating Python virtual environment:", error); + } else { + // Install Python packages + window.webContents.send("setup-progress", "Installing Python packages..."); + const requirementsPath = `${pythonScriptsPath}/requirements.txt`; + const envPyCommand = platform === "win32" ? `${belljarFolder}/benv/Scripts/python` : `${belljarFolder}/benv/bin/python`; + (0,child_process__WEBPACK_IMPORTED_MODULE_11__.exec)(`${envPyCommand} -m pip install -r ${requirementsPath}`, error => { + if (error) { + console.error("Error installing Python packages:", error); + } else { + resolve(); + } + }); + } + }); + }); + }); + }); + }); +} +function performSetup(window, pythonScriptsPath) { + // Create Bell Jar folder + setupPython(window, pythonScriptsPath).then(() => { + downloadFromManifest(belljarFolder).then(() => { + window.webContents.send("setup-progress", "Setup complete!"); + }).catch(error => { + console.error("Error performing setup:", error); + }); + }); +} + +/***/ }), + +/***/ "./main/helpers/projects-tools.ts": +/*!****************************************!*\ + !*** ./main/helpers/projects-tools.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ addAnimal: () => (/* binding */ addAnimal), +/* harmony export */ createProject: () => (/* binding */ createProject), +/* harmony export */ deleteAnimal: () => (/* binding */ deleteAnimal), +/* harmony export */ deleteAnimalDataDirectory: () => (/* binding */ deleteAnimalDataDirectory), +/* harmony export */ deleteFile: () => (/* binding */ deleteFile), +/* harmony export */ deleteProject: () => (/* binding */ deleteProject), +/* harmony export */ exportProject: () => (/* binding */ exportProject), +/* harmony export */ getAnimalData: () => (/* binding */ getAnimalData), +/* harmony export */ getAnimalDataDirectory: () => (/* binding */ getAnimalDataDirectory), +/* harmony export */ getProjects: () => (/* binding */ getProjects), +/* harmony export */ importProject: () => (/* binding */ importProject), +/* harmony export */ loadProject: () => (/* binding */ loadProject), +/* harmony export */ openFile: () => (/* binding */ openFile), +/* harmony export */ saveAsDialog: () => (/* binding */ saveAsDialog), +/* harmony export */ selectDirectory: () => (/* binding */ selectDirectory), +/* harmony export */ uploadFile: () => (/* binding */ uploadFile) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ "./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_ends_with__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/ends-with */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/ends-with.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_ends_with__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_ends_with__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ "./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_starts_with__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/starts-with */ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js"); +/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_starts_with__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_starts_with__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_9__); +/* harmony import */ var archiver__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! archiver */ "./node_modules/archiver/index.js"); +/* harmony import */ var archiver__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(archiver__WEBPACK_IMPORTED_MODULE_10__); +/* harmony import */ var extract_zip__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! extract-zip */ "extract-zip"); +/* harmony import */ var extract_zip__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(extract_zip__WEBPACK_IMPORTED_MODULE_11__); + + + + + + + +// projects.ts + + + + + + +const bellJarFolder = (__webpack_require__(/*! os */ "os").homedir)() + "/.belljar"; +const projectsPath = path__WEBPACK_IMPORTED_MODULE_8___default().join(bellJarFolder, "projects"); +// Ensure the projects directory exists +if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectsPath)) { + fs__WEBPACK_IMPORTED_MODULE_7___default().mkdirSync(projectsPath, { + recursive: true + }); +} +function createProject(name, description) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, name); + if (fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project already exists"); + } + fs__WEBPACK_IMPORTED_MODULE_7___default().mkdirSync(projectDir); + const metadata = { + name, + createdAt: new Date().toISOString(), + lastModified: new Date().toISOString(), + description, + animals: {} + }; + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"), _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(metadata, null, 2)); +} +function saveAsDialog(name) { + const result = electron__WEBPACK_IMPORTED_MODULE_9__.dialog.showSaveDialogSync({ + title: "Export Project", + defaultPath: `${name}.zip`, + filters: [{ + name: "Zip Files", + extensions: ["zip"] + }] + }); + return result; +} +function openFile() { + const result = electron__WEBPACK_IMPORTED_MODULE_9__.dialog.showOpenDialogSync({ + properties: ["openFile"] + }); + return result; +} +function loadProject(name) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, name); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + return JSON.parse(fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json")).toString()); +} +function deleteProject(name) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, name); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(projectDir, { + recursive: true, + force: true + }); +} +function importProject() { + const result = electron__WEBPACK_IMPORTED_MODULE_9__.dialog.showOpenDialogSync({ + title: "Import Project", + properties: ["openFile"], + filters: [{ + name: "Zip Files", + extensions: ["zip"] + }] + }); + if (result) { + const importPath = result[0]; + const importName = path__WEBPACK_IMPORTED_MODULE_8___default().basename(importPath, ".zip"); + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, importName); + if (fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project already exists"); + } + // make dir + fs__WEBPACK_IMPORTED_MODULE_7___default().mkdirSync(projectDir); + extract_zip__WEBPACK_IMPORTED_MODULE_11___default()(importPath, { + dir: projectDir + }); + // check if metadata.json exists if not throw error, not a valid project + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"))) { + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(projectDir, { + recursive: true, + force: true + }); + throw new Error("Invalid project"); + } + } +} +async function exportProject(name) { + // compress and export the project directory + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, name); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + const exportPath = saveAsDialog(name); + if (!exportPath) { + return; + } + const output = fs__WEBPACK_IMPORTED_MODULE_7___default().createWriteStream(exportPath); + const archive = archiver__WEBPACK_IMPORTED_MODULE_10___default()("zip", { + zlib: { + level: 9 + } + }); + output.on("close", function () { + console.log(archive.pointer() + " total bytes"); + console.log("archiver has been finalized and the output file descriptor has closed."); + }); + archive.on("warning", function (err) { + if (err.code === "ENOENT") { + console.log(err); + } else { + throw err; + } + }); + archive.on("error", function (err) { + throw err; + }); + archive.pipe(output); + archive.directory(projectDir, false); + console.log(`Files in ${projectDir}`, fs__WEBPACK_IMPORTED_MODULE_7___default().readdirSync(projectDir)); + await archive.finalize(); +} +function deleteFile(projectName, animalName, dataType, fileName) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + // remove meta + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dataType, fileName + ".json")); + // remove file + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dataType, fileName)); + // Update metadata + const metadataPath = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"); + const metadata = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(metadataPath).toString()); + metadata.lastModified = new Date().toISOString(); + if (fs__WEBPACK_IMPORTED_MODULE_7___default().readdirSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dataType)).length === 0) { + // Set the data flag to false + switch (dataType) { + case "Background": + metadata.animals[animalName].hasAlignmentData = false; + break; + case "Signal": + metadata.animals[animalName].hasCellDetectionData = false; + break; + } + } + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(metadataPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(metadata, null, 2)); +} +function uploadFile(projectName, animalName, dataType, filePaths) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_1___default()(filePaths).call(filePaths, filePath => { + const fileName = path__WEBPACK_IMPORTED_MODULE_8___default().basename(filePath); + const fileMetadata = { + name: fileName, + path: filePath, + addedAt: new Date().toISOString() + }; + const dataTypeDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dataType); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(dataTypeDir)) { + fs__WEBPACK_IMPORTED_MODULE_7___default().mkdirSync(dataTypeDir); + } + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(dataTypeDir, fileName + ".json"), _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(fileMetadata, null, 2)); + // Make a symlink to the file for analysis + fs__WEBPACK_IMPORTED_MODULE_7___default().symlinkSync(filePath, path__WEBPACK_IMPORTED_MODULE_8___default().join(dataTypeDir, fileName)); + }); + + // Update metadata + const metadataPath = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"); + const metadata = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(metadataPath).toString()); + metadata.lastModified = new Date().toISOString(); + switch (dataType) { + case "Background": + metadata.animals[animalName].hasAlignmentData = true; + break; + case "Signal": + metadata.animals[animalName].hasCellDetectionData = true; + break; + default: + break; + } + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(metadataPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(metadata, null, 2)); +} +function getAnimalData(projectName, animalName) { + var _context; + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + const animalDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(animalDir)) { + throw new Error("Animal not found"); + } + const animalDataFiles = []; + // get all sub directories in the animal directory + const dataTypes = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(_context = fs__WEBPACK_IMPORTED_MODULE_7___default().readdirSync(animalDir)).call(_context, file => fs__WEBPACK_IMPORTED_MODULE_7___default().statSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(animalDir, file)).isDirectory()); + _babel_runtime_corejs3_core_js_stable_instance_for_each__WEBPACK_IMPORTED_MODULE_1___default()(dataTypes).call(dataTypes, dataType => { + var _context2; + const dataTypeDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(animalDir, dataType); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(dataTypeDir)) { + return; + } + const files = fs__WEBPACK_IMPORTED_MODULE_7___default().readdirSync(dataTypeDir); + const animalDataFilesInDataTypeDir = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(_context2 = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(files).call(files, file => _babel_runtime_corejs3_core_js_stable_instance_ends_with__WEBPACK_IMPORTED_MODULE_4___default()(file).call(file, ".json"))).call(_context2, file => { + const filePath = path__WEBPACK_IMPORTED_MODULE_8___default().join(dataTypeDir, file); + const fileContent = fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(filePath, "utf8"); + return JSON.parse(fileContent); + }); + animalDataFiles.push({ + name: dataType, + files: animalDataFilesInDataTypeDir + }); + }); + return animalDataFiles; +} +function addAnimal(projectName, animalName, animalData) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + const metadataPath = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"); + const metadata = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(metadataPath).toString()); + metadata.animals[animalName] = animalData; + metadata.lastModified = new Date().toISOString(); + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(metadataPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(metadata, null, 2)); + fs__WEBPACK_IMPORTED_MODULE_7___default().mkdirSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName)); +} +function deleteAnimal(projectName, animalName) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + const metadataPath = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, "metadata.json"); + const metadata = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_7___default().readFileSync(metadataPath).toString()); + delete metadata.animals[animalName]; + metadata.lastModified = new Date().toISOString(); + fs__WEBPACK_IMPORTED_MODULE_7___default().writeFileSync(metadataPath, _babel_runtime_corejs3_core_js_stable_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(metadata, null, 2)); + + // Delete the animal folder + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName), { + recursive: true + }); +} +function getProjects() { + var _context3; + // Get all directories in the projects folder + return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(_context3 = fs__WEBPACK_IMPORTED_MODULE_7___default().readdirSync(projectsPath)).call(_context3, file => { + return fs__WEBPACK_IMPORTED_MODULE_7___default().statSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, file)).isDirectory(); + }); +} +function selectDirectory() { + // Select a directory on the local machine with a dialog + const filePaths = electron__WEBPACK_IMPORTED_MODULE_9__.dialog.showOpenDialogSync({ + properties: ["openDirectory"], + title: "Select a directory" + }); + return filePaths[0]; +} + +/** + * Creates a symlink for the given target path. + * @param {string} targetPath - The target file path. + * @param {string} symlinkPath - The symlink path. + * @returns {Promise} + */ +function createSymlink(targetPath, symlinkPath) { + return new (_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_5___default())((resolve, reject) => { + fs__WEBPACK_IMPORTED_MODULE_7___default().symlink(targetPath, symlinkPath, err => { + if (err) reject(err);else resolve(); + }); + }); +} +function deleteAnimalDataDirectory(projectName, animalName, dirname) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + // Check if dirname is a full path + if (!_babel_runtime_corejs3_core_js_stable_instance_starts_with__WEBPACK_IMPORTED_MODULE_6___default()(dirname).call(dirname, projectDir)) { + // use basename + dirname = path__WEBPACK_IMPORTED_MODULE_8___default().basename(dirname); + } + fs__WEBPACK_IMPORTED_MODULE_7___default().rmSync(path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dirname), { + recursive: true + }); +} +async function getAnimalDataDirectory(projectName, animalName, dataType) { + const projectDir = path__WEBPACK_IMPORTED_MODULE_8___default().join(projectsPath, projectName); + if (!fs__WEBPACK_IMPORTED_MODULE_7___default().existsSync(projectDir)) { + throw new Error("Project not found"); + } + // Get all file objs + return path__WEBPACK_IMPORTED_MODULE_8___default().join(projectDir, animalName, dataType); +} + +/***/ }), + +/***/ "./node_modules/balanced-match/index.js": +/*!**********************************************!*\ + !*** ./node_modules/balanced-match/index.js ***! + \**********************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + + +/***/ }), + +/***/ "./node_modules/bl/BufferList.js": +/*!***************************************!*\ + !*** ./node_modules/bl/BufferList.js ***! + \***************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const { Buffer } = __webpack_require__(/*! buffer */ "buffer") +const symbol = Symbol.for('BufferList') + +function BufferList (buf) { + if (!(this instanceof BufferList)) { + return new BufferList(buf) + } + + BufferList._init.call(this, buf) +} + +BufferList._init = function _init (buf) { + Object.defineProperty(this, symbol, { value: true }) + + this._bufs = [] + this.length = 0 + + if (buf) { + this.append(buf) + } +} + +BufferList.prototype._new = function _new (buf) { + return new BufferList(buf) +} + +BufferList.prototype._offset = function _offset (offset) { + if (offset === 0) { + return [0, 0] + } + + let tot = 0 + + for (let i = 0; i < this._bufs.length; i++) { + const _t = tot + this._bufs[i].length + if (offset < _t || i === this._bufs.length - 1) { + return [i, offset - tot] + } + tot = _t + } +} + +BufferList.prototype._reverseOffset = function (blOffset) { + const bufferId = blOffset[0] + let offset = blOffset[1] + + for (let i = 0; i < bufferId; i++) { + offset += this._bufs[i].length + } + + return offset +} + +BufferList.prototype.get = function get (index) { + if (index > this.length || index < 0) { + return undefined + } + + const offset = this._offset(index) + + return this._bufs[offset[0]][offset[1]] +} + +BufferList.prototype.slice = function slice (start, end) { + if (typeof start === 'number' && start < 0) { + start += this.length + } + + if (typeof end === 'number' && end < 0) { + end += this.length + } + + return this.copy(null, 0, start, end) +} + +BufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) { + if (typeof srcStart !== 'number' || srcStart < 0) { + srcStart = 0 + } + + if (typeof srcEnd !== 'number' || srcEnd > this.length) { + srcEnd = this.length + } + + if (srcStart >= this.length) { + return dst || Buffer.alloc(0) + } + + if (srcEnd <= 0) { + return dst || Buffer.alloc(0) + } + + const copy = !!dst + const off = this._offset(srcStart) + const len = srcEnd - srcStart + let bytes = len + let bufoff = (copy && dstStart) || 0 + let start = off[1] + + // copy/slice everything + if (srcStart === 0 && srcEnd === this.length) { + if (!copy) { + // slice, but full concat if multiple buffers + return this._bufs.length === 1 + ? this._bufs[0] + : Buffer.concat(this._bufs, this.length) + } + + // copy, need to copy individual buffers + for (let i = 0; i < this._bufs.length; i++) { + this._bufs[i].copy(dst, bufoff) + bufoff += this._bufs[i].length + } + + return dst + } + + // easy, cheap case where it's a subset of one of the buffers + if (bytes <= this._bufs[off[0]].length - start) { + return copy + ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) + : this._bufs[off[0]].slice(start, start + bytes) + } + + if (!copy) { + // a slice, we need something to copy in to + dst = Buffer.allocUnsafe(len) + } + + for (let i = off[0]; i < this._bufs.length; i++) { + const l = this._bufs[i].length - start + + if (bytes > l) { + this._bufs[i].copy(dst, bufoff, start) + bufoff += l + } else { + this._bufs[i].copy(dst, bufoff, start, start + bytes) + bufoff += l + break + } + + bytes -= l + + if (start) { + start = 0 + } + } + + // safeguard so that we don't return uninitialized memory + if (dst.length > bufoff) return dst.slice(0, bufoff) + + return dst +} + +BufferList.prototype.shallowSlice = function shallowSlice (start, end) { + start = start || 0 + end = typeof end !== 'number' ? this.length : end + + if (start < 0) { + start += this.length + } + + if (end < 0) { + end += this.length + } + + if (start === end) { + return this._new() + } + + const startOffset = this._offset(start) + const endOffset = this._offset(end) + const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1) + + if (endOffset[1] === 0) { + buffers.pop() + } else { + buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]) + } + + if (startOffset[1] !== 0) { + buffers[0] = buffers[0].slice(startOffset[1]) + } + + return this._new(buffers) +} + +BufferList.prototype.toString = function toString (encoding, start, end) { + return this.slice(start, end).toString(encoding) +} + +BufferList.prototype.consume = function consume (bytes) { + // first, normalize the argument, in accordance with how Buffer does it + bytes = Math.trunc(bytes) + // do nothing if not a positive number + if (Number.isNaN(bytes) || bytes <= 0) return this + + while (this._bufs.length) { + if (bytes >= this._bufs[0].length) { + bytes -= this._bufs[0].length + this.length -= this._bufs[0].length + this._bufs.shift() + } else { + this._bufs[0] = this._bufs[0].slice(bytes) + this.length -= bytes + break + } + } + + return this +} + +BufferList.prototype.duplicate = function duplicate () { + const copy = this._new() + + for (let i = 0; i < this._bufs.length; i++) { + copy.append(this._bufs[i]) + } + + return copy +} + +BufferList.prototype.append = function append (buf) { + if (buf == null) { + return this + } + + if (buf.buffer) { + // append a view of the underlying ArrayBuffer + this._appendBuffer(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)) + } else if (Array.isArray(buf)) { + for (let i = 0; i < buf.length; i++) { + this.append(buf[i]) + } + } else if (this._isBufferList(buf)) { + // unwrap argument into individual BufferLists + for (let i = 0; i < buf._bufs.length; i++) { + this.append(buf._bufs[i]) + } + } else { + // coerce number arguments to strings, since Buffer(number) does + // uninitialized memory allocation + if (typeof buf === 'number') { + buf = buf.toString() + } + + this._appendBuffer(Buffer.from(buf)) + } + + return this +} + +BufferList.prototype._appendBuffer = function appendBuffer (buf) { + this._bufs.push(buf) + this.length += buf.length +} + +BufferList.prototype.indexOf = function (search, offset, encoding) { + if (encoding === undefined && typeof offset === 'string') { + encoding = offset + offset = undefined + } + + if (typeof search === 'function' || Array.isArray(search)) { + throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.') + } else if (typeof search === 'number') { + search = Buffer.from([search]) + } else if (typeof search === 'string') { + search = Buffer.from(search, encoding) + } else if (this._isBufferList(search)) { + search = search.slice() + } else if (Array.isArray(search.buffer)) { + search = Buffer.from(search.buffer, search.byteOffset, search.byteLength) + } else if (!Buffer.isBuffer(search)) { + search = Buffer.from(search) + } + + offset = Number(offset || 0) + + if (isNaN(offset)) { + offset = 0 + } + + if (offset < 0) { + offset = this.length + offset + } + + if (offset < 0) { + offset = 0 + } + + if (search.length === 0) { + return offset > this.length ? this.length : offset + } + + const blOffset = this._offset(offset) + let blIndex = blOffset[0] // index of which internal buffer we're working on + let buffOffset = blOffset[1] // offset of the internal buffer we're working on + + // scan over each buffer + for (; blIndex < this._bufs.length; blIndex++) { + const buff = this._bufs[blIndex] + + while (buffOffset < buff.length) { + const availableWindow = buff.length - buffOffset + + if (availableWindow >= search.length) { + const nativeSearchResult = buff.indexOf(search, buffOffset) + + if (nativeSearchResult !== -1) { + return this._reverseOffset([blIndex, nativeSearchResult]) + } + + buffOffset = buff.length - search.length + 1 // end of native search window + } else { + const revOffset = this._reverseOffset([blIndex, buffOffset]) + + if (this._match(revOffset, search)) { + return revOffset + } + + buffOffset++ + } + } + + buffOffset = 0 + } + + return -1 +} + +BufferList.prototype._match = function (offset, search) { + if (this.length - offset < search.length) { + return false + } + + for (let searchOffset = 0; searchOffset < search.length; searchOffset++) { + if (this.get(offset + searchOffset) !== search[searchOffset]) { + return false + } + } + return true +} + +;(function () { + const methods = { + readDoubleBE: 8, + readDoubleLE: 8, + readFloatBE: 4, + readFloatLE: 4, + readInt32BE: 4, + readInt32LE: 4, + readUInt32BE: 4, + readUInt32LE: 4, + readInt16BE: 2, + readInt16LE: 2, + readUInt16BE: 2, + readUInt16LE: 2, + readInt8: 1, + readUInt8: 1, + readIntBE: null, + readIntLE: null, + readUIntBE: null, + readUIntLE: null + } + + for (const m in methods) { + (function (m) { + if (methods[m] === null) { + BufferList.prototype[m] = function (offset, byteLength) { + return this.slice(offset, offset + byteLength)[m](0, byteLength) + } + } else { + BufferList.prototype[m] = function (offset = 0) { + return this.slice(offset, offset + methods[m])[m](0) + } + } + }(m)) + } +}()) + +// Used internally by the class and also as an indicator of this object being +// a `BufferList`. It's not possible to use `instanceof BufferList` in a browser +// environment because there could be multiple different copies of the +// BufferList class and some `BufferList`s might be `BufferList`s. +BufferList.prototype._isBufferList = function _isBufferList (b) { + return b instanceof BufferList || BufferList.isBufferList(b) +} + +BufferList.isBufferList = function isBufferList (b) { + return b != null && b[symbol] +} + +module.exports = BufferList + + +/***/ }), + +/***/ "./node_modules/bl/bl.js": +/*!*******************************!*\ + !*** ./node_modules/bl/bl.js ***! + \*******************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const DuplexStream = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Duplex) +const inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js") +const BufferList = __webpack_require__(/*! ./BufferList */ "./node_modules/bl/BufferList.js") + +function BufferListStream (callback) { + if (!(this instanceof BufferListStream)) { + return new BufferListStream(callback) + } + + if (typeof callback === 'function') { + this._callback = callback + + const piper = function piper (err) { + if (this._callback) { + this._callback(err) + this._callback = null + } + }.bind(this) + + this.on('pipe', function onPipe (src) { + src.on('error', piper) + }) + this.on('unpipe', function onUnpipe (src) { + src.removeListener('error', piper) + }) + + callback = null + } + + BufferList._init.call(this, callback) + DuplexStream.call(this) +} + +inherits(BufferListStream, DuplexStream) +Object.assign(BufferListStream.prototype, BufferList.prototype) + +BufferListStream.prototype._new = function _new (callback) { + return new BufferListStream(callback) +} + +BufferListStream.prototype._write = function _write (buf, encoding, callback) { + this._appendBuffer(buf) + + if (typeof callback === 'function') { + callback() + } +} + +BufferListStream.prototype._read = function _read (size) { + if (!this.length) { + return this.push(null) + } + + size = Math.min(size, this.length) + this.push(this.slice(0, size)) + this.consume(size) +} + +BufferListStream.prototype.end = function end (chunk) { + DuplexStream.prototype.end.call(this, chunk) + + if (this._callback) { + this._callback(null, this.slice()) + this._callback = null + } +} + +BufferListStream.prototype._destroy = function _destroy (err, cb) { + this._bufs.length = 0 + this.length = 0 + cb(err) +} + +BufferListStream.prototype._isBufferList = function _isBufferList (b) { + return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b) +} + +BufferListStream.isBufferList = BufferList.isBufferList + +module.exports = BufferListStream +module.exports.BufferListStream = BufferListStream +module.exports.BufferList = BufferList + + +/***/ }), + +/***/ "./node_modules/brace-expansion/index.js": +/*!***********************************************!*\ + !*** ./node_modules/brace-expansion/index.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var balanced = __webpack_require__(/*! balanced-match */ "./node_modules/balanced-match/index.js"); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m) return [str]; + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + if (/\$$/.test(m.pre)) { + for (var k = 0; k < post.length; k++) { + var expansion = pre+ '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + } else { + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = []; + + for (var j = 0; j < n.length; j++) { + N.push.apply(N, expand(n[j], false)); + } + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + } + + return expansions; +} + + + +/***/ }), + +/***/ "./node_modules/buffer-crc32/index.js": +/*!********************************************!*\ + !*** ./node_modules/buffer-crc32/index.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Buffer = (__webpack_require__(/*! buffer */ "buffer").Buffer); + +var CRC_TABLE = [ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d +]; + +if (typeof Int32Array !== 'undefined') { + CRC_TABLE = new Int32Array(CRC_TABLE); +} + +function ensureBuffer(input) { + if (Buffer.isBuffer(input)) { + return input; + } + + var hasNewBufferAPI = + typeof Buffer.alloc === "function" && + typeof Buffer.from === "function"; + + if (typeof input === "number") { + return hasNewBufferAPI ? Buffer.alloc(input) : new Buffer(input); + } + else if (typeof input === "string") { + return hasNewBufferAPI ? Buffer.from(input) : new Buffer(input); + } + else { + throw new Error("input must be buffer, number, or string, received " + + typeof input); + } +} + +function bufferizeInt(num) { + var tmp = ensureBuffer(4); + tmp.writeInt32BE(num, 0); + return tmp; +} + +function _crc32(buf, previous) { + buf = ensureBuffer(buf); + if (Buffer.isBuffer(previous)) { + previous = previous.readUInt32BE(0); + } + var crc = ~~previous ^ -1; + for (var n = 0; n < buf.length; n++) { + crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); + } + return (crc ^ -1); +} + +function crc32() { + return bufferizeInt(_crc32.apply(null, arguments)); +} +crc32.signed = function () { + return _crc32.apply(null, arguments); +}; +crc32.unsigned = function () { + return _crc32.apply(null, arguments) >>> 0; +}; + +module.exports = crc32; + + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/archive-entry.js": +/*!**********************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/archive-entry.js ***! + \**********************************************************************/ +/***/ ((module) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var ArchiveEntry = module.exports = function() {}; + +ArchiveEntry.prototype.getName = function() {}; + +ArchiveEntry.prototype.getSize = function() {}; + +ArchiveEntry.prototype.getLastModifiedDate = function() {}; + +ArchiveEntry.prototype.isDirectory = function() {}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/archive-output-stream.js": +/*!******************************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/archive-output-stream.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var inherits = (__webpack_require__(/*! util */ "util").inherits); +var Transform = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Transform); + +var ArchiveEntry = __webpack_require__(/*! ./archive-entry */ "./node_modules/compress-commons/lib/archivers/archive-entry.js"); +var util = __webpack_require__(/*! ../util */ "./node_modules/compress-commons/lib/util/index.js"); + +var ArchiveOutputStream = module.exports = function(options) { + if (!(this instanceof ArchiveOutputStream)) { + return new ArchiveOutputStream(options); + } + + Transform.call(this, options); + + this.offset = 0; + this._archive = { + finish: false, + finished: false, + processing: false + }; +}; + +inherits(ArchiveOutputStream, Transform); + +ArchiveOutputStream.prototype._appendBuffer = function(zae, source, callback) { + // scaffold only +}; + +ArchiveOutputStream.prototype._appendStream = function(zae, source, callback) { + // scaffold only +}; + +ArchiveOutputStream.prototype._emitErrorCallback = function(err) { + if (err) { + this.emit('error', err); + } +}; + +ArchiveOutputStream.prototype._finish = function(ae) { + // scaffold only +}; + +ArchiveOutputStream.prototype._normalizeEntry = function(ae) { + // scaffold only +}; + +ArchiveOutputStream.prototype._transform = function(chunk, encoding, callback) { + callback(null, chunk); +}; + +ArchiveOutputStream.prototype.entry = function(ae, source, callback) { + source = source || null; + + if (typeof callback !== 'function') { + callback = this._emitErrorCallback.bind(this); + } + + if (!(ae instanceof ArchiveEntry)) { + callback(new Error('not a valid instance of ArchiveEntry')); + return; + } + + if (this._archive.finish || this._archive.finished) { + callback(new Error('unacceptable entry after finish')); + return; + } + + if (this._archive.processing) { + callback(new Error('already processing an entry')); + return; + } + + this._archive.processing = true; + this._normalizeEntry(ae); + this._entry = ae; + + source = util.normalizeInputSource(source); + + if (Buffer.isBuffer(source)) { + this._appendBuffer(ae, source, callback); + } else if (util.isStream(source)) { + this._appendStream(ae, source, callback); + } else { + this._archive.processing = false; + callback(new Error('input source must be valid Stream or Buffer instance')); + return; + } + + return this; +}; + +ArchiveOutputStream.prototype.finish = function() { + if (this._archive.processing) { + this._archive.finish = true; + return; + } + + this._finish(); +}; + +ArchiveOutputStream.prototype.getBytesWritten = function() { + return this.offset; +}; + +ArchiveOutputStream.prototype.write = function(chunk, cb) { + if (chunk) { + this.offset += chunk.length; + } + + return Transform.prototype.write.call(this, chunk, cb); +}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/constants.js": +/*!**********************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/constants.js ***! + \**********************************************************************/ +/***/ ((module) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +module.exports = { + WORD: 4, + DWORD: 8, + EMPTY: Buffer.alloc(0), + + SHORT: 2, + SHORT_MASK: 0xffff, + SHORT_SHIFT: 16, + SHORT_ZERO: Buffer.from(Array(2)), + LONG: 4, + LONG_ZERO: Buffer.from(Array(4)), + + MIN_VERSION_INITIAL: 10, + MIN_VERSION_DATA_DESCRIPTOR: 20, + MIN_VERSION_ZIP64: 45, + VERSION_MADEBY: 45, + + METHOD_STORED: 0, + METHOD_DEFLATED: 8, + + PLATFORM_UNIX: 3, + PLATFORM_FAT: 0, + + SIG_LFH: 0x04034b50, + SIG_DD: 0x08074b50, + SIG_CFH: 0x02014b50, + SIG_EOCD: 0x06054b50, + SIG_ZIP64_EOCD: 0x06064B50, + SIG_ZIP64_EOCD_LOC: 0x07064B50, + + ZIP64_MAGIC_SHORT: 0xffff, + ZIP64_MAGIC: 0xffffffff, + ZIP64_EXTRA_ID: 0x0001, + + ZLIB_NO_COMPRESSION: 0, + ZLIB_BEST_SPEED: 1, + ZLIB_BEST_COMPRESSION: 9, + ZLIB_DEFAULT_COMPRESSION: -1, + + MODE_MASK: 0xFFF, + DEFAULT_FILE_MODE: 33188, // 010644 = -rw-r--r-- = S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH + DEFAULT_DIR_MODE: 16877, // 040755 = drwxr-xr-x = S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH + + EXT_FILE_ATTR_DIR: 1106051088, // 010173200020 = drwxr-xr-x = (((S_IFDIR | 0755) << 16) | S_DOS_D) + EXT_FILE_ATTR_FILE: 2175008800, // 020151000040 = -rw-r--r-- = (((S_IFREG | 0644) << 16) | S_DOS_A) >>> 0 + + // Unix file types + S_IFMT: 61440, // 0170000 type of file mask + S_IFIFO: 4096, // 010000 named pipe (fifo) + S_IFCHR: 8192, // 020000 character special + S_IFDIR: 16384, // 040000 directory + S_IFBLK: 24576, // 060000 block special + S_IFREG: 32768, // 0100000 regular + S_IFLNK: 40960, // 0120000 symbolic link + S_IFSOCK: 49152, // 0140000 socket + + // DOS file type flags + S_DOS_A: 32, // 040 Archive + S_DOS_D: 16, // 020 Directory + S_DOS_V: 8, // 010 Volume + S_DOS_S: 4, // 04 System + S_DOS_H: 2, // 02 Hidden + S_DOS_R: 1 // 01 Read Only +}; + + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/general-purpose-bit.js": +/*!********************************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/general-purpose-bit.js ***! + \********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var zipUtil = __webpack_require__(/*! ./util */ "./node_modules/compress-commons/lib/archivers/zip/util.js"); + +var DATA_DESCRIPTOR_FLAG = 1 << 3; +var ENCRYPTION_FLAG = 1 << 0; +var NUMBER_OF_SHANNON_FANO_TREES_FLAG = 1 << 2; +var SLIDING_DICTIONARY_SIZE_FLAG = 1 << 1; +var STRONG_ENCRYPTION_FLAG = 1 << 6; +var UFT8_NAMES_FLAG = 1 << 11; + +var GeneralPurposeBit = module.exports = function() { + if (!(this instanceof GeneralPurposeBit)) { + return new GeneralPurposeBit(); + } + + this.descriptor = false; + this.encryption = false; + this.utf8 = false; + this.numberOfShannonFanoTrees = 0; + this.strongEncryption = false; + this.slidingDictionarySize = 0; + + return this; +}; + +GeneralPurposeBit.prototype.encode = function() { + return zipUtil.getShortBytes( + (this.descriptor ? DATA_DESCRIPTOR_FLAG : 0) | + (this.utf8 ? UFT8_NAMES_FLAG : 0) | + (this.encryption ? ENCRYPTION_FLAG : 0) | + (this.strongEncryption ? STRONG_ENCRYPTION_FLAG : 0) + ); +}; + +GeneralPurposeBit.prototype.parse = function(buf, offset) { + var flag = zipUtil.getShortBytesValue(buf, offset); + var gbp = new GeneralPurposeBit(); + + gbp.useDataDescriptor((flag & DATA_DESCRIPTOR_FLAG) !== 0); + gbp.useUTF8ForNames((flag & UFT8_NAMES_FLAG) !== 0); + gbp.useStrongEncryption((flag & STRONG_ENCRYPTION_FLAG) !== 0); + gbp.useEncryption((flag & ENCRYPTION_FLAG) !== 0); + gbp.setSlidingDictionarySize((flag & SLIDING_DICTIONARY_SIZE_FLAG) !== 0 ? 8192 : 4096); + gbp.setNumberOfShannonFanoTrees((flag & NUMBER_OF_SHANNON_FANO_TREES_FLAG) !== 0 ? 3 : 2); + + return gbp; +}; + +GeneralPurposeBit.prototype.setNumberOfShannonFanoTrees = function(n) { + this.numberOfShannonFanoTrees = n; +}; + +GeneralPurposeBit.prototype.getNumberOfShannonFanoTrees = function() { + return this.numberOfShannonFanoTrees; +}; + +GeneralPurposeBit.prototype.setSlidingDictionarySize = function(n) { + this.slidingDictionarySize = n; +}; + +GeneralPurposeBit.prototype.getSlidingDictionarySize = function() { + return this.slidingDictionarySize; +}; + +GeneralPurposeBit.prototype.useDataDescriptor = function(b) { + this.descriptor = b; +}; + +GeneralPurposeBit.prototype.usesDataDescriptor = function() { + return this.descriptor; +}; + +GeneralPurposeBit.prototype.useEncryption = function(b) { + this.encryption = b; +}; + +GeneralPurposeBit.prototype.usesEncryption = function() { + return this.encryption; +}; + +GeneralPurposeBit.prototype.useStrongEncryption = function(b) { + this.strongEncryption = b; +}; + +GeneralPurposeBit.prototype.usesStrongEncryption = function() { + return this.strongEncryption; +}; + +GeneralPurposeBit.prototype.useUTF8ForNames = function(b) { + this.utf8 = b; +}; + +GeneralPurposeBit.prototype.usesUTF8ForNames = function() { + return this.utf8; +}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/unix-stat.js": +/*!**********************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/unix-stat.js ***! + \**********************************************************************/ +/***/ ((module) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +module.exports = { + /** + * Bits used for permissions (and sticky bit) + */ + PERM_MASK: 4095, // 07777 + + /** + * Bits used to indicate the filesystem object type. + */ + FILE_TYPE_FLAG: 61440, // 0170000 + + /** + * Indicates symbolic links. + */ + LINK_FLAG: 40960, // 0120000 + + /** + * Indicates plain files. + */ + FILE_FLAG: 32768, // 0100000 + + /** + * Indicates directories. + */ + DIR_FLAG: 16384, // 040000 + + // ---------------------------------------------------------- + // somewhat arbitrary choices that are quite common for shared + // installations + // ----------------------------------------------------------- + + /** + * Default permissions for symbolic links. + */ + DEFAULT_LINK_PERM: 511, // 0777 + + /** + * Default permissions for directories. + */ + DEFAULT_DIR_PERM: 493, // 0755 + + /** + * Default permissions for plain files. + */ + DEFAULT_FILE_PERM: 420 // 0644 +}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/util.js": +/*!*****************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/util.js ***! + \*****************************************************************/ +/***/ ((module) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var util = module.exports = {}; + +util.dateToDos = function(d, forceLocalTime) { + forceLocalTime = forceLocalTime || false; + + var year = forceLocalTime ? d.getFullYear() : d.getUTCFullYear(); + + if (year < 1980) { + return 2162688; // 1980-1-1 00:00:00 + } else if (year >= 2044) { + return 2141175677; // 2043-12-31 23:59:58 + } + + var val = { + year: year, + month: forceLocalTime ? d.getMonth() : d.getUTCMonth(), + date: forceLocalTime ? d.getDate() : d.getUTCDate(), + hours: forceLocalTime ? d.getHours() : d.getUTCHours(), + minutes: forceLocalTime ? d.getMinutes() : d.getUTCMinutes(), + seconds: forceLocalTime ? d.getSeconds() : d.getUTCSeconds() + }; + + return ((val.year - 1980) << 25) | ((val.month + 1) << 21) | (val.date << 16) | + (val.hours << 11) | (val.minutes << 5) | (val.seconds / 2); +}; + +util.dosToDate = function(dos) { + return new Date(((dos >> 25) & 0x7f) + 1980, ((dos >> 21) & 0x0f) - 1, (dos >> 16) & 0x1f, (dos >> 11) & 0x1f, (dos >> 5) & 0x3f, (dos & 0x1f) << 1); +}; + +util.fromDosTime = function(buf) { + return util.dosToDate(buf.readUInt32LE(0)); +}; + +util.getEightBytes = function(v) { + var buf = Buffer.alloc(8); + buf.writeUInt32LE(v % 0x0100000000, 0); + buf.writeUInt32LE((v / 0x0100000000) | 0, 4); + + return buf; +}; + +util.getShortBytes = function(v) { + var buf = Buffer.alloc(2); + buf.writeUInt16LE((v & 0xFFFF) >>> 0, 0); + + return buf; +}; + +util.getShortBytesValue = function(buf, offset) { + return buf.readUInt16LE(offset); +}; + +util.getLongBytes = function(v) { + var buf = Buffer.alloc(4); + buf.writeUInt32LE((v & 0xFFFFFFFF) >>> 0, 0); + + return buf; +}; + +util.getLongBytesValue = function(buf, offset) { + return buf.readUInt32LE(offset); +}; + +util.toDosTime = function(d) { + return util.getLongBytes(util.dateToDos(d)); +}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/zip-archive-entry.js": +/*!******************************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/zip-archive-entry.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var inherits = (__webpack_require__(/*! util */ "util").inherits); +var normalizePath = __webpack_require__(/*! normalize-path */ "./node_modules/normalize-path/index.js"); + +var ArchiveEntry = __webpack_require__(/*! ../archive-entry */ "./node_modules/compress-commons/lib/archivers/archive-entry.js"); +var GeneralPurposeBit = __webpack_require__(/*! ./general-purpose-bit */ "./node_modules/compress-commons/lib/archivers/zip/general-purpose-bit.js"); +var UnixStat = __webpack_require__(/*! ./unix-stat */ "./node_modules/compress-commons/lib/archivers/zip/unix-stat.js"); + +var constants = __webpack_require__(/*! ./constants */ "./node_modules/compress-commons/lib/archivers/zip/constants.js"); +var zipUtil = __webpack_require__(/*! ./util */ "./node_modules/compress-commons/lib/archivers/zip/util.js"); + +var ZipArchiveEntry = module.exports = function(name) { + if (!(this instanceof ZipArchiveEntry)) { + return new ZipArchiveEntry(name); + } + + ArchiveEntry.call(this); + + this.platform = constants.PLATFORM_FAT; + this.method = -1; + + this.name = null; + this.size = 0; + this.csize = 0; + this.gpb = new GeneralPurposeBit(); + this.crc = 0; + this.time = -1; + + this.minver = constants.MIN_VERSION_INITIAL; + this.mode = -1; + this.extra = null; + this.exattr = 0; + this.inattr = 0; + this.comment = null; + + if (name) { + this.setName(name); + } +}; + +inherits(ZipArchiveEntry, ArchiveEntry); + +/** + * Returns the extra fields related to the entry. + * + * @returns {Buffer} + */ +ZipArchiveEntry.prototype.getCentralDirectoryExtra = function() { + return this.getExtra(); +}; + +/** + * Returns the comment set for the entry. + * + * @returns {string} + */ +ZipArchiveEntry.prototype.getComment = function() { + return this.comment !== null ? this.comment : ''; +}; + +/** + * Returns the compressed size of the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getCompressedSize = function() { + return this.csize; +}; + +/** + * Returns the CRC32 digest for the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getCrc = function() { + return this.crc; +}; + +/** + * Returns the external file attributes for the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getExternalAttributes = function() { + return this.exattr; +}; + +/** + * Returns the extra fields related to the entry. + * + * @returns {Buffer} + */ +ZipArchiveEntry.prototype.getExtra = function() { + return this.extra !== null ? this.extra : constants.EMPTY; +}; + +/** + * Returns the general purpose bits related to the entry. + * + * @returns {GeneralPurposeBit} + */ +ZipArchiveEntry.prototype.getGeneralPurposeBit = function() { + return this.gpb; +}; + +/** + * Returns the internal file attributes for the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getInternalAttributes = function() { + return this.inattr; +}; + +/** + * Returns the last modified date of the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getLastModifiedDate = function() { + return this.getTime(); +}; + +/** + * Returns the extra fields related to the entry. + * + * @returns {Buffer} + */ +ZipArchiveEntry.prototype.getLocalFileDataExtra = function() { + return this.getExtra(); +}; + +/** + * Returns the compression method used on the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getMethod = function() { + return this.method; +}; + +/** + * Returns the filename of the entry. + * + * @returns {string} + */ +ZipArchiveEntry.prototype.getName = function() { + return this.name; +}; + +/** + * Returns the platform on which the entry was made. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getPlatform = function() { + return this.platform; +}; + +/** + * Returns the size of the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getSize = function() { + return this.size; +}; + +/** + * Returns a date object representing the last modified date of the entry. + * + * @returns {number|Date} + */ +ZipArchiveEntry.prototype.getTime = function() { + return this.time !== -1 ? zipUtil.dosToDate(this.time) : -1; +}; + +/** + * Returns the DOS timestamp for the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getTimeDos = function() { + return this.time !== -1 ? this.time : 0; +}; + +/** + * Returns the UNIX file permissions for the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getUnixMode = function() { + return this.platform !== constants.PLATFORM_UNIX ? 0 : ((this.getExternalAttributes() >> constants.SHORT_SHIFT) & constants.SHORT_MASK); +}; + +/** + * Returns the version of ZIP needed to extract the entry. + * + * @returns {number} + */ +ZipArchiveEntry.prototype.getVersionNeededToExtract = function() { + return this.minver; +}; + +/** + * Sets the comment of the entry. + * + * @param comment + */ +ZipArchiveEntry.prototype.setComment = function(comment) { + if (Buffer.byteLength(comment) !== comment.length) { + this.getGeneralPurposeBit().useUTF8ForNames(true); + } + + this.comment = comment; +}; + +/** + * Sets the compressed size of the entry. + * + * @param size + */ +ZipArchiveEntry.prototype.setCompressedSize = function(size) { + if (size < 0) { + throw new Error('invalid entry compressed size'); + } + + this.csize = size; +}; + +/** + * Sets the checksum of the entry. + * + * @param crc + */ +ZipArchiveEntry.prototype.setCrc = function(crc) { + if (crc < 0) { + throw new Error('invalid entry crc32'); + } + + this.crc = crc; +}; + +/** + * Sets the external file attributes of the entry. + * + * @param attr + */ +ZipArchiveEntry.prototype.setExternalAttributes = function(attr) { + this.exattr = attr >>> 0; +}; + +/** + * Sets the extra fields related to the entry. + * + * @param extra + */ +ZipArchiveEntry.prototype.setExtra = function(extra) { + this.extra = extra; +}; + +/** + * Sets the general purpose bits related to the entry. + * + * @param gpb + */ +ZipArchiveEntry.prototype.setGeneralPurposeBit = function(gpb) { + if (!(gpb instanceof GeneralPurposeBit)) { + throw new Error('invalid entry GeneralPurposeBit'); + } + + this.gpb = gpb; +}; + +/** + * Sets the internal file attributes of the entry. + * + * @param attr + */ +ZipArchiveEntry.prototype.setInternalAttributes = function(attr) { + this.inattr = attr; +}; + +/** + * Sets the compression method of the entry. + * + * @param method + */ +ZipArchiveEntry.prototype.setMethod = function(method) { + if (method < 0) { + throw new Error('invalid entry compression method'); + } + + this.method = method; +}; + +/** + * Sets the name of the entry. + * + * @param name + * @param prependSlash + */ +ZipArchiveEntry.prototype.setName = function(name, prependSlash = false) { + name = normalizePath(name, false) + .replace(/^\w+:/, '') + .replace(/^(\.\.\/|\/)+/, ''); + + if (prependSlash) { + name = `/${name}`; + } + + if (Buffer.byteLength(name) !== name.length) { + this.getGeneralPurposeBit().useUTF8ForNames(true); + } + + this.name = name; +}; + +/** + * Sets the platform on which the entry was made. + * + * @param platform + */ +ZipArchiveEntry.prototype.setPlatform = function(platform) { + this.platform = platform; +}; + +/** + * Sets the size of the entry. + * + * @param size + */ +ZipArchiveEntry.prototype.setSize = function(size) { + if (size < 0) { + throw new Error('invalid entry size'); + } + + this.size = size; +}; + +/** + * Sets the time of the entry. + * + * @param time + * @param forceLocalTime + */ +ZipArchiveEntry.prototype.setTime = function(time, forceLocalTime) { + if (!(time instanceof Date)) { + throw new Error('invalid entry time'); + } + + this.time = zipUtil.dateToDos(time, forceLocalTime); +}; + +/** + * Sets the UNIX file permissions for the entry. + * + * @param mode + */ +ZipArchiveEntry.prototype.setUnixMode = function(mode) { + mode |= this.isDirectory() ? constants.S_IFDIR : constants.S_IFREG; + + var extattr = 0; + extattr |= (mode << constants.SHORT_SHIFT) | (this.isDirectory() ? constants.S_DOS_D : constants.S_DOS_A); + + this.setExternalAttributes(extattr); + this.mode = mode & constants.MODE_MASK; + this.platform = constants.PLATFORM_UNIX; +}; + +/** + * Sets the version of ZIP needed to extract this entry. + * + * @param minver + */ +ZipArchiveEntry.prototype.setVersionNeededToExtract = function(minver) { + this.minver = minver; +}; + +/** + * Returns true if this entry represents a directory. + * + * @returns {boolean} + */ +ZipArchiveEntry.prototype.isDirectory = function() { + return this.getName().slice(-1) === '/'; +}; + +/** + * Returns true if this entry represents a unix symlink, + * in which case the entry's content contains the target path + * for the symlink. + * + * @returns {boolean} + */ +ZipArchiveEntry.prototype.isUnixSymlink = function() { + return (this.getUnixMode() & UnixStat.FILE_TYPE_FLAG) === UnixStat.LINK_FLAG; +}; + +/** + * Returns true if this entry is using the ZIP64 extension of ZIP. + * + * @returns {boolean} + */ +ZipArchiveEntry.prototype.isZip64 = function() { + return this.csize > constants.ZIP64_MAGIC || this.size > constants.ZIP64_MAGIC; +}; + + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var inherits = (__webpack_require__(/*! util */ "util").inherits); +var crc32 = __webpack_require__(/*! buffer-crc32 */ "./node_modules/buffer-crc32/index.js"); +var {CRC32Stream} = __webpack_require__(/*! crc32-stream */ "./node_modules/crc32-stream/lib/index.js"); +var {DeflateCRC32Stream} = __webpack_require__(/*! crc32-stream */ "./node_modules/crc32-stream/lib/index.js"); + +var ArchiveOutputStream = __webpack_require__(/*! ../archive-output-stream */ "./node_modules/compress-commons/lib/archivers/archive-output-stream.js"); +var ZipArchiveEntry = __webpack_require__(/*! ./zip-archive-entry */ "./node_modules/compress-commons/lib/archivers/zip/zip-archive-entry.js"); +var GeneralPurposeBit = __webpack_require__(/*! ./general-purpose-bit */ "./node_modules/compress-commons/lib/archivers/zip/general-purpose-bit.js"); + +var constants = __webpack_require__(/*! ./constants */ "./node_modules/compress-commons/lib/archivers/zip/constants.js"); +var util = __webpack_require__(/*! ../../util */ "./node_modules/compress-commons/lib/util/index.js"); +var zipUtil = __webpack_require__(/*! ./util */ "./node_modules/compress-commons/lib/archivers/zip/util.js"); + +var ZipArchiveOutputStream = module.exports = function(options) { + if (!(this instanceof ZipArchiveOutputStream)) { + return new ZipArchiveOutputStream(options); + } + + options = this.options = this._defaults(options); + + ArchiveOutputStream.call(this, options); + + this._entry = null; + this._entries = []; + this._archive = { + centralLength: 0, + centralOffset: 0, + comment: '', + finish: false, + finished: false, + processing: false, + forceZip64: options.forceZip64, + forceLocalTime: options.forceLocalTime + }; +}; + +inherits(ZipArchiveOutputStream, ArchiveOutputStream); + +ZipArchiveOutputStream.prototype._afterAppend = function(ae) { + this._entries.push(ae); + + if (ae.getGeneralPurposeBit().usesDataDescriptor()) { + this._writeDataDescriptor(ae); + } + + this._archive.processing = false; + this._entry = null; + + if (this._archive.finish && !this._archive.finished) { + this._finish(); + } +}; + +ZipArchiveOutputStream.prototype._appendBuffer = function(ae, source, callback) { + if (source.length === 0) { + ae.setMethod(constants.METHOD_STORED); + } + + var method = ae.getMethod(); + + if (method === constants.METHOD_STORED) { + ae.setSize(source.length); + ae.setCompressedSize(source.length); + ae.setCrc(crc32.unsigned(source)); + } + + this._writeLocalFileHeader(ae); + + if (method === constants.METHOD_STORED) { + this.write(source); + this._afterAppend(ae); + callback(null, ae); + return; + } else if (method === constants.METHOD_DEFLATED) { + this._smartStream(ae, callback).end(source); + return; + } else { + callback(new Error('compression method ' + method + ' not implemented')); + return; + } +}; + +ZipArchiveOutputStream.prototype._appendStream = function(ae, source, callback) { + ae.getGeneralPurposeBit().useDataDescriptor(true); + ae.setVersionNeededToExtract(constants.MIN_VERSION_DATA_DESCRIPTOR); + + this._writeLocalFileHeader(ae); + + var smart = this._smartStream(ae, callback); + source.once('error', function(err) { + smart.emit('error', err); + smart.end(); + }) + source.pipe(smart); +}; + +ZipArchiveOutputStream.prototype._defaults = function(o) { + if (typeof o !== 'object') { + o = {}; + } + + if (typeof o.zlib !== 'object') { + o.zlib = {}; + } + + if (typeof o.zlib.level !== 'number') { + o.zlib.level = constants.ZLIB_BEST_SPEED; + } + + o.forceZip64 = !!o.forceZip64; + o.forceLocalTime = !!o.forceLocalTime; + + return o; +}; + +ZipArchiveOutputStream.prototype._finish = function() { + this._archive.centralOffset = this.offset; + + this._entries.forEach(function(ae) { + this._writeCentralFileHeader(ae); + }.bind(this)); + + this._archive.centralLength = this.offset - this._archive.centralOffset; + + if (this.isZip64()) { + this._writeCentralDirectoryZip64(); + } + + this._writeCentralDirectoryEnd(); + + this._archive.processing = false; + this._archive.finish = true; + this._archive.finished = true; + this.end(); +}; + +ZipArchiveOutputStream.prototype._normalizeEntry = function(ae) { + if (ae.getMethod() === -1) { + ae.setMethod(constants.METHOD_DEFLATED); + } + + if (ae.getMethod() === constants.METHOD_DEFLATED) { + ae.getGeneralPurposeBit().useDataDescriptor(true); + ae.setVersionNeededToExtract(constants.MIN_VERSION_DATA_DESCRIPTOR); + } + + if (ae.getTime() === -1) { + ae.setTime(new Date(), this._archive.forceLocalTime); + } + + ae._offsets = { + file: 0, + data: 0, + contents: 0, + }; +}; + +ZipArchiveOutputStream.prototype._smartStream = function(ae, callback) { + var deflate = ae.getMethod() === constants.METHOD_DEFLATED; + var process = deflate ? new DeflateCRC32Stream(this.options.zlib) : new CRC32Stream(); + var error = null; + + function handleStuff() { + var digest = process.digest().readUInt32BE(0); + ae.setCrc(digest); + ae.setSize(process.size()); + ae.setCompressedSize(process.size(true)); + this._afterAppend(ae); + callback(error, ae); + } + + process.once('end', handleStuff.bind(this)); + process.once('error', function(err) { + error = err; + }); + + process.pipe(this, { end: false }); + + return process; +}; + +ZipArchiveOutputStream.prototype._writeCentralDirectoryEnd = function() { + var records = this._entries.length; + var size = this._archive.centralLength; + var offset = this._archive.centralOffset; + + if (this.isZip64()) { + records = constants.ZIP64_MAGIC_SHORT; + size = constants.ZIP64_MAGIC; + offset = constants.ZIP64_MAGIC; + } + + // signature + this.write(zipUtil.getLongBytes(constants.SIG_EOCD)); + + // disk numbers + this.write(constants.SHORT_ZERO); + this.write(constants.SHORT_ZERO); + + // number of entries + this.write(zipUtil.getShortBytes(records)); + this.write(zipUtil.getShortBytes(records)); + + // length and location of CD + this.write(zipUtil.getLongBytes(size)); + this.write(zipUtil.getLongBytes(offset)); + + // archive comment + var comment = this.getComment(); + var commentLength = Buffer.byteLength(comment); + this.write(zipUtil.getShortBytes(commentLength)); + this.write(comment); +}; + +ZipArchiveOutputStream.prototype._writeCentralDirectoryZip64 = function() { + // signature + this.write(zipUtil.getLongBytes(constants.SIG_ZIP64_EOCD)); + + // size of the ZIP64 EOCD record + this.write(zipUtil.getEightBytes(44)); + + // version made by + this.write(zipUtil.getShortBytes(constants.MIN_VERSION_ZIP64)); + + // version to extract + this.write(zipUtil.getShortBytes(constants.MIN_VERSION_ZIP64)); + + // disk numbers + this.write(constants.LONG_ZERO); + this.write(constants.LONG_ZERO); + + // number of entries + this.write(zipUtil.getEightBytes(this._entries.length)); + this.write(zipUtil.getEightBytes(this._entries.length)); + + // length and location of CD + this.write(zipUtil.getEightBytes(this._archive.centralLength)); + this.write(zipUtil.getEightBytes(this._archive.centralOffset)); + + // extensible data sector + // not implemented at this time + + // end of central directory locator + this.write(zipUtil.getLongBytes(constants.SIG_ZIP64_EOCD_LOC)); + + // disk number holding the ZIP64 EOCD record + this.write(constants.LONG_ZERO); + + // relative offset of the ZIP64 EOCD record + this.write(zipUtil.getEightBytes(this._archive.centralOffset + this._archive.centralLength)); + + // total number of disks + this.write(zipUtil.getLongBytes(1)); +}; + +ZipArchiveOutputStream.prototype._writeCentralFileHeader = function(ae) { + var gpb = ae.getGeneralPurposeBit(); + var method = ae.getMethod(); + var offsets = ae._offsets; + + var size = ae.getSize(); + var compressedSize = ae.getCompressedSize(); + + if (ae.isZip64() || offsets.file > constants.ZIP64_MAGIC) { + size = constants.ZIP64_MAGIC; + compressedSize = constants.ZIP64_MAGIC; + + ae.setVersionNeededToExtract(constants.MIN_VERSION_ZIP64); + + var extraBuf = Buffer.concat([ + zipUtil.getShortBytes(constants.ZIP64_EXTRA_ID), + zipUtil.getShortBytes(24), + zipUtil.getEightBytes(ae.getSize()), + zipUtil.getEightBytes(ae.getCompressedSize()), + zipUtil.getEightBytes(offsets.file) + ], 28); + + ae.setExtra(extraBuf); + } + + // signature + this.write(zipUtil.getLongBytes(constants.SIG_CFH)); + + // version made by + this.write(zipUtil.getShortBytes((ae.getPlatform() << 8) | constants.VERSION_MADEBY)); + + // version to extract and general bit flag + this.write(zipUtil.getShortBytes(ae.getVersionNeededToExtract())); + this.write(gpb.encode()); + + // compression method + this.write(zipUtil.getShortBytes(method)); + + // datetime + this.write(zipUtil.getLongBytes(ae.getTimeDos())); + + // crc32 checksum + this.write(zipUtil.getLongBytes(ae.getCrc())); + + // sizes + this.write(zipUtil.getLongBytes(compressedSize)); + this.write(zipUtil.getLongBytes(size)); + + var name = ae.getName(); + var comment = ae.getComment(); + var extra = ae.getCentralDirectoryExtra(); + + if (gpb.usesUTF8ForNames()) { + name = Buffer.from(name); + comment = Buffer.from(comment); + } + + // name length + this.write(zipUtil.getShortBytes(name.length)); + + // extra length + this.write(zipUtil.getShortBytes(extra.length)); + + // comments length + this.write(zipUtil.getShortBytes(comment.length)); + + // disk number start + this.write(constants.SHORT_ZERO); + + // internal attributes + this.write(zipUtil.getShortBytes(ae.getInternalAttributes())); + + // external attributes + this.write(zipUtil.getLongBytes(ae.getExternalAttributes())); + + // relative offset of LFH + if (offsets.file > constants.ZIP64_MAGIC) { + this.write(zipUtil.getLongBytes(constants.ZIP64_MAGIC)); + } else { + this.write(zipUtil.getLongBytes(offsets.file)); + } + + // name + this.write(name); + + // extra + this.write(extra); + + // comment + this.write(comment); +}; + +ZipArchiveOutputStream.prototype._writeDataDescriptor = function(ae) { + // signature + this.write(zipUtil.getLongBytes(constants.SIG_DD)); + + // crc32 checksum + this.write(zipUtil.getLongBytes(ae.getCrc())); + + // sizes + if (ae.isZip64()) { + this.write(zipUtil.getEightBytes(ae.getCompressedSize())); + this.write(zipUtil.getEightBytes(ae.getSize())); + } else { + this.write(zipUtil.getLongBytes(ae.getCompressedSize())); + this.write(zipUtil.getLongBytes(ae.getSize())); + } +}; + +ZipArchiveOutputStream.prototype._writeLocalFileHeader = function(ae) { + var gpb = ae.getGeneralPurposeBit(); + var method = ae.getMethod(); + var name = ae.getName(); + var extra = ae.getLocalFileDataExtra(); + + if (ae.isZip64()) { + gpb.useDataDescriptor(true); + ae.setVersionNeededToExtract(constants.MIN_VERSION_ZIP64); + } + + if (gpb.usesUTF8ForNames()) { + name = Buffer.from(name); + } + + ae._offsets.file = this.offset; + + // signature + this.write(zipUtil.getLongBytes(constants.SIG_LFH)); + + // version to extract and general bit flag + this.write(zipUtil.getShortBytes(ae.getVersionNeededToExtract())); + this.write(gpb.encode()); + + // compression method + this.write(zipUtil.getShortBytes(method)); + + // datetime + this.write(zipUtil.getLongBytes(ae.getTimeDos())); + + ae._offsets.data = this.offset; + + // crc32 checksum and sizes + if (gpb.usesDataDescriptor()) { + this.write(constants.LONG_ZERO); + this.write(constants.LONG_ZERO); + this.write(constants.LONG_ZERO); + } else { + this.write(zipUtil.getLongBytes(ae.getCrc())); + this.write(zipUtil.getLongBytes(ae.getCompressedSize())); + this.write(zipUtil.getLongBytes(ae.getSize())); + } + + // name length + this.write(zipUtil.getShortBytes(name.length)); + + // extra length + this.write(zipUtil.getShortBytes(extra.length)); + + // name + this.write(name); + + // extra + this.write(extra); + + ae._offsets.contents = this.offset; +}; + +ZipArchiveOutputStream.prototype.getComment = function(comment) { + return this._archive.comment !== null ? this._archive.comment : ''; +}; + +ZipArchiveOutputStream.prototype.isZip64 = function() { + return this._archive.forceZip64 || this._entries.length > constants.ZIP64_MAGIC_SHORT || this._archive.centralLength > constants.ZIP64_MAGIC || this._archive.centralOffset > constants.ZIP64_MAGIC; +}; + +ZipArchiveOutputStream.prototype.setComment = function(comment) { + this._archive.comment = comment; +}; + + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/compress-commons.js": +/*!***************************************************************!*\ + !*** ./node_modules/compress-commons/lib/compress-commons.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +module.exports = { + ArchiveEntry: __webpack_require__(/*! ./archivers/archive-entry */ "./node_modules/compress-commons/lib/archivers/archive-entry.js"), + ZipArchiveEntry: __webpack_require__(/*! ./archivers/zip/zip-archive-entry */ "./node_modules/compress-commons/lib/archivers/zip/zip-archive-entry.js"), + ArchiveOutputStream: __webpack_require__(/*! ./archivers/archive-output-stream */ "./node_modules/compress-commons/lib/archivers/archive-output-stream.js"), + ZipArchiveOutputStream: __webpack_require__(/*! ./archivers/zip/zip-archive-output-stream */ "./node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js") +}; + +/***/ }), + +/***/ "./node_modules/compress-commons/lib/util/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/compress-commons/lib/util/index.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * node-compress-commons + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT + */ +var Stream = (__webpack_require__(/*! stream */ "stream").Stream); +var PassThrough = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").PassThrough); + +var util = module.exports = {}; + +util.isStream = function(source) { + return source instanceof Stream; +}; + +util.normalizeInputSource = function(source) { + if (source === null) { + return Buffer.alloc(0); + } else if (typeof source === 'string') { + return Buffer.from(source); + } else if (util.isStream(source) && !source._readableState) { + var normalized = new PassThrough(); + source.pipe(normalized); + + return normalized; + } + + return source; +}; + +/***/ }), + +/***/ "./node_modules/concat-map/index.js": +/*!******************************************!*\ + !*** ./node_modules/concat-map/index.js ***! + \******************************************/ +/***/ ((module) => { + +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + + +/***/ }), + +/***/ "./node_modules/core-util-is/lib/util.js": +/*!***********************************************!*\ + !*** ./node_modules/core-util-is/lib/util.js ***! + \***********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +/***/ }), + +/***/ "./node_modules/crc-32/crc32.js": +/*!**************************************!*\ + !*** ./node_modules/crc-32/crc32.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, exports) => { + +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32; +(function (factory) { + /*jshint ignore:start */ + /*eslint-disable */ + if(typeof DO_NOT_EXPORT_CRC === 'undefined') { + if(true) { + factory(exports); + } else {} + } else { + factory(CRC32 = {}); + } + /*eslint-enable */ + /*jshint ignore:end */ +}(function(CRC32) { +CRC32.version = '1.2.2'; +/*global Int32Array */ +function signed_crc_table() { + var c = 0, table = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr, seed) { + var C = seed ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B, seed) { + var C = seed ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str, seed) { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +// $FlowIgnore +CRC32.bstr = crc32_bstr; +// $FlowIgnore +CRC32.buf = crc32_buf; +// $FlowIgnore +CRC32.str = crc32_str; +})); + + +/***/ }), + +/***/ "./node_modules/crc32-stream/lib/crc32-stream.js": +/*!*******************************************************!*\ + !*** ./node_modules/crc32-stream/lib/crc32-stream.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * node-crc32-stream + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT + */ + + + +const {Transform} = __webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js"); + +const crc32 = __webpack_require__(/*! crc-32 */ "./node_modules/crc-32/crc32.js"); + +class CRC32Stream extends Transform { + constructor(options) { + super(options); + this.checksum = Buffer.allocUnsafe(4); + this.checksum.writeInt32BE(0, 0); + + this.rawSize = 0; + } + + _transform(chunk, encoding, callback) { + if (chunk) { + this.checksum = crc32.buf(chunk, this.checksum) >>> 0; + this.rawSize += chunk.length; + } + + callback(null, chunk); + } + + digest(encoding) { + const checksum = Buffer.allocUnsafe(4); + checksum.writeUInt32BE(this.checksum >>> 0, 0); + return encoding ? checksum.toString(encoding) : checksum; + } + + hex() { + return this.digest('hex').toUpperCase(); + } + + size() { + return this.rawSize; + } +} + +module.exports = CRC32Stream; + + +/***/ }), + +/***/ "./node_modules/crc32-stream/lib/deflate-crc32-stream.js": +/*!***************************************************************!*\ + !*** ./node_modules/crc32-stream/lib/deflate-crc32-stream.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * node-crc32-stream + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT + */ + + + +const {DeflateRaw} = __webpack_require__(/*! zlib */ "zlib"); + +const crc32 = __webpack_require__(/*! crc-32 */ "./node_modules/crc-32/crc32.js"); + +class DeflateCRC32Stream extends DeflateRaw { + constructor(options) { + super(options); + + this.checksum = Buffer.allocUnsafe(4); + this.checksum.writeInt32BE(0, 0); + + this.rawSize = 0; + this.compressedSize = 0; + } + + push(chunk, encoding) { + if (chunk) { + this.compressedSize += chunk.length; + } + + return super.push(chunk, encoding); + } + + _transform(chunk, encoding, callback) { + if (chunk) { + this.checksum = crc32.buf(chunk, this.checksum) >>> 0; + this.rawSize += chunk.length; + } + + super._transform(chunk, encoding, callback) + } + + digest(encoding) { + const checksum = Buffer.allocUnsafe(4); + checksum.writeUInt32BE(this.checksum >>> 0, 0); + return encoding ? checksum.toString(encoding) : checksum; + } + + hex() { + return this.digest('hex').toUpperCase(); + } + + size(compressed = false) { + if (compressed) { + return this.compressedSize; + } else { + return this.rawSize; + } + } +} + +module.exports = DeflateCRC32Stream; + + +/***/ }), + +/***/ "./node_modules/crc32-stream/lib/index.js": +/*!************************************************!*\ + !*** ./node_modules/crc32-stream/lib/index.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * node-crc32-stream + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT + */ + + + +module.exports = { + CRC32Stream: __webpack_require__(/*! ./crc32-stream */ "./node_modules/crc32-stream/lib/crc32-stream.js"), + DeflateCRC32Stream: __webpack_require__(/*! ./deflate-crc32-stream */ "./node_modules/crc32-stream/lib/deflate-crc32-stream.js") +} + + +/***/ }), + +/***/ "./node_modules/end-of-stream/index.js": +/*!*********************************************!*\ + !*** ./node_modules/end-of-stream/index.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var once = __webpack_require__(/*! once */ "./node_modules/once/once.js"); + +var noop = function() {}; + +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; + +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; + +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + + callback = once(callback || noop); + + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; + + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; + + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; + + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; + + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; + + var onerror = function(err) { + callback.call(stream, err); + }; + + var onclose = function() { + process.nextTick(onclosenexttick); + }; + + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; + + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; + + +/***/ }), + +/***/ "./node_modules/fs-constants/index.js": +/*!********************************************!*\ + !*** ./node_modules/fs-constants/index.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = (__webpack_require__(/*! fs */ "fs").constants) || __webpack_require__(/*! constants */ "constants") + + +/***/ }), + +/***/ "./node_modules/fs.realpath/index.js": +/*!*******************************************!*\ + !*** ./node_modules/fs.realpath/index.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = realpath +realpath.realpath = realpath +realpath.sync = realpathSync +realpath.realpathSync = realpathSync +realpath.monkeypatch = monkeypatch +realpath.unmonkeypatch = unmonkeypatch + +var fs = __webpack_require__(/*! fs */ "fs") +var origRealpath = fs.realpath +var origRealpathSync = fs.realpathSync + +var version = process.version +var ok = /^v[0-5]\./.test(version) +var old = __webpack_require__(/*! ./old.js */ "./node_modules/fs.realpath/old.js") + +function newError (er) { + return er && er.syscall === 'realpath' && ( + er.code === 'ELOOP' || + er.code === 'ENOMEM' || + er.code === 'ENAMETOOLONG' + ) +} + +function realpath (p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb) + } + + if (typeof cache === 'function') { + cb = cache + cache = null + } + origRealpath(p, cache, function (er, result) { + if (newError(er)) { + old.realpath(p, cache, cb) + } else { + cb(er, result) + } + }) +} + +function realpathSync (p, cache) { + if (ok) { + return origRealpathSync(p, cache) + } + + try { + return origRealpathSync(p, cache) + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache) + } else { + throw er + } + } +} + +function monkeypatch () { + fs.realpath = realpath + fs.realpathSync = realpathSync +} + +function unmonkeypatch () { + fs.realpath = origRealpath + fs.realpathSync = origRealpathSync +} + + +/***/ }), + +/***/ "./node_modules/fs.realpath/old.js": +/*!*****************************************!*\ + !*** ./node_modules/fs.realpath/old.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var pathModule = __webpack_require__(/*! path */ "path"); +var isWindows = process.platform === 'win32'; +var fs = __webpack_require__(/*! fs */ "fs"); + +// JavaScript implementation of realpath, ported from node pre-v6 + +var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); + +function rethrow() { + // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and + // is fairly slow to generate. + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; + + return callback; + + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } + + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs + else if (!process.noDeprecation) { + var msg = 'fs: missing callback ' + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } +} + +function maybeCallback(cb) { + return typeof cb === 'function' ? cb : rethrow(); +} + +var normalize = pathModule.normalize; + +// Regexp that finds the next partion of a (partial) path +// result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] +if (isWindows) { + var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; +} else { + var nextPartRe = /(.*?)(?:[\/]+|$)/g; +} + +// Regex to find the device root, including trailing slash. E.g. 'c:\\'. +if (isWindows) { + var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; +} else { + var splitRootRe = /^[\/]*/; +} + +exports.realpathSync = function realpathSync(p, cache) { + // make p is absolute + p = pathModule.resolve(p); + + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + + var original = p, + seenLinks = {}, + knownHard = {}; + + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; + + start(); + + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; + + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } + + // walk down the path, swapping out linked pathparts for their real + // values + // NB: p.length changes. + while (pos < p.length) { + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + continue; + } + + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // some known symbolic link. no need to stat again. + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + continue; + } + + // read the link if it wasn't read before + // dev/ino always return 0 on windows, so skip the check. + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + // track this, if given a cache. + if (cache) cache[base] = resolvedLink; + if (!isWindows) seenLinks[id] = linkTarget; + } + + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + + if (cache) cache[original] = p; + + return p; +}; + + +exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== 'function') { + cb = maybeCallback(cache); + cache = null; + } + + // make p is absolute + p = pathModule.resolve(p); + + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } + + var original = p, + seenLinks = {}, + knownHard = {}; + + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; + + start(); + + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; + + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } + + // walk down the path, swapping out linked pathparts for their real + // values + function LOOP() { + // stop if scanned past end of path + if (pos >= p.length) { + if (cache) cache[original] = p; + return cb(null, p); + } + + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + return process.nextTick(LOOP); + } + + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // known symbolic link. no need to stat again. + return gotResolvedLink(cache[base]); + } + + return fs.lstat(base, gotStat); + } + + function gotStat(err, stat) { + if (err) return cb(err); + + // if not a symlink, skip to the next path part + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + return process.nextTick(LOOP); + } + + // stat & read the link if not read before + // call gotTarget as soon as the link target is known + // dev/ino always return 0 on windows, so skip the check. + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err) { + if (err) return cb(err); + + fs.readlink(base, function(err, target) { + if (!isWindows) seenLinks[id] = target; + gotTarget(err, target); + }); + }); + } + + function gotTarget(err, target, base) { + if (err) return cb(err); + + var resolvedLink = pathModule.resolve(previous, target); + if (cache) cache[base] = resolvedLink; + gotResolvedLink(resolvedLink); + } + + function gotResolvedLink(resolvedLink) { + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } +}; + + +/***/ }), + +/***/ "./node_modules/glob/common.js": +/*!*************************************!*\ + !*** ./node_modules/glob/common.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var fs = __webpack_require__(/*! fs */ "fs") +var path = __webpack_require__(/*! path */ "path") +var minimatch = __webpack_require__(/*! minimatch */ "./node_modules/glob/node_modules/minimatch/minimatch.js") +var isAbsolute = __webpack_require__(/*! path-is-absolute */ "./node_modules/path-is-absolute/index.js") +var Minimatch = minimatch.Minimatch + +function alphasort (a, b) { + return a.localeCompare(b, 'en') +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +// ignore patterns are always in dot:true mode. +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern, { dot: true }) + } + + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + self.absolute = !!options.absolute + self.fs = options.fs || fs + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = path.resolve(options.cwd) + self.changedCwd = self.cwd !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + // TODO: is an absolute `cwd` supposed to be resolved against `root`? + // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") + self.nomount = !!options.nomount + + // disable comments and negation in Minimatch. + // Note that they are not supported in Glob itself anyway. + options.nonegate = true + options.nocomment = true + // always treat \ in patterns as escapes, not path separators + options.allowWindowsEscape = false + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + var notDir = !(/\/$/.test(e)) + var c = self.cache[e] || self.cache[makeAbs(self, e)] + if (notDir && c) + notDir = c !== 'DIR' && !Array.isArray(c) + return notDir + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + + if (process.platform === 'win32') + abs = abs.replace(/\\/g, '/') + + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + + +/***/ }), + +/***/ "./node_modules/glob/glob.js": +/*!***********************************!*\ + !*** ./node_modules/glob/glob.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var rp = __webpack_require__(/*! fs.realpath */ "./node_modules/fs.realpath/index.js") +var minimatch = __webpack_require__(/*! minimatch */ "./node_modules/glob/node_modules/minimatch/minimatch.js") +var Minimatch = minimatch.Minimatch +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js") +var EE = (__webpack_require__(/*! events */ "events").EventEmitter) +var path = __webpack_require__(/*! path */ "path") +var assert = __webpack_require__(/*! assert */ "assert") +var isAbsolute = __webpack_require__(/*! path-is-absolute */ "./node_modules/path-is-absolute/index.js") +var globSync = __webpack_require__(/*! ./sync.js */ "./node_modules/glob/sync.js") +var common = __webpack_require__(/*! ./common.js */ "./node_modules/glob/common.js") +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = __webpack_require__(/*! inflight */ "./node_modules/inflight/inflight.js") +var util = __webpack_require__(/*! util */ "util") +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = __webpack_require__(/*! once */ "./node_modules/once/once.js") + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +function extend (origin, add) { + if (add === null || typeof add !== 'object') { + return origin + } + + var keys = Object.keys(add) + var i = keys.length + while (i--) { + origin[keys[i]] = add[keys[i]] + } + return origin +} + +glob.hasMagic = function (pattern, options_) { + var options = extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + + if (!pattern) + return false + + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + this._processing = 0 + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + var sync = true + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + sync = false + + function done () { + --self._processing + if (self._processing <= 0) { + if (sync) { + process.nextTick(function () { + self._finish() + }) + } else { + self._finish() + } + } + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + rp.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = isAbsolute(e) ? e : this._makeAbs(e) + + if (this.mark) + e = this._mark(e) + + if (this.absolute) + e = abs + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + self.fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er && er.code === 'ENOENT') + return cb() + + var isSym = lstat && lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + self.fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + this.emit('error', error) + this.abort() + } + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + self.fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return self.fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) + return cb(null, false, stat) + + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c === 'FILE') + return cb() + + return cb(null, c, stat) +} + + +/***/ }), + +/***/ "./node_modules/glob/node_modules/brace-expansion/index.js": +/*!*****************************************************************!*\ + !*** ./node_modules/glob/node_modules/brace-expansion/index.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var concatMap = __webpack_require__(/*! concat-map */ "./node_modules/concat-map/index.js"); +var balanced = __webpack_require__(/*! balanced-match */ "./node_modules/balanced-match/index.js"); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + + +/***/ }), + +/***/ "./node_modules/glob/node_modules/minimatch/minimatch.js": +/*!***************************************************************!*\ + !*** ./node_modules/glob/node_modules/minimatch/minimatch.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = (function () { try { return __webpack_require__(/*! path */ "path") } catch (e) {}}()) || { + sep: '/' +} +minimatch.sep = path.sep + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = __webpack_require__(/*! brace-expansion */ "./node_modules/glob/node_modules/brace-expansion/index.js") + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + b = b || {} + var t = {} + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + } + + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + } + + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + } + + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + } + + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + } + + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + assertValidPattern(pattern) + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + assertValidPattern(pattern) + + if (!options) options = {} + + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + assertValidPattern(pattern) + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +var MAX_PATTERN_LENGTH = 1024 * 64 +var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + assertValidPattern(pattern) + + var options = this.options + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' + } + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = function match (f, partial) { + if (typeof partial === 'undefined') partial = this.partial + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + hit = f === p + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') + } + + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + + +/***/ }), + +/***/ "./node_modules/glob/sync.js": +/*!***********************************!*\ + !*** ./node_modules/glob/sync.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = globSync +globSync.GlobSync = GlobSync + +var rp = __webpack_require__(/*! fs.realpath */ "./node_modules/fs.realpath/index.js") +var minimatch = __webpack_require__(/*! minimatch */ "./node_modules/glob/node_modules/minimatch/minimatch.js") +var Minimatch = minimatch.Minimatch +var Glob = (__webpack_require__(/*! ./glob.js */ "./node_modules/glob/glob.js").Glob) +var util = __webpack_require__(/*! util */ "util") +var path = __webpack_require__(/*! path */ "path") +var assert = __webpack_require__(/*! assert */ "assert") +var isAbsolute = __webpack_require__(/*! path-is-absolute */ "./node_modules/path-is-absolute/index.js") +var common = __webpack_require__(/*! ./common.js */ "./node_modules/glob/common.js") +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert.ok(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = rp.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert.ok(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + if (isIgnored(this, e)) + return + + var abs = this._makeAbs(e) + + if (this.mark) + e = this._mark(e) + + if (this.absolute) { + e = abs + } + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = this.fs.lstatSync(abs) + } catch (er) { + if (er.code === 'ENOENT') { + // lstat failed, doesn't exist + return null + } + } + + var isSym = lstat && lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, this.fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + throw error + } + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = this.fs.lstatSync(abs) + } catch (er) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return false + } + } + + if (lstat && lstat.isSymbolicLink()) { + try { + stat = this.fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + + this.cache[abs] = this.cache[abs] || c + + if (needDir && c === 'FILE') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + + +/***/ }), + +/***/ "./node_modules/graceful-fs/clone.js": +/*!*******************************************!*\ + !*** ./node_modules/graceful-fs/clone.js ***! + \*******************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} + + +/***/ }), + +/***/ "./node_modules/graceful-fs/graceful-fs.js": +/*!*************************************************!*\ + !*** ./node_modules/graceful-fs/graceful-fs.js ***! + \*************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fs = __webpack_require__(/*! fs */ "fs") +var polyfills = __webpack_require__(/*! ./polyfills.js */ "./node_modules/graceful-fs/polyfills.js") +var legacy = __webpack_require__(/*! ./legacy-streams.js */ "./node_modules/graceful-fs/legacy-streams.js") +var clone = __webpack_require__(/*! ./clone.js */ "./node_modules/graceful-fs/clone.js") + +var util = __webpack_require__(/*! util */ "util") + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __webpack_require__(/*! assert */ "assert").equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} + + +/***/ }), + +/***/ "./node_modules/graceful-fs/legacy-streams.js": +/*!****************************************************!*\ + !*** ./node_modules/graceful-fs/legacy-streams.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Stream = (__webpack_require__(/*! stream */ "stream").Stream) + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} + + +/***/ }), + +/***/ "./node_modules/graceful-fs/polyfills.js": +/*!***********************************************!*\ + !*** ./node_modules/graceful-fs/polyfills.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var constants = __webpack_require__(/*! constants */ "constants") + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} + + +/***/ }), + +/***/ "./node_modules/inflight/inflight.js": +/*!*******************************************!*\ + !*** ./node_modules/inflight/inflight.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wrappy = __webpack_require__(/*! wrappy */ "./node_modules/wrappy/wrappy.js") +var reqs = Object.create(null) +var once = __webpack_require__(/*! once */ "./node_modules/once/once.js") + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + + +/***/ }), + +/***/ "./node_modules/inherits/inherits.js": +/*!*******************************************!*\ + !*** ./node_modules/inherits/inherits.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +try { + var util = __webpack_require__(/*! util */ "util"); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = __webpack_require__(/*! ./inherits_browser.js */ "./node_modules/inherits/inherits_browser.js"); +} + + +/***/ }), + +/***/ "./node_modules/inherits/inherits_browser.js": +/*!***************************************************!*\ + !*** ./node_modules/inherits/inherits_browser.js ***! + \***************************************************/ +/***/ ((module) => { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + + +/***/ }), + +/***/ "./node_modules/isarray/index.js": +/*!***************************************!*\ + !*** ./node_modules/isarray/index.js ***! + \***************************************/ +/***/ ((module) => { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), + +/***/ "./node_modules/lazystream/lib/lazystream.js": +/*!***************************************************!*\ + !*** ./node_modules/lazystream/lib/lazystream.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var util = __webpack_require__(/*! util */ "util"); +var PassThrough = __webpack_require__(/*! readable-stream/passthrough */ "./node_modules/lazystream/node_modules/readable-stream/passthrough.js"); + +module.exports = { + Readable: Readable, + Writable: Writable +}; + +util.inherits(Readable, PassThrough); +util.inherits(Writable, PassThrough); + +// Patch the given method of instance so that the callback +// is executed once, before the actual method is called the +// first time. +function beforeFirstCall(instance, method, callback) { + instance[method] = function() { + delete instance[method]; + callback.apply(this, arguments); + return this[method].apply(this, arguments); + }; +} + +function Readable(fn, options) { + if (!(this instanceof Readable)) + return new Readable(fn, options); + + PassThrough.call(this, options); + + beforeFirstCall(this, '_read', function() { + var source = fn.call(this, options); + var emit = this.emit.bind(this, 'error'); + source.on('error', emit); + source.pipe(this); + }); + + this.emit('readable'); +} + +function Writable(fn, options) { + if (!(this instanceof Writable)) + return new Writable(fn, options); + + PassThrough.call(this, options); + + beforeFirstCall(this, '_write', function() { + var destination = fn.call(this, options); + var emit = this.emit.bind(this, 'error'); + destination.on('error', emit); + this.pipe(destination); + }); + + this.emit('writable'); +} + + + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js": +/*!************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js ***! + \************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +var Readable = __webpack_require__(/*! ./_stream_readable */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_readable.js"); +var Writable = __webpack_require__(/*! ./_stream_writable */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_writable.js"); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_passthrough.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/_stream_passthrough.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + + +module.exports = PassThrough; + +var Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_transform.js"); + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_readable.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/_stream_readable.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +module.exports = Readable; + +/**/ +var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = (__webpack_require__(/*! events */ "events").EventEmitter); + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/lazystream/node_modules/safe-buffer/index.js").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +/**/ +var debugUtil = __webpack_require__(/*! util */ "util"); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/BufferList.js"); +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/destroy.js"); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/lazystream/node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/lazystream/node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_transform.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/_stream_transform.js ***! + \***************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; + +var Duplex = __webpack_require__(/*! ./_stream_duplex */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_writable.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/_stream_writable.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = Object.create(__webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js")); +util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js"); +/**/ + +/**/ +var internalUtil = { + deprecate: __webpack_require__(/*! util-deprecate */ "./node_modules/util-deprecate/node.js") +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/lazystream/node_modules/safe-buffer/index.js").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/destroy.js"); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/BufferList.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/BufferList.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/lazystream/node_modules/safe-buffer/index.js").Buffer); +var util = __webpack_require__(/*! util */ "util"); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/destroy.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/destroy.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/**/ + +var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } + } + + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/stream.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/stream.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! stream */ "stream"); + + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/passthrough.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/passthrough.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./readable */ "./node_modules/lazystream/node_modules/readable-stream/readable.js").PassThrough + + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/readable-stream/readable.js": +/*!**************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/readable-stream/readable.js ***! + \**************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +var Stream = __webpack_require__(/*! stream */ "stream"); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_readable.js"); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_writable.js"); + exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js"); + exports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_transform.js"); + exports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ "./node_modules/lazystream/node_modules/readable-stream/lib/_stream_passthrough.js"); +} + + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/safe-buffer/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/safe-buffer/index.js ***! + \*******************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(/*! buffer */ "buffer") +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ "./node_modules/lazystream/node_modules/string_decoder/lib/string_decoder.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/lazystream/node_modules/string_decoder/lib/string_decoder.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/lazystream/node_modules/safe-buffer/index.js").Buffer); +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), + +/***/ "./node_modules/lodash.defaults/index.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash.defaults/index.js ***! + \***********************************************/ +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * Used by `_.defaults` to customize its `_.assignIn` use. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ +function assignInDefaults(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; +} + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } +} + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); + }; +} + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; +} + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); +}); + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = baseRest(function(args) { + args.push(undefined, assignInDefaults); + return apply(assignInWith, undefined, args); +}); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = defaults; + + +/***/ }), + +/***/ "./node_modules/lodash.difference/index.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash.difference/index.js ***! + \*************************************************/ +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array ? array.length : 0; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array ? array.length : 0, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +/** + * Checks if a cache value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ +function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; +} + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); + }; +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order of result values is determined by the + * order they occur in the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ +var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; +}); + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +module.exports = difference; + + +/***/ }), + +/***/ "./node_modules/lodash.flatten/index.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash.flatten/index.js ***! + \**********************************************/ +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var Symbol = root.Symbol, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array ? array.length : 0; + return length ? baseFlatten(array, 1) : []; +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +module.exports = flatten; + + +/***/ }), + +/***/ "./node_modules/lodash.isplainobject/index.js": +/*!****************************************************!*\ + !*** ./node_modules/lodash.isplainobject/index.js ***! + \****************************************************/ +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || + objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); +} + +module.exports = isPlainObject; + + +/***/ }), + +/***/ "./node_modules/lodash.union/index.js": +/*!********************************************!*\ + !*** ./node_modules/lodash.union/index.js ***! + \********************************************/ +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array ? array.length : 0; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/** + * Checks if a cache value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + Set = getNative(root, 'Set'), + nativeCreate = getNative(Object, 'create'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); + }; +} + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ +var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); +}); + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +module.exports = union; + + +/***/ }), + +/***/ "./node_modules/minimatch/lib/path.js": +/*!********************************************!*\ + !*** ./node_modules/minimatch/lib/path.js ***! + \********************************************/ +/***/ ((module) => { + +const isWindows = typeof process === 'object' && + process && + process.platform === 'win32' +module.exports = isWindows ? { sep: '\\' } : { sep: '/' } + + +/***/ }), + +/***/ "./node_modules/minimatch/minimatch.js": +/*!*********************************************!*\ + !*** ./node_modules/minimatch/minimatch.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const minimatch = module.exports = (p, pattern, options = {}) => { + assertValidPattern(pattern) + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + return new Minimatch(pattern, options).match(p) +} + +module.exports = minimatch + +const path = __webpack_require__(/*! ./lib/path.js */ "./node_modules/minimatch/lib/path.js") +minimatch.sep = path.sep + +const GLOBSTAR = Symbol('globstar **') +minimatch.GLOBSTAR = GLOBSTAR +const expand = __webpack_require__(/*! brace-expansion */ "./node_modules/brace-expansion/index.js") + +const plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +const qmark = '[^/]' + +// * => any number of characters +const star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +const twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +const twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// "abc" -> { a:true, b:true, c:true } +const charSet = s => s.split('').reduce((set, c) => { + set[c] = true + return set +}, {}) + +// characters that need to be escaped in RegExp. +const reSpecials = charSet('().*{}+?[]^$\\!') + +// characters that indicate we have to add the pattern start +const addPatternStartSet = charSet('[.(') + +// normalizes slashes. +const slashSplit = /\/+/ + +minimatch.filter = (pattern, options = {}) => + (p, i, list) => minimatch(p, pattern, options) + +const ext = (a, b = {}) => { + const t = {} + Object.keys(a).forEach(k => t[k] = a[k]) + Object.keys(b).forEach(k => t[k] = b[k]) + return t +} + +minimatch.defaults = def => { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } + + const orig = minimatch + + const m = (p, pattern, options) => orig(p, pattern, ext(def, options)) + m.Minimatch = class Minimatch extends orig.Minimatch { + constructor (pattern, options) { + super(pattern, ext(def, options)) + } + } + m.Minimatch.defaults = options => orig.defaults(ext(def, options)).Minimatch + m.filter = (pattern, options) => orig.filter(pattern, ext(def, options)) + m.defaults = options => orig.defaults(ext(def, options)) + m.makeRe = (pattern, options) => orig.makeRe(pattern, ext(def, options)) + m.braceExpand = (pattern, options) => orig.braceExpand(pattern, ext(def, options)) + m.match = (list, pattern, options) => orig.match(list, pattern, ext(def, options)) + + return m +} + + + + + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = (pattern, options) => braceExpand(pattern, options) + +const braceExpand = (pattern, options = {}) => { + assertValidPattern(pattern) + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +const MAX_PATTERN_LENGTH = 1024 * 64 +const assertValidPattern = pattern => { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +const SUBPARSE = Symbol('subparse') + +minimatch.makeRe = (pattern, options) => + new Minimatch(pattern, options || {}).makeRe() + +minimatch.match = (list, pattern, options = {}) => { + const mm = new Minimatch(pattern, options) + list = list.filter(f => mm.match(f)) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +// replace stuff like \* with * +const globUnescape = s => s.replace(/\\(.)/g, '$1') +const charUnescape = s => s.replace(/\\([^-\]])/g, '$1') +const regExpEscape = s => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +const braExpEscape = s => s.replace(/[[\]\\]/g, '\\$&') + +class Minimatch { + constructor (pattern, options) { + assertValidPattern(pattern) + + if (!options) options = {} + + this.options = options + this.set = [] + this.pattern = pattern + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || + options.allowWindowsEscape === false + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, '/') + } + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial + + // make the set of regexps etc. + this.make() + } + + debug () {} + + make () { + const pattern = this.pattern + const options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + let set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = (...args) => console.error(...args) + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(s => s.split(slashSplit)) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map((s, si, set) => s.map(this.parse, this)) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(s => s.indexOf(false) === -1) + + this.debug(this.pattern, set) + + this.set = set + } + + parseNegate () { + if (this.options.nonegate) return + + const pattern = this.pattern + let negate = false + let negateOffset = 0 + + for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.slice(negateOffset) + this.negate = negate + } + + // set partial to true to test if, for example, + // "/a/b" matches the start of "/*/b/*/d" + // Partial means, if you run out of file before you run + // out of pattern, then that's fine, as long as all + // the parts match. + matchOne (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + hit = f === p + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') + } + + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') + } + + braceExpand () { + return braceExpand(this.pattern, this.options) + } + + parse (pattern, isSub) { + assertValidPattern(pattern) + + const options = this.options + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' + } + if (pattern === '') return '' + + let re = '' + let hasMagic = false + let escaping = false + // ? => one single character + const patternListStack = [] + const negativeLists = [] + let stateChar + let inClass = false + let reClassStart = -1 + let classStart = -1 + let cs + let pl + let sp + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. However, if the pattern + // starts with ., then traversal patterns can match. + let dotTravAllowed = pattern.charAt(0) === '.' + let dotFileAllowed = options.dot || dotTravAllowed + const patternStart = () => + dotTravAllowed + ? '' + : dotFileAllowed + ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' + : '(?!\\.)' + const subPatternStart = (p) => + p.charAt(0) === '.' + ? '' + : options.dot + ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' + : '(?!\\.)' + + + const clearStateChar = () => { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + this.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (let i = 0, c; (i < pattern.length) && (c = pattern.charAt(i)); i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping) { + /* istanbul ignore next - completely not allowed, even escaped. */ + if (c === '/') { + return false + } + + if (reSpecials[c]) { + re += '\\' + } + re += c + escaping = false + continue + } + + switch (c) { + /* istanbul ignore next */ + case '/': { + // Should already be path-split by now. + return false + } + + case '\\': + if (inClass && pattern.charAt(i + 1) === '-') { + re += c + continue + } + + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + this.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': { + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + const plEntry = { + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close, + } + this.debug(this.pattern, '\t', plEntry) + patternListStack.push(plEntry) + // negation is (?:(?!(?:js)(?:))[^/]*) + re += plEntry.open + // next entry starts with a dot maybe? + if (plEntry.start === 0 && plEntry.type !== '!') { + dotTravAllowed = true + re += subPatternStart(pattern.slice(i + 1)) + } + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + } + + case ')': { + const plEntry = patternListStack[patternListStack.length - 1] + if (inClass || !plEntry) { + re += '\\)' + continue + } + patternListStack.pop() + + // closing an extglob + clearStateChar() + hasMagic = true + pl = plEntry + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(Object.assign(pl, { reEnd: re.length })) + } + continue + } + + case '|': { + const plEntry = patternListStack[patternListStack.length - 1] + if (inClass || !plEntry) { + re += '\\|' + continue + } + + clearStateChar() + re += '|' + // next subpattern can start with a dot? + if (plEntry.start === 0 && plEntry.type !== '!') { + dotTravAllowed = true + re += subPatternStart(pattern.slice(i + 1)) + } + continue + } + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + continue + } + + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + braExpEscape(charUnescape(cs)) + ']') + // looks good, finish up the class. + re += c + } catch (er) { + // out of order ranges in JS are errors, but in glob syntax, + // they're just a range that matches nothing. + re = re.substring(0, reClassStart) + '(?:$.)' // match nothing ever + } + hasMagic = true + inClass = false + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (reSpecials[c] && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + break + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.slice(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substring(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + let tail + tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => { + /* istanbul ignore else - should already be done */ + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + const t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + const addPatternStart = addPatternStartSet[re.charAt(0)] + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (let n = negativeLists.length - 1; n > -1; n--) { + const nl = negativeLists[n] + + const nlBefore = re.slice(0, nl.reStart) + const nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + let nlAfter = re.slice(nl.reEnd) + const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + const closeParensBefore = nlBefore.split(')').length + const openParensBefore = nlBefore.split('(').length - closeParensBefore + let cleanAfter = nlAfter + for (let i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\/)' : '' + + re = nlBefore + nlFirst + nlAfter + dollar + nlLast + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart() + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // if it's nocase, and the lcase/uppercase don't match, it's magic + if (options.nocase && !hasMagic) { + hasMagic = pattern.toUpperCase() !== pattern.toLowerCase() + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + const flags = options.nocase ? 'i' : '' + try { + return Object.assign(new RegExp('^' + re + '$', flags), { + _glob: pattern, + _src: re, + }) + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + } + + makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + const set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + const options = this.options + + const twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + const flags = options.nocase ? 'i' : '' + + // coalesce globstars and regexpify non-globstar patterns + // if it's the only item, then we just do one twoStar + // if it's the first, and there are more, prepend (\/|twoStar\/)? to next + // if it's the last, append (\/twoStar|) to previous + // if it's in the middle, append (\/|\/twoStar\/) to previous + // then filter out GLOBSTAR symbols + let re = set.map(pattern => { + pattern = pattern.map(p => + typeof p === 'string' ? regExpEscape(p) + : p === GLOBSTAR ? GLOBSTAR + : p._src + ).reduce((set, p) => { + if (!(set[set.length - 1] === GLOBSTAR && p === GLOBSTAR)) { + set.push(p) + } + return set + }, []) + pattern.forEach((p, i) => { + if (p !== GLOBSTAR || pattern[i-1] === GLOBSTAR) { + return + } + if (i === 0) { + if (pattern.length > 1) { + pattern[i+1] = '(?:\\\/|' + twoStar + '\\\/)?' + pattern[i+1] + } else { + pattern[i] = twoStar + } + } else if (i === pattern.length - 1) { + pattern[i-1] += '(?:\\\/|' + twoStar + ')?' + } else { + pattern[i-1] += '(?:\\\/|\\\/' + twoStar + '\\\/)' + pattern[i+1] + pattern[i+1] = GLOBSTAR + } + }) + return pattern.filter(p => p !== GLOBSTAR).join('/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false + } + return this.regexp + } + + match (f, partial = this.partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + const options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + const set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + let filename + for (let i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (let i = 0; i < set.length; i++) { + const pattern = set[i] + let file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + const hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate + } + + static defaults (def) { + return minimatch.defaults(def).Minimatch + } +} + +minimatch.Minimatch = Minimatch + + +/***/ }), + +/***/ "./node_modules/normalize-path/index.js": +/*!**********************************************!*\ + !*** ./node_modules/normalize-path/index.js ***! + \**********************************************/ +/***/ ((module) => { + +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +module.exports = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } + + if (path === '\\' || path === '/') return '/'; + + var len = path.length; + if (len <= 1) return path; + + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } + + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; + + +/***/ }), + +/***/ "./node_modules/once/once.js": +/*!***********************************!*\ + !*** ./node_modules/once/once.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wrappy = __webpack_require__(/*! wrappy */ "./node_modules/wrappy/wrappy.js") +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + + +/***/ }), + +/***/ "./node_modules/path-is-absolute/index.js": +/*!************************************************!*\ + !*** ./node_modules/path-is-absolute/index.js ***! + \************************************************/ +/***/ ((module) => { + +"use strict"; + + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + + +/***/ }), + +/***/ "./node_modules/process-nextick-args/index.js": +/*!****************************************************!*\ + !*** ./node_modules/process-nextick-args/index.js ***! + \****************************************************/ +/***/ ((module) => { + +"use strict"; + + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + + +/***/ }), + +/***/ "./node_modules/readable-stream/errors.js": +/*!************************************************!*\ + !*** ./node_modules/readable-stream/errors.js ***! + \************************************************/ +/***/ ((module) => { + +"use strict"; + + +const codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error + } + + function getMessage (arg1, arg2, arg3) { + if (typeof message === 'string') { + return message + } else { + return message(arg1, arg2, arg3) + } + } + + class NodeError extends Base { + constructor (arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + + codes[code] = NodeError; +} + +// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` + + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"' +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + let msg; + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`; + } else { + const type = includes(name, '.') ? 'property' : 'argument'; + msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`; + } + + msg += `. Received type ${typeof actual}`; + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented' +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); + +module.exports.codes = codes; + + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/_stream_duplex.js": +/*!************************************************************!*\ + !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; +/**/ + +module.exports = Duplex; +var Readable = __webpack_require__(/*! ./_stream_readable */ "./node_modules/readable-stream/lib/_stream_readable.js"); +var Writable = __webpack_require__(/*! ./_stream_writable */ "./node_modules/readable-stream/lib/_stream_writable.js"); +__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js")(Duplex, Readable); +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +// the no-half-open enforcer +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + process.nextTick(onEndNT, this); +} +function onEndNT(self) { + self.end(); +} +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/_stream_passthrough.js": +/*!*****************************************************************!*\ + !*** ./node_modules/readable-stream/lib/_stream_passthrough.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + + +module.exports = PassThrough; +var Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/readable-stream/lib/_stream_transform.js"); +__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js")(PassThrough, Transform); +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/_stream_readable.js": +/*!**************************************************************!*\ + !*** ./node_modules/readable-stream/lib/_stream_readable.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +module.exports = Readable; + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = (__webpack_require__(/*! events */ "events").EventEmitter); +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +var Buffer = (__webpack_require__(/*! buffer */ "buffer").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ +var debugUtil = __webpack_require__(/*! util */ "util"); +var debug; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + +var BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ "./node_modules/readable-stream/lib/internal/streams/buffer_list.js"); +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/readable-stream/lib/internal/streams/destroy.js"); +var _require = __webpack_require__(/*! ./internal/streams/state */ "./node_modules/readable-stream/lib/internal/streams/state.js"), + getHighWaterMark = _require.getHighWaterMark; +var _require$codes = (__webpack_require__(/*! ../errors */ "./node_modules/readable-stream/errors.js").codes), + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + +// Lazy loaded to improve the startup performance. +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; +__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js")(Readable, Stream); +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; + + // Should .destroy() be called after 'end' (and potentially 'finish') + this.autoDestroy = !!options.autoDestroy; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} +function Readable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); + if (!(this instanceof Readable)) return new Readable(options); + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + + // legacy + this.readable = true; + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + Stream.call(this); +} +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } + + // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + return er; +} +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ "./node_modules/string_decoder/lib/string_decoder.js").StringDecoder); + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + // If setEncoding(null), decoder.encoding equals utf8 + this._readableState.encoding = this._readableState.decoder.encoding; + + // Iterate over current buffer to convert already stored Buffers: + var p = this._readableState.buffer.head; + var content = ''; + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + this._readableState.buffer.clear(); + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; + +// Don't raise the hwm > 1GB +var MAX_HWM = 0x40000000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + if (ret !== null) this.emit('data', ret); + return ret; +}; +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } + + // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + return dest; +}; +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; + + // Try start flowing on next tick if stream isn't explicitly paused + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res; +}; +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res; +}; +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; + + // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + state.flowing = !state.readableListening; + resume(this, state); + } + state.paused = false; + return this; +}; +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} +function resume_(stream, state) { + debug('resume', state.reading); + if (!state.reading) { + stream.read(0); + } + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + this._readableState.paused = true; + return this; +}; +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null); +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + return this; +}; +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ "./node_modules/readable-stream/lib/internal/streams/async_iterator.js"); + } + return createReadableStreamAsyncIterator(this); + }; +} +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); + + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = __webpack_require__(/*! ./internal/streams/from */ "./node_modules/readable-stream/lib/internal/streams/from.js"); + } + return from(Readable, iterable, opts); + }; +} +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/_stream_transform.js": +/*!***************************************************************!*\ + !*** ./node_modules/readable-stream/lib/_stream_transform.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; +var _require$codes = (__webpack_require__(/*! ../errors */ "./node_modules/readable-stream/errors.js").codes), + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; +var Duplex = __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); +__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js")(Transform, Duplex); +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + ts.writechunk = null; + ts.writecb = null; + if (data != null) + // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} +function prefinish() { + var _this = this; + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) + // single equals check for both `null` and `undefined` + stream.push(data); + + // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/_stream_writable.js": +/*!**************************************************************!*\ + !*** ./node_modules/readable-stream/lib/_stream_writable.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var internalUtil = { + deprecate: __webpack_require__(/*! util-deprecate */ "./node_modules/util-deprecate/node.js") +}; +/**/ + +/**/ +var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/readable-stream/lib/internal/streams/stream.js"); +/**/ + +var Buffer = (__webpack_require__(/*! buffer */ "buffer").Buffer); +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/readable-stream/lib/internal/streams/destroy.js"); +var _require = __webpack_require__(/*! ./internal/streams/state */ "./node_modules/readable-stream/lib/internal/streams/state.js"), + getHighWaterMark = _require.getHighWaterMark; +var _require$codes = (__webpack_require__(/*! ../errors */ "./node_modules/readable-stream/errors.js").codes), + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; +var errorOrDestroy = destroyImpl.errorOrDestroy; +__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js")(Writable, Stream); +function nop() {} +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; + + // Should .destroy() be called after 'finish' (and potentially 'end') + this.autoDestroy = !!options.autoDestroy; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} +function Writable(options) { + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); + + // legacy. + this.writable = true; + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); + // TODO: defer error events consistently everywhere, not just the cb + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var er; + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + return true; +} +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; +Writable.prototype.cork = function () { + this._writableState.corked++; +}; +Writable.prototype.uncork = function () { + var state = this._writableState; + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + return ret; +} +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + if (entry === null) state.lastBufferedRequest = null; + } + state.bufferedRequest = entry; + state.bufferProcessing = false; +} +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; +Writable.prototype._writev = null; +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); + return this; +}; +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + errorOrDestroy(stream, err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + return need; +} +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/async_iterator.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/async_iterator.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _Object$setPrototypeO; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +var finished = __webpack_require__(/*! ./end-of-stream */ "./node_modules/readable-stream/lib/internal/streams/end-of-stream.js"); +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + if (resolve !== null) { + var data = iter[kStream].read(); + // we defer if data is null + // we can be expecting either 'end' or + // 'error' + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + next: function next() { + var _this = this; + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + if (error !== null) { + return Promise.reject(error); + } + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } + + // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + var lastPromise = this[kLastPromise]; + var promise; + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + promise = new Promise(this[kHandlePromise]); + } + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; + // reject if we are waiting for data in the Promise + // returned by next() and store the error + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + iterator[kError] = err; + return; + } + var resolve = iterator[kLastResolve]; + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; +module.exports = createReadableStreamAsyncIterator; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/buffer_list.js": +/*!**************************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/buffer_list.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +var _require = __webpack_require__(/*! buffer */ "buffer"), + Buffer = _require.Buffer; +var _require2 = __webpack_require__(/*! util */ "util"), + inspect = _require2.inspect; +var custom = inspect && inspect.custom || 'inspect'; +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} +module.exports = /*#__PURE__*/function () { + function BufferList() { + _classCallCheck(this, BufferList); + this.head = null; + this.tail = null; + this.length = 0; + } + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + } + + // Consumes a specified amount of bytes or characters from the buffered data. + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } + + // Consumes a specified amount of characters from the buffered data. + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + + // Consumes a specified amount of bytes from the buffered data. + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + + // Make sure the linked list only shows the minimal necessary information. + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + return BufferList; +}(); + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/destroy.js": +/*!**********************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/destroy.js ***! + \**********************************************************************/ +/***/ ((module) => { + +"use strict"; + + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + return this; +} +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} +function emitErrorNT(self, err) { + self.emit('error', err); +} +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/end-of-stream.js": +/*!****************************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/end-of-stream.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). + + + +var ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(/*! ../../../errors */ "./node_modules/readable-stream/errors.js").codes).ERR_STREAM_PREMATURE_CLOSE; +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + callback.apply(this, args); + }; +} +function noop() {} +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + var writableEnded = stream._writableState && stream._writableState.finished; + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + var readableEnded = stream._readableState && stream._readableState.endEmitted; + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + var onerror = function onerror(err) { + callback.call(stream, err); + }; + var onclose = function onclose() { + var err; + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} +module.exports = eos; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/from.js": +/*!*******************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/from.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +var ERR_INVALID_ARG_TYPE = (__webpack_require__(/*! ../../../errors */ "./node_modules/readable-stream/errors.js").codes).ERR_INVALID_ARG_TYPE; +function from(Readable, iterable, opts) { + var iterator; + if (iterable && typeof iterable.next === 'function') { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); + // Reading boolean to protect against _read + // being called before last iteration completion. + var reading = false; + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + function next() { + return _next2.apply(this, arguments); + } + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _yield$iterator$next = yield iterator.next(), + value = _yield$iterator$next.value, + done = _yield$iterator$next.done; + if (done) { + readable.push(null); + } else if (readable.push(yield value)) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + return readable; +} +module.exports = from; + + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/pipeline.js": +/*!***********************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/pipeline.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). + + + +var eos; +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} +var _require$codes = (__webpack_require__(/*! ../../../errors */ "./node_modules/readable-stream/errors.js").codes), + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ "./node_modules/readable-stream/lib/internal/streams/end-of-stream.js"); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; + + // request.destroy just do .end - .abort is what we want + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} +function call(fn) { + fn(); +} +function pipe(from, to) { + return from.pipe(to); +} +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} +module.exports = pipeline; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/state.js": +/*!********************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/state.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var ERR_INVALID_OPT_VALUE = (__webpack_require__(/*! ../../../errors */ "./node_modules/readable-stream/errors.js").codes).ERR_INVALID_OPT_VALUE; +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + return Math.floor(hwm); + } + + // Default value + return state.objectMode ? 16 : 16 * 1024; +} +module.exports = { + getHighWaterMark: getHighWaterMark +}; + +/***/ }), + +/***/ "./node_modules/readable-stream/lib/internal/streams/stream.js": +/*!*********************************************************************!*\ + !*** ./node_modules/readable-stream/lib/internal/streams/stream.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! stream */ "stream"); + + +/***/ }), + +/***/ "./node_modules/readable-stream/readable.js": +/*!**************************************************!*\ + !*** ./node_modules/readable-stream/readable.js ***! + \**************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +var Stream = __webpack_require__(/*! stream */ "stream"); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream.Readable; + Object.assign(module.exports, Stream); + module.exports.Stream = Stream; +} else { + exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ "./node_modules/readable-stream/lib/_stream_readable.js"); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/readable-stream/lib/_stream_writable.js"); + exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/readable-stream/lib/_stream_duplex.js"); + exports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ "./node_modules/readable-stream/lib/_stream_transform.js"); + exports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ "./node_modules/readable-stream/lib/_stream_passthrough.js"); + exports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ "./node_modules/readable-stream/lib/internal/streams/end-of-stream.js"); + exports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ "./node_modules/readable-stream/lib/internal/streams/pipeline.js"); +} + + +/***/ }), + +/***/ "./node_modules/readdir-glob/index.js": +/*!********************************************!*\ + !*** ./node_modules/readdir-glob/index.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = readdirGlob; + +const fs = __webpack_require__(/*! fs */ "fs"); +const { EventEmitter } = __webpack_require__(/*! events */ "events"); +const { Minimatch } = __webpack_require__(/*! minimatch */ "./node_modules/minimatch/minimatch.js"); +const { resolve } = __webpack_require__(/*! path */ "path"); + +function readdir(dir, strict) { + return new Promise((resolve, reject) => { + fs.readdir(dir, {withFileTypes: true} ,(err, files) => { + if(err) { + switch (err.code) { + case 'ENOTDIR': // Not a directory + if(strict) { + reject(err); + } else { + resolve([]); + } + break; + case 'ENOTSUP': // Operation not supported + case 'ENOENT': // No such file or directory + case 'ENAMETOOLONG': // Filename too long + case 'UNKNOWN': + resolve([]); + break; + case 'ELOOP': // Too many levels of symbolic links + default: + reject(err); + break; + } + } else { + resolve(files); + } + }); + }); +} +function stat(file, followSymlinks) { + return new Promise((resolve, reject) => { + const statFunc = followSymlinks ? fs.stat : fs.lstat; + statFunc(file, (err, stats) => { + if(err) { + switch (err.code) { + case 'ENOENT': + if(followSymlinks) { + // Fallback to lstat to handle broken links as files + resolve(stat(file, false)); + } else { + resolve(null); + } + break; + default: + resolve(null); + break; + } + } else { + resolve(stats); + } + }); + }); +} + +async function* exploreWalkAsync(dir, path, followSymlinks, useStat, shouldSkip, strict) { + let files = await readdir(path + dir, strict); + for(const file of files) { + let name = file.name; + if(name === undefined) { + // undefined file.name means the `withFileTypes` options is not supported by node + // we have to call the stat function to know if file is directory or not. + name = file; + useStat = true; + } + const filename = dir + '/' + name; + const relative = filename.slice(1); // Remove the leading / + const absolute = path + '/' + relative; + let stats = null; + if(useStat || followSymlinks) { + stats = await stat(absolute, followSymlinks); + } + if(!stats && file.name !== undefined) { + stats = file; + } + if(stats === null) { + stats = { isDirectory: () => false }; + } + + if(stats.isDirectory()) { + if(!shouldSkip(relative)) { + yield {relative, absolute, stats}; + yield* exploreWalkAsync(filename, path, followSymlinks, useStat, shouldSkip, false); + } + } else { + yield {relative, absolute, stats}; + } + } +} +async function* explore(path, followSymlinks, useStat, shouldSkip) { + yield* exploreWalkAsync('', path, followSymlinks, useStat, shouldSkip, true); +} + + +function readOptions(options) { + return { + pattern: options.pattern, + dot: !!options.dot, + noglobstar: !!options.noglobstar, + matchBase: !!options.matchBase, + nocase: !!options.nocase, + ignore: options.ignore, + skip: options.skip, + + follow: !!options.follow, + stat: !!options.stat, + nodir: !!options.nodir, + mark: !!options.mark, + silent: !!options.silent, + absolute: !!options.absolute + }; +} + +class ReaddirGlob extends EventEmitter { + constructor(cwd, options, cb) { + super(); + if(typeof options === 'function') { + cb = options; + options = null; + } + + this.options = readOptions(options || {}); + + this.matchers = []; + if(this.options.pattern) { + const matchers = Array.isArray(this.options.pattern) ? this.options.pattern : [this.options.pattern]; + this.matchers = matchers.map( m => + new Minimatch(m, { + dot: this.options.dot, + noglobstar:this.options.noglobstar, + matchBase:this.options.matchBase, + nocase:this.options.nocase + }) + ); + } + + this.ignoreMatchers = []; + if(this.options.ignore) { + const ignorePatterns = Array.isArray(this.options.ignore) ? this.options.ignore : [this.options.ignore]; + this.ignoreMatchers = ignorePatterns.map( ignore => + new Minimatch(ignore, {dot: true}) + ); + } + + this.skipMatchers = []; + if(this.options.skip) { + const skipPatterns = Array.isArray(this.options.skip) ? this.options.skip : [this.options.skip]; + this.skipMatchers = skipPatterns.map( skip => + new Minimatch(skip, {dot: true}) + ); + } + + this.iterator = explore(resolve(cwd || '.'), this.options.follow, this.options.stat, this._shouldSkipDirectory.bind(this)); + this.paused = false; + this.inactive = false; + this.aborted = false; + + if(cb) { + this._matches = []; + this.on('match', match => this._matches.push(this.options.absolute ? match.absolute : match.relative)); + this.on('error', err => cb(err)); + this.on('end', () => cb(null, this._matches)); + } + + setTimeout( () => this._next(), 0); + } + + _shouldSkipDirectory(relative) { + //console.log(relative, this.skipMatchers.some(m => m.match(relative))); + return this.skipMatchers.some(m => m.match(relative)); + } + + _fileMatches(relative, isDirectory) { + const file = relative + (isDirectory ? '/' : ''); + return (this.matchers.length === 0 || this.matchers.some(m => m.match(file))) + && !this.ignoreMatchers.some(m => m.match(file)) + && (!this.options.nodir || !isDirectory); + } + + _next() { + if(!this.paused && !this.aborted) { + this.iterator.next() + .then((obj)=> { + if(!obj.done) { + const isDirectory = obj.value.stats.isDirectory(); + if(this._fileMatches(obj.value.relative, isDirectory )) { + let relative = obj.value.relative; + let absolute = obj.value.absolute; + if(this.options.mark && isDirectory) { + relative += '/'; + absolute += '/'; + } + if(this.options.stat) { + this.emit('match', {relative, absolute, stat:obj.value.stats}); + } else { + this.emit('match', {relative, absolute}); + } + } + this._next(this.iterator); + } else { + this.emit('end'); + } + }) + .catch((err) => { + this.abort(); + this.emit('error', err); + if(!err.code && !this.options.silent) { + console.error(err); + } + }); + } else { + this.inactive = true; + } + } + + abort() { + this.aborted = true; + } + + pause() { + this.paused = true; + } + + resume() { + this.paused = false; + if(this.inactive) { + this.inactive = false; + this._next(); + } + } +} + + +function readdirGlob(pattern, options, cb) { + return new ReaddirGlob(pattern, options, cb); +} +readdirGlob.ReaddirGlob = ReaddirGlob; + +/***/ }), + +/***/ "./node_modules/safe-buffer/index.js": +/*!*******************************************!*\ + !*** ./node_modules/safe-buffer/index.js ***! + \*******************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(/*! buffer */ "buffer") +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ "./node_modules/string_decoder/lib/string_decoder.js": +/*!***********************************************************!*\ + !*** ./node_modules/string_decoder/lib/string_decoder.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer); +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), + +/***/ "./node_modules/tar-stream/extract.js": +/*!********************************************!*\ + !*** ./node_modules/tar-stream/extract.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var util = __webpack_require__(/*! util */ "util") +var bl = __webpack_require__(/*! bl */ "./node_modules/bl/bl.js") +var headers = __webpack_require__(/*! ./headers */ "./node_modules/tar-stream/headers.js") + +var Writable = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Writable) +var PassThrough = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").PassThrough) + +var noop = function () {} + +var overflow = function (size) { + size &= 511 + return size && 512 - size +} + +var emptyStream = function (self, offset) { + var s = new Source(self, offset) + s.end() + return s +} + +var mixinPax = function (header, pax) { + if (pax.path) header.name = pax.path + if (pax.linkpath) header.linkname = pax.linkpath + if (pax.size) header.size = parseInt(pax.size, 10) + header.pax = pax + return header +} + +var Source = function (self, offset) { + this._parent = self + this.offset = offset + PassThrough.call(this, { autoDestroy: false }) +} + +util.inherits(Source, PassThrough) + +Source.prototype.destroy = function (err) { + this._parent.destroy(err) +} + +var Extract = function (opts) { + if (!(this instanceof Extract)) return new Extract(opts) + Writable.call(this, opts) + + opts = opts || {} + + this._offset = 0 + this._buffer = bl() + this._missing = 0 + this._partial = false + this._onparse = noop + this._header = null + this._stream = null + this._overflow = null + this._cb = null + this._locked = false + this._destroyed = false + this._pax = null + this._paxGlobal = null + this._gnuLongPath = null + this._gnuLongLinkPath = null + + var self = this + var b = self._buffer + + var oncontinue = function () { + self._continue() + } + + var onunlock = function (err) { + self._locked = false + if (err) return self.destroy(err) + if (!self._stream) oncontinue() + } + + var onstreamend = function () { + self._stream = null + var drain = overflow(self._header.size) + if (drain) self._parse(drain, ondrain) + else self._parse(512, onheader) + if (!self._locked) oncontinue() + } + + var ondrain = function () { + self._buffer.consume(overflow(self._header.size)) + self._parse(512, onheader) + oncontinue() + } + + var onpaxglobalheader = function () { + var size = self._header.size + self._paxGlobal = headers.decodePax(b.slice(0, size)) + b.consume(size) + onstreamend() + } + + var onpaxheader = function () { + var size = self._header.size + self._pax = headers.decodePax(b.slice(0, size)) + if (self._paxGlobal) self._pax = Object.assign({}, self._paxGlobal, self._pax) + b.consume(size) + onstreamend() + } + + var ongnulongpath = function () { + var size = self._header.size + this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding) + b.consume(size) + onstreamend() + } + + var ongnulonglinkpath = function () { + var size = self._header.size + this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding) + b.consume(size) + onstreamend() + } + + var onheader = function () { + var offset = self._offset + var header + try { + header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding, opts.allowUnknownFormat) + } catch (err) { + self.emit('error', err) + } + b.consume(512) + + if (!header) { + self._parse(512, onheader) + oncontinue() + return + } + if (header.type === 'gnu-long-path') { + self._parse(header.size, ongnulongpath) + oncontinue() + return + } + if (header.type === 'gnu-long-link-path') { + self._parse(header.size, ongnulonglinkpath) + oncontinue() + return + } + if (header.type === 'pax-global-header') { + self._parse(header.size, onpaxglobalheader) + oncontinue() + return + } + if (header.type === 'pax-header') { + self._parse(header.size, onpaxheader) + oncontinue() + return + } + + if (self._gnuLongPath) { + header.name = self._gnuLongPath + self._gnuLongPath = null + } + + if (self._gnuLongLinkPath) { + header.linkname = self._gnuLongLinkPath + self._gnuLongLinkPath = null + } + + if (self._pax) { + self._header = header = mixinPax(header, self._pax) + self._pax = null + } + + self._locked = true + + if (!header.size || header.type === 'directory') { + self._parse(512, onheader) + self.emit('entry', header, emptyStream(self, offset), onunlock) + return + } + + self._stream = new Source(self, offset) + + self.emit('entry', header, self._stream, onunlock) + self._parse(header.size, onstreamend) + oncontinue() + } + + this._onheader = onheader + this._parse(512, onheader) +} + +util.inherits(Extract, Writable) + +Extract.prototype.destroy = function (err) { + if (this._destroyed) return + this._destroyed = true + + if (err) this.emit('error', err) + this.emit('close') + if (this._stream) this._stream.emit('close') +} + +Extract.prototype._parse = function (size, onparse) { + if (this._destroyed) return + this._offset += size + this._missing = size + if (onparse === this._onheader) this._partial = false + this._onparse = onparse +} + +Extract.prototype._continue = function () { + if (this._destroyed) return + var cb = this._cb + this._cb = noop + if (this._overflow) this._write(this._overflow, undefined, cb) + else cb() +} + +Extract.prototype._write = function (data, enc, cb) { + if (this._destroyed) return + + var s = this._stream + var b = this._buffer + var missing = this._missing + if (data.length) this._partial = true + + // we do not reach end-of-chunk now. just forward it + + if (data.length < missing) { + this._missing -= data.length + this._overflow = null + if (s) return s.write(data, cb) + b.append(data) + return cb() + } + + // end-of-chunk. the parser should call cb. + + this._cb = cb + this._missing = 0 + + var overflow = null + if (data.length > missing) { + overflow = data.slice(missing) + data = data.slice(0, missing) + } + + if (s) s.end(data) + else b.append(data) + + this._overflow = overflow + this._onparse() +} + +Extract.prototype._final = function (cb) { + if (this._partial) return this.destroy(new Error('Unexpected end of data')) + cb() +} + +module.exports = Extract + + +/***/ }), + +/***/ "./node_modules/tar-stream/headers.js": +/*!********************************************!*\ + !*** ./node_modules/tar-stream/headers.js ***! + \********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +var alloc = Buffer.alloc + +var ZEROS = '0000000000000000000' +var SEVENS = '7777777777777777777' +var ZERO_OFFSET = '0'.charCodeAt(0) +var USTAR_MAGIC = Buffer.from('ustar\x00', 'binary') +var USTAR_VER = Buffer.from('00', 'binary') +var GNU_MAGIC = Buffer.from('ustar\x20', 'binary') +var GNU_VER = Buffer.from('\x20\x00', 'binary') +var MASK = parseInt('7777', 8) +var MAGIC_OFFSET = 257 +var VERSION_OFFSET = 263 + +var clamp = function (index, len, defaultValue) { + if (typeof index !== 'number') return defaultValue + index = ~~index // Coerce to integer. + if (index >= len) return len + if (index >= 0) return index + index += len + if (index >= 0) return index + return 0 +} + +var toType = function (flag) { + switch (flag) { + case 0: + return 'file' + case 1: + return 'link' + case 2: + return 'symlink' + case 3: + return 'character-device' + case 4: + return 'block-device' + case 5: + return 'directory' + case 6: + return 'fifo' + case 7: + return 'contiguous-file' + case 72: + return 'pax-header' + case 55: + return 'pax-global-header' + case 27: + return 'gnu-long-link-path' + case 28: + case 30: + return 'gnu-long-path' + } + + return null +} + +var toTypeflag = function (flag) { + switch (flag) { + case 'file': + return 0 + case 'link': + return 1 + case 'symlink': + return 2 + case 'character-device': + return 3 + case 'block-device': + return 4 + case 'directory': + return 5 + case 'fifo': + return 6 + case 'contiguous-file': + return 7 + case 'pax-header': + return 72 + } + + return 0 +} + +var indexOf = function (block, num, offset, end) { + for (; offset < end; offset++) { + if (block[offset] === num) return offset + } + return end +} + +var cksum = function (block) { + var sum = 8 * 32 + for (var i = 0; i < 148; i++) sum += block[i] + for (var j = 156; j < 512; j++) sum += block[j] + return sum +} + +var encodeOct = function (val, n) { + val = val.toString(8) + if (val.length > n) return SEVENS.slice(0, n) + ' ' + else return ZEROS.slice(0, n - val.length) + val + ' ' +} + +/* Copied from the node-tar repo and modified to meet + * tar-stream coding standard. + * + * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349 + */ +function parse256 (buf) { + // first byte MUST be either 80 or FF + // 80 for positive, FF for 2's comp + var positive + if (buf[0] === 0x80) positive = true + else if (buf[0] === 0xFF) positive = false + else return null + + // build up a base-256 tuple from the least sig to the highest + var tuple = [] + for (var i = buf.length - 1; i > 0; i--) { + var byte = buf[i] + if (positive) tuple.push(byte) + else tuple.push(0xFF - byte) + } + + var sum = 0 + var l = tuple.length + for (i = 0; i < l; i++) { + sum += tuple[i] * Math.pow(256, i) + } + + return positive ? sum : -1 * sum +} + +var decodeOct = function (val, offset, length) { + val = val.slice(offset, offset + length) + offset = 0 + + // If prefixed with 0x80 then parse as a base-256 integer + if (val[offset] & 0x80) { + return parse256(val) + } else { + // Older versions of tar can prefix with spaces + while (offset < val.length && val[offset] === 32) offset++ + var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length) + while (offset < end && val[offset] === 0) offset++ + if (end === offset) return 0 + return parseInt(val.slice(offset, end).toString(), 8) + } +} + +var decodeStr = function (val, offset, length, encoding) { + return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding) +} + +var addLength = function (str) { + var len = Buffer.byteLength(str) + var digits = Math.floor(Math.log(len) / Math.log(10)) + 1 + if (len + digits >= Math.pow(10, digits)) digits++ + + return (len + digits) + str +} + +exports.decodeLongPath = function (buf, encoding) { + return decodeStr(buf, 0, buf.length, encoding) +} + +exports.encodePax = function (opts) { // TODO: encode more stuff in pax + var result = '' + if (opts.name) result += addLength(' path=' + opts.name + '\n') + if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\n') + var pax = opts.pax + if (pax) { + for (var key in pax) { + result += addLength(' ' + key + '=' + pax[key] + '\n') + } + } + return Buffer.from(result) +} + +exports.decodePax = function (buf) { + var result = {} + + while (buf.length) { + var i = 0 + while (i < buf.length && buf[i] !== 32) i++ + var len = parseInt(buf.slice(0, i).toString(), 10) + if (!len) return result + + var b = buf.slice(i + 1, len - 1).toString() + var keyIndex = b.indexOf('=') + if (keyIndex === -1) return result + result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1) + + buf = buf.slice(len) + } + + return result +} + +exports.encode = function (opts) { + var buf = alloc(512) + var name = opts.name + var prefix = '' + + if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/' + if (Buffer.byteLength(name) !== name.length) return null // utf-8 + + while (Buffer.byteLength(name) > 100) { + var i = name.indexOf('/') + if (i === -1) return null + prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i) + name = name.slice(i + 1) + } + + if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null + if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null + + buf.write(name) + buf.write(encodeOct(opts.mode & MASK, 6), 100) + buf.write(encodeOct(opts.uid, 6), 108) + buf.write(encodeOct(opts.gid, 6), 116) + buf.write(encodeOct(opts.size, 11), 124) + buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136) + + buf[156] = ZERO_OFFSET + toTypeflag(opts.type) + + if (opts.linkname) buf.write(opts.linkname, 157) + + USTAR_MAGIC.copy(buf, MAGIC_OFFSET) + USTAR_VER.copy(buf, VERSION_OFFSET) + if (opts.uname) buf.write(opts.uname, 265) + if (opts.gname) buf.write(opts.gname, 297) + buf.write(encodeOct(opts.devmajor || 0, 6), 329) + buf.write(encodeOct(opts.devminor || 0, 6), 337) + + if (prefix) buf.write(prefix, 345) + + buf.write(encodeOct(cksum(buf), 6), 148) + + return buf +} + +exports.decode = function (buf, filenameEncoding, allowUnknownFormat) { + var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET + + var name = decodeStr(buf, 0, 100, filenameEncoding) + var mode = decodeOct(buf, 100, 8) + var uid = decodeOct(buf, 108, 8) + var gid = decodeOct(buf, 116, 8) + var size = decodeOct(buf, 124, 12) + var mtime = decodeOct(buf, 136, 12) + var type = toType(typeflag) + var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding) + var uname = decodeStr(buf, 265, 32) + var gname = decodeStr(buf, 297, 32) + var devmajor = decodeOct(buf, 329, 8) + var devminor = decodeOct(buf, 337, 8) + + var c = cksum(buf) + + // checksum is still initial value if header was null. + if (c === 8 * 32) return null + + // valid checksum + if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?') + + if (USTAR_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0) { + // ustar (posix) format. + // prepend prefix, if present. + if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name + } else if (GNU_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0 && + GNU_VER.compare(buf, VERSION_OFFSET, VERSION_OFFSET + 2) === 0) { + // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and + // multi-volume tarballs. + } else { + if (!allowUnknownFormat) { + throw new Error('Invalid tar header: unknown format.') + } + } + + // to support old tar versions that use trailing / to indicate dirs + if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5 + + return { + name, + mode, + uid, + gid, + size, + mtime: new Date(1000 * mtime), + type, + linkname, + uname, + gname, + devmajor, + devminor + } +} + + +/***/ }), + +/***/ "./node_modules/tar-stream/index.js": +/*!******************************************!*\ + !*** ./node_modules/tar-stream/index.js ***! + \******************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +exports.extract = __webpack_require__(/*! ./extract */ "./node_modules/tar-stream/extract.js") +exports.pack = __webpack_require__(/*! ./pack */ "./node_modules/tar-stream/pack.js") + + +/***/ }), + +/***/ "./node_modules/tar-stream/pack.js": +/*!*****************************************!*\ + !*** ./node_modules/tar-stream/pack.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var constants = __webpack_require__(/*! fs-constants */ "./node_modules/fs-constants/index.js") +var eos = __webpack_require__(/*! end-of-stream */ "./node_modules/end-of-stream/index.js") +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits.js") +var alloc = Buffer.alloc + +var Readable = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Readable) +var Writable = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").Writable) +var StringDecoder = (__webpack_require__(/*! string_decoder */ "string_decoder").StringDecoder) + +var headers = __webpack_require__(/*! ./headers */ "./node_modules/tar-stream/headers.js") + +var DMODE = parseInt('755', 8) +var FMODE = parseInt('644', 8) + +var END_OF_TAR = alloc(1024) + +var noop = function () {} + +var overflow = function (self, size) { + size &= 511 + if (size) self.push(END_OF_TAR.slice(0, 512 - size)) +} + +function modeToType (mode) { + switch (mode & constants.S_IFMT) { + case constants.S_IFBLK: return 'block-device' + case constants.S_IFCHR: return 'character-device' + case constants.S_IFDIR: return 'directory' + case constants.S_IFIFO: return 'fifo' + case constants.S_IFLNK: return 'symlink' + } + + return 'file' +} + +var Sink = function (to) { + Writable.call(this) + this.written = 0 + this._to = to + this._destroyed = false +} + +inherits(Sink, Writable) + +Sink.prototype._write = function (data, enc, cb) { + this.written += data.length + if (this._to.push(data)) return cb() + this._to._drain = cb +} + +Sink.prototype.destroy = function () { + if (this._destroyed) return + this._destroyed = true + this.emit('close') +} + +var LinkSink = function () { + Writable.call(this) + this.linkname = '' + this._decoder = new StringDecoder('utf-8') + this._destroyed = false +} + +inherits(LinkSink, Writable) + +LinkSink.prototype._write = function (data, enc, cb) { + this.linkname += this._decoder.write(data) + cb() +} + +LinkSink.prototype.destroy = function () { + if (this._destroyed) return + this._destroyed = true + this.emit('close') +} + +var Void = function () { + Writable.call(this) + this._destroyed = false +} + +inherits(Void, Writable) + +Void.prototype._write = function (data, enc, cb) { + cb(new Error('No body allowed for this entry')) +} + +Void.prototype.destroy = function () { + if (this._destroyed) return + this._destroyed = true + this.emit('close') +} + +var Pack = function (opts) { + if (!(this instanceof Pack)) return new Pack(opts) + Readable.call(this, opts) + + this._drain = noop + this._finalized = false + this._finalizing = false + this._destroyed = false + this._stream = null +} + +inherits(Pack, Readable) + +Pack.prototype.entry = function (header, buffer, callback) { + if (this._stream) throw new Error('already piping an entry') + if (this._finalized || this._destroyed) return + + if (typeof buffer === 'function') { + callback = buffer + buffer = null + } + + if (!callback) callback = noop + + var self = this + + if (!header.size || header.type === 'symlink') header.size = 0 + if (!header.type) header.type = modeToType(header.mode) + if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE + if (!header.uid) header.uid = 0 + if (!header.gid) header.gid = 0 + if (!header.mtime) header.mtime = new Date() + + if (typeof buffer === 'string') buffer = Buffer.from(buffer) + if (Buffer.isBuffer(buffer)) { + header.size = buffer.length + this._encode(header) + var ok = this.push(buffer) + overflow(self, header.size) + if (ok) process.nextTick(callback) + else this._drain = callback + return new Void() + } + + if (header.type === 'symlink' && !header.linkname) { + var linkSink = new LinkSink() + eos(linkSink, function (err) { + if (err) { // stream was closed + self.destroy() + return callback(err) + } + + header.linkname = linkSink.linkname + self._encode(header) + callback() + }) + + return linkSink + } + + this._encode(header) + + if (header.type !== 'file' && header.type !== 'contiguous-file') { + process.nextTick(callback) + return new Void() + } + + var sink = new Sink(this) + + this._stream = sink + + eos(sink, function (err) { + self._stream = null + + if (err) { // stream was closed + self.destroy() + return callback(err) + } + + if (sink.written !== header.size) { // corrupting tar + self.destroy() + return callback(new Error('size mismatch')) + } + + overflow(self, header.size) + if (self._finalizing) self.finalize() + callback() + }) + + return sink +} + +Pack.prototype.finalize = function () { + if (this._stream) { + this._finalizing = true + return + } + + if (this._finalized) return + this._finalized = true + this.push(END_OF_TAR) + this.push(null) +} + +Pack.prototype.destroy = function (err) { + if (this._destroyed) return + this._destroyed = true + + if (err) this.emit('error', err) + this.emit('close') + if (this._stream && this._stream.destroy) this._stream.destroy() +} + +Pack.prototype._encode = function (header) { + if (!header.pax) { + var buf = headers.encode(header) + if (buf) { + this.push(buf) + return + } + } + this._encodePax(header) +} + +Pack.prototype._encodePax = function (header) { + var paxHeader = headers.encodePax({ + name: header.name, + linkname: header.linkname, + pax: header.pax + }) + + var newHeader = { + name: 'PaxHeader', + mode: header.mode, + uid: header.uid, + gid: header.gid, + size: paxHeader.length, + mtime: header.mtime, + type: 'pax-header', + linkname: header.linkname && 'PaxHeader', + uname: header.uname, + gname: header.gname, + devmajor: header.devmajor, + devminor: header.devminor + } + + this.push(headers.encode(newHeader)) + this.push(paxHeader) + overflow(this, paxHeader.length) + + newHeader.size = header.size + newHeader.type = header.type + this.push(headers.encode(newHeader)) +} + +Pack.prototype._read = function (n) { + var drain = this._drain + this._drain = noop + drain() +} + +module.exports = Pack + + +/***/ }), + +/***/ "./node_modules/util-deprecate/node.js": +/*!*********************************************!*\ + !*** ./node_modules/util-deprecate/node.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +/** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + +module.exports = __webpack_require__(/*! util */ "util").deprecate; + + +/***/ }), + +/***/ "./node_modules/wrappy/wrappy.js": +/*!***************************************!*\ + !*** ./node_modules/wrappy/wrappy.js ***! + \***************************************/ +/***/ ((module) => { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + + +/***/ }), + +/***/ "./node_modules/zip-stream/index.js": +/*!******************************************!*\ + !*** ./node_modules/zip-stream/index.js ***! + \******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * ZipStream + * + * @ignore + * @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE} + * @copyright (c) 2014 Chris Talkington, contributors. + */ +var inherits = (__webpack_require__(/*! util */ "util").inherits); + +var ZipArchiveOutputStream = (__webpack_require__(/*! compress-commons */ "./node_modules/compress-commons/lib/compress-commons.js").ZipArchiveOutputStream); +var ZipArchiveEntry = (__webpack_require__(/*! compress-commons */ "./node_modules/compress-commons/lib/compress-commons.js").ZipArchiveEntry); + +var util = __webpack_require__(/*! archiver-utils */ "./node_modules/zip-stream/node_modules/archiver-utils/index.js"); + +/** + * @constructor + * @extends external:ZipArchiveOutputStream + * @param {Object} [options] + * @param {String} [options.comment] Sets the zip archive comment. + * @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC. + * @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers. + * @param {Boolean} [options.store=false] Sets the compression method to STORE. + * @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options} + * to control compression. + */ +var ZipStream = module.exports = function(options) { + if (!(this instanceof ZipStream)) { + return new ZipStream(options); + } + + options = this.options = options || {}; + options.zlib = options.zlib || {}; + + ZipArchiveOutputStream.call(this, options); + + if (typeof options.level === 'number' && options.level >= 0) { + options.zlib.level = options.level; + delete options.level; + } + + if (!options.forceZip64 && typeof options.zlib.level === 'number' && options.zlib.level === 0) { + options.store = true; + } + + options.namePrependSlash = options.namePrependSlash || false; + + if (options.comment && options.comment.length > 0) { + this.setComment(options.comment); + } +}; + +inherits(ZipStream, ZipArchiveOutputStream); + +/** + * Normalizes entry data with fallbacks for key properties. + * + * @private + * @param {Object} data + * @return {Object} + */ +ZipStream.prototype._normalizeFileData = function(data) { + data = util.defaults(data, { + type: 'file', + name: null, + namePrependSlash: this.options.namePrependSlash, + linkname: null, + date: null, + mode: null, + store: this.options.store, + comment: '' + }); + + var isDir = data.type === 'directory'; + var isSymlink = data.type === 'symlink'; + + if (data.name) { + data.name = util.sanitizePath(data.name); + + if (!isSymlink && data.name.slice(-1) === '/') { + isDir = true; + data.type = 'directory'; + } else if (isDir) { + data.name += '/'; + } + } + + if (isDir || isSymlink) { + data.store = true; + } + + data.date = util.dateify(data.date); + + return data; +}; + +/** + * Appends an entry given an input source (text string, buffer, or stream). + * + * @param {(Buffer|Stream|String)} source The input source. + * @param {Object} data + * @param {String} data.name Sets the entry name including internal path. + * @param {String} [data.comment] Sets the entry comment. + * @param {(String|Date)} [data.date=NOW()] Sets the entry date. + * @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions. + * @param {Boolean} [data.store=options.store] Sets the compression method to STORE. + * @param {String} [data.type=file] Sets the entry type. Defaults to `directory` + * if name ends with trailing slash. + * @param {Function} callback + * @return this + */ +ZipStream.prototype.entry = function(source, data, callback) { + if (typeof callback !== 'function') { + callback = this._emitErrorCallback.bind(this); + } + + data = this._normalizeFileData(data); + + if (data.type !== 'file' && data.type !== 'directory' && data.type !== 'symlink') { + callback(new Error(data.type + ' entries not currently supported')); + return; + } + + if (typeof data.name !== 'string' || data.name.length === 0) { + callback(new Error('entry name must be a non-empty string value')); + return; + } + + if (data.type === 'symlink' && typeof data.linkname !== 'string') { + callback(new Error('entry linkname must be a non-empty string value when type equals symlink')); + return; + } + + var entry = new ZipArchiveEntry(data.name); + entry.setTime(data.date, this.options.forceLocalTime); + + if (data.namePrependSlash) { + entry.setName(data.name, true); + } + + if (data.store) { + entry.setMethod(0); + } + + if (data.comment.length > 0) { + entry.setComment(data.comment); + } + + if (data.type === 'symlink' && typeof data.mode !== 'number') { + data.mode = 40960; // 0120000 + } + + if (typeof data.mode === 'number') { + if (data.type === 'symlink') { + data.mode |= 40960; + } + + entry.setUnixMode(data.mode); + } + + if (data.type === 'symlink' && typeof data.linkname === 'string') { + source = Buffer.from(data.linkname); + } + + return ZipArchiveOutputStream.prototype.entry.call(this, entry, source, callback); +}; + +/** + * Finalizes the instance and prevents further appending to the archive + * structure (queue will continue til drained). + * + * @return void + */ +ZipStream.prototype.finalize = function() { + this.finish(); +}; + +/** + * Returns the current number of bytes written to this stream. + * @function ZipStream#getBytesWritten + * @returns {Number} + */ + +/** + * Compress Commons ZipArchiveOutputStream + * @external ZipArchiveOutputStream + * @see {@link https://github.com/archiverjs/node-compress-commons} + */ + + +/***/ }), + +/***/ "./node_modules/zip-stream/node_modules/archiver-utils/file.js": +/*!*********************************************************************!*\ + !*** ./node_modules/zip-stream/node_modules/archiver-utils/file.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * archiver-utils + * + * Copyright (c) 2012-2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-archiver/blob/master/LICENSE-MIT + */ +var fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js"); +var path = __webpack_require__(/*! path */ "path"); + +var flatten = __webpack_require__(/*! lodash.flatten */ "./node_modules/lodash.flatten/index.js"); +var difference = __webpack_require__(/*! lodash.difference */ "./node_modules/lodash.difference/index.js"); +var union = __webpack_require__(/*! lodash.union */ "./node_modules/lodash.union/index.js"); +var isPlainObject = __webpack_require__(/*! lodash.isplainobject */ "./node_modules/lodash.isplainobject/index.js"); + +var glob = __webpack_require__(/*! glob */ "./node_modules/glob/glob.js"); + +var file = module.exports = {}; + +var pathSeparatorRe = /[\/\\]/g; + +// Process specified wildcard glob patterns or filenames against a +// callback, excluding and uniquing files in the result set. +var processPatterns = function(patterns, fn) { + // Filepaths to return. + var result = []; + // Iterate over flattened patterns array. + flatten(patterns).forEach(function(pattern) { + // If the first character is ! it should be omitted + var exclusion = pattern.indexOf('!') === 0; + // If the pattern is an exclusion, remove the ! + if (exclusion) { pattern = pattern.slice(1); } + // Find all matching files for this pattern. + var matches = fn(pattern); + if (exclusion) { + // If an exclusion, remove matching files. + result = difference(result, matches); + } else { + // Otherwise add matching files. + result = union(result, matches); + } + }); + return result; +}; + +// True if the file path exists. +file.exists = function() { + var filepath = path.join.apply(path, arguments); + return fs.existsSync(filepath); +}; + +// Return an array of all file paths that match the given wildcard patterns. +file.expand = function(...args) { + // If the first argument is an options object, save those options to pass + // into the File.prototype.glob.sync method. + var options = isPlainObject(args[0]) ? args.shift() : {}; + // Use the first argument if it's an Array, otherwise convert the arguments + // object to an array and use that. + var patterns = Array.isArray(args[0]) ? args[0] : args; + // Return empty set if there are no patterns or filepaths. + if (patterns.length === 0) { return []; } + // Return all matching filepaths. + var matches = processPatterns(patterns, function(pattern) { + // Find all matching files for this pattern. + return glob.sync(pattern, options); + }); + // Filter result set? + if (options.filter) { + matches = matches.filter(function(filepath) { + filepath = path.join(options.cwd || '', filepath); + try { + if (typeof options.filter === 'function') { + return options.filter(filepath); + } else { + // If the file is of the right type and exists, this should work. + return fs.statSync(filepath)[options.filter](); + } + } catch(e) { + // Otherwise, it's probably not the right type. + return false; + } + }); + } + return matches; +}; + +// Build a multi task "files" object dynamically. +file.expandMapping = function(patterns, destBase, options) { + options = Object.assign({ + rename: function(destBase, destPath) { + return path.join(destBase || '', destPath); + } + }, options); + var files = []; + var fileByDest = {}; + // Find all files matching pattern, using passed-in options. + file.expand(options, patterns).forEach(function(src) { + var destPath = src; + // Flatten? + if (options.flatten) { + destPath = path.basename(destPath); + } + // Change the extension? + if (options.ext) { + destPath = destPath.replace(/(\.[^\/]*)?$/, options.ext); + } + // Generate destination filename. + var dest = options.rename(destBase, destPath, options); + // Prepend cwd to src path if necessary. + if (options.cwd) { src = path.join(options.cwd, src); } + // Normalize filepaths to be unix-style. + dest = dest.replace(pathSeparatorRe, '/'); + src = src.replace(pathSeparatorRe, '/'); + // Map correct src path to dest path. + if (fileByDest[dest]) { + // If dest already exists, push this src onto that dest's src array. + fileByDest[dest].src.push(src); + } else { + // Otherwise create a new src-dest file mapping object. + files.push({ + src: [src], + dest: dest, + }); + // And store a reference for later use. + fileByDest[dest] = files[files.length - 1]; + } + }); + return files; +}; + +// reusing bits of grunt's multi-task source normalization +file.normalizeFilesArray = function(data) { + var files = []; + + data.forEach(function(obj) { + var prop; + if ('src' in obj || 'dest' in obj) { + files.push(obj); + } + }); + + if (files.length === 0) { + return []; + } + + files = _(files).chain().forEach(function(obj) { + if (!('src' in obj) || !obj.src) { return; } + // Normalize .src properties to flattened array. + if (Array.isArray(obj.src)) { + obj.src = flatten(obj.src); + } else { + obj.src = [obj.src]; + } + }).map(function(obj) { + // Build options object, removing unwanted properties. + var expandOptions = Object.assign({}, obj); + delete expandOptions.src; + delete expandOptions.dest; + + // Expand file mappings. + if (obj.expand) { + return file.expandMapping(obj.src, obj.dest, expandOptions).map(function(mapObj) { + // Copy obj properties to result. + var result = Object.assign({}, obj); + // Make a clone of the orig obj available. + result.orig = Object.assign({}, obj); + // Set .src and .dest, processing both as templates. + result.src = mapObj.src; + result.dest = mapObj.dest; + // Remove unwanted properties. + ['expand', 'cwd', 'flatten', 'rename', 'ext'].forEach(function(prop) { + delete result[prop]; + }); + return result; + }); + } + + // Copy obj properties to result, adding an .orig property. + var result = Object.assign({}, obj); + // Make a clone of the orig obj available. + result.orig = Object.assign({}, obj); + + if ('src' in result) { + // Expose an expand-on-demand getter method as .src. + Object.defineProperty(result, 'src', { + enumerable: true, + get: function fn() { + var src; + if (!('result' in fn)) { + src = obj.src; + // If src is an array, flatten it. Otherwise, make it into an array. + src = Array.isArray(src) ? flatten(src) : [src]; + // Expand src files, memoizing result. + fn.result = file.expand(expandOptions, src); + } + return fn.result; + } + }); + } + + if ('dest' in result) { + result.dest = obj.dest; + } + + return result; + }).flatten().value(); + + return files; +}; + + +/***/ }), + +/***/ "./node_modules/zip-stream/node_modules/archiver-utils/index.js": +/*!**********************************************************************!*\ + !*** ./node_modules/zip-stream/node_modules/archiver-utils/index.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * archiver-utils + * + * Copyright (c) 2015 Chris Talkington. + * Licensed under the MIT license. + * https://github.com/archiverjs/archiver-utils/blob/master/LICENSE + */ +var fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js"); +var path = __webpack_require__(/*! path */ "path"); +var lazystream = __webpack_require__(/*! lazystream */ "./node_modules/lazystream/lib/lazystream.js"); +var normalizePath = __webpack_require__(/*! normalize-path */ "./node_modules/normalize-path/index.js"); +var defaults = __webpack_require__(/*! lodash.defaults */ "./node_modules/lodash.defaults/index.js"); + +var Stream = (__webpack_require__(/*! stream */ "stream").Stream); +var PassThrough = (__webpack_require__(/*! readable-stream */ "./node_modules/readable-stream/readable.js").PassThrough); + +var utils = module.exports = {}; +utils.file = __webpack_require__(/*! ./file.js */ "./node_modules/zip-stream/node_modules/archiver-utils/file.js"); + +utils.collectStream = function(source, callback) { + var collection = []; + var size = 0; + + source.on('error', callback); + + source.on('data', function(chunk) { + collection.push(chunk); + size += chunk.length; + }); + + source.on('end', function() { + var buf = Buffer.alloc(size); + var offset = 0; + + collection.forEach(function(data) { + data.copy(buf, offset); + offset += data.length; + }); + + callback(null, buf); + }); +}; + +utils.dateify = function(dateish) { + dateish = dateish || new Date(); + + if (dateish instanceof Date) { + dateish = dateish; + } else if (typeof dateish === 'string') { + dateish = new Date(dateish); + } else { + dateish = new Date(); + } + + return dateish; +}; + +// this is slightly different from lodash version +utils.defaults = function(object, source, guard) { + var args = arguments; + args[0] = args[0] || {}; + + return defaults(...args); +}; + +utils.isStream = function(source) { + return source instanceof Stream; +}; + +utils.lazyReadStream = function(filepath) { + return new lazystream.Readable(function() { + return fs.createReadStream(filepath); + }); +}; + +utils.normalizeInputSource = function(source) { + if (source === null) { + return Buffer.alloc(0); + } else if (typeof source === 'string') { + return Buffer.from(source); + } else if (utils.isStream(source)) { + // Always pipe through a PassThrough stream to guarantee pausing the stream if it's already flowing, + // since it will only be processed in a (distant) future iteration of the event loop, and will lose + // data if already flowing now. + return source.pipe(new PassThrough()); + } + + return source; +}; + +utils.sanitizePath = function(filepath) { + return normalizePath(filepath, false).replace(/^\w+:/, '').replace(/^(\.\.\/|\/)+/, ''); +}; + +utils.trailingSlashIt = function(str) { + return str.slice(-1) !== '/' ? str + '/' : str; +}; + +utils.unixifyPath = function(filepath) { + return normalizePath(filepath, false).replace(/^\w+:/, ''); +}; + +utils.walkdir = function(dirpath, base, callback) { + var results = []; + + if (typeof base === 'function') { + callback = base; + base = dirpath; + } + + fs.readdir(dirpath, function(err, list) { + var i = 0; + var file; + var filepath; + + if (err) { + return callback(err); + } + + (function next() { + file = list[i++]; + + if (!file) { + return callback(null, results); + } + + filepath = path.join(dirpath, file); + + fs.stat(filepath, function(err, stats) { + results.push({ + path: filepath, + relative: path.relative(base, filepath).replace(/\\/g, '/'), + stats: stats + }); + + if (stats && stats.isDirectory()) { + utils.walkdir(filepath, base, function(err, res) { + res.forEach(function(dirEntry) { + results.push(dirEntry); + }); + next(); + }); + } else { + next(); + } + }); + })(); + }); +}; + + +/***/ }), + +/***/ "assert": +/*!*************************!*\ + !*** external "assert" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ "buffer": +/*!*************************!*\ + !*** external "buffer" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ "child_process": +/*!********************************!*\ + !*** external "child_process" ***! + \********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process"); + +/***/ }), + +/***/ "constants": +/*!****************************!*\ + !*** external "constants" ***! + \****************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("constants"); + +/***/ }), + +/***/ "electron": +/*!***************************!*\ + !*** external "electron" ***! + \***************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("electron"); + +/***/ }), + +/***/ "events": +/*!*************************!*\ + !*** external "events" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ "os": +/*!*********************!*\ + !*** external "os" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ "string_decoder": +/*!*********************************!*\ + !*** external "string_decoder" ***! + \*********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ "zlib": +/*!***********************!*\ + !*** external "zlib" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ "axios": +/*!************************!*\ + !*** external "axios" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_axios__; + +/***/ }), + +/***/ "electron-serve": +/*!*********************************!*\ + !*** external "electron-serve" ***! + \*********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_electron_serve__; + +/***/ }), + +/***/ "electron-store": +/*!*********************************!*\ + !*** external "electron-store" ***! + \*********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_electron_store__; + +/***/ }), + +/***/ "extract-zip": +/*!******************************!*\ + !*** external "extract-zip" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_extract_zip__; + +/***/ }), + +/***/ "python-shell": +/*!*******************************!*\ + !*** external "python-shell" ***! + \*******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_python_shell__; + +/***/ }), + +/***/ "tar": +/*!**********************!*\ + !*** external "tar" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = __WEBPACK_EXTERNAL_MODULE_tar__; + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/ends-with.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/ends-with.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/ends-with */ "./node_modules/core-js-pure/stable/instance/ends-with.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/filter */ "./node_modules/core-js-pure/stable/instance/filter.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js ***! + \*********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/for-each */ "./node_modules/core-js-pure/stable/instance/for-each.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/map */ "./node_modules/core-js-pure/stable/instance/map.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/some */ "./node_modules/core-js-pure/stable/instance/some.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js ***! + \************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/instance/starts-with */ "./node_modules/core-js-pure/stable/instance/starts-with.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/json/stringify */ "./node_modules/core-js-pure/stable/json/stringify.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/assign */ "./node_modules/core-js-pure/stable/object/assign.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js ***! + \****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-properties */ "./node_modules/core-js-pure/stable/object/define-properties.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-property */ "./node_modules/core-js-pure/stable/object/define-property.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptor */ "./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptors */ "./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-symbols */ "./node_modules/core-js-pure/stable/object/get-own-property-symbols.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/object/keys */ "./node_modules/core-js-pure/stable/object/keys.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/parse-int */ "./node_modules/core-js-pure/stable/parse-int.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! core-js-pure/stable/promise */ "./node_modules/core-js-pure/stable/promise/index.js"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _Object$defineProperty = __webpack_require__(/*! core-js-pure/features/object/define-property.js */ "./node_modules/core-js-pure/features/object/define-property.js"); +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js"); +function _defineProperty(obj, key, value) { + key = toPropertyKey(key); + if (key in obj) { + _Object$defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js": +/*!********************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _Symbol$toPrimitive = __webpack_require__(/*! core-js-pure/features/symbol/to-primitive.js */ "./node_modules/core-js-pure/features/symbol/to-primitive.js"); +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime-corejs3/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[_Symbol$toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime-corejs3/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime-corejs3/helpers/typeof.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime-corejs3/helpers/typeof.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _Symbol = __webpack_require__(/*! core-js-pure/features/symbol/index.js */ "./node_modules/core-js-pure/features/symbol/index.js"); +var _Symbol$iterator = __webpack_require__(/*! core-js-pure/features/symbol/iterator.js */ "./node_modules/core-js-pure/features/symbol/iterator.js"); +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof _Symbol && "symbol" == typeof _Symbol$iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/core-js-pure/actual/object/define-property.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/actual/object/define-property.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../stable/object/define-property */ "./node_modules/core-js-pure/stable/object/define-property.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/actual/symbol/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/actual/symbol/index.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../stable/symbol */ "./node_modules/core-js-pure/stable/symbol/index.js"); + +__webpack_require__(/*! ../../modules/esnext.function.metadata */ "./node_modules/core-js-pure/modules/esnext.function.metadata.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.async-dispose */ "./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.dispose */ "./node_modules/core-js-pure/modules/esnext.symbol.dispose.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.metadata */ "./node_modules/core-js-pure/modules/esnext.symbol.metadata.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/actual/symbol/iterator.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/actual/symbol/iterator.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../stable/symbol/iterator */ "./node_modules/core-js-pure/stable/symbol/iterator.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/actual/symbol/to-primitive.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/actual/symbol/to-primitive.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../stable/symbol/to-primitive */ "./node_modules/core-js-pure/stable/symbol/to-primitive.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/array/virtual/filter.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/es/array/virtual/filter.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.array.filter */ "./node_modules/core-js-pure/modules/es.array.filter.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('Array', 'filter'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/array/virtual/for-each.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/es/array/virtual/for-each.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.array.for-each */ "./node_modules/core-js-pure/modules/es.array.for-each.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('Array', 'forEach'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/array/virtual/map.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/es/array/virtual/map.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.array.map */ "./node_modules/core-js-pure/modules/es.array.map.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('Array', 'map'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/array/virtual/some.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/es/array/virtual/some.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.array.some */ "./node_modules/core-js-pure/modules/es.array.some.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('Array', 'some'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/instance/ends-with.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/es/instance/ends-with.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../string/virtual/ends-with */ "./node_modules/core-js-pure/es/string/virtual/ends-with.js"); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.endsWith; + return typeof it == 'string' || it === StringPrototype + || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.endsWith) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/instance/filter.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/es/instance/filter.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../array/virtual/filter */ "./node_modules/core-js-pure/es/array/virtual/filter.js"); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.filter; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/instance/map.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js-pure/es/instance/map.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../array/virtual/map */ "./node_modules/core-js-pure/es/array/virtual/map.js"); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.map; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/instance/some.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/es/instance/some.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../array/virtual/some */ "./node_modules/core-js-pure/es/array/virtual/some.js"); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.some; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.some) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/instance/starts-with.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/es/instance/starts-with.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../string/virtual/starts-with */ "./node_modules/core-js-pure/es/string/virtual/starts-with.js"); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.startsWith; + return typeof it == 'string' || it === StringPrototype + || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.startsWith) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/json/stringify.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/es/json/stringify.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.date.to-json */ "./node_modules/core-js-pure/modules/es.date.to-json.js"); +__webpack_require__(/*! ../../modules/es.json.stringify */ "./node_modules/core-js-pure/modules/es.json.stringify.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); +var apply = __webpack_require__(/*! ../../internals/function-apply */ "./node_modules/core-js-pure/internals/function-apply.js"); + +// eslint-disable-next-line es/no-json -- safe +if (!path.JSON) path.JSON = { stringify: JSON.stringify }; + +// eslint-disable-next-line no-unused-vars -- required for `.length` +module.exports = function stringify(it, replacer, space) { + return apply(path.JSON.stringify, null, arguments); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/assign.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/assign.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.assign */ "./node_modules/core-js-pure/modules/es.object.assign.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Object.assign; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/define-properties.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/define-properties.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.define-properties */ "./node_modules/core-js-pure/modules/es.object.define-properties.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +var Object = path.Object; + +var defineProperties = module.exports = function defineProperties(T, D) { + return Object.defineProperties(T, D); +}; + +if (Object.defineProperties.sham) defineProperties.sham = true; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/define-property.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/define-property.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.define-property */ "./node_modules/core-js-pure/modules/es.object.define-property.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +var Object = path.Object; + +var defineProperty = module.exports = function defineProperty(it, key, desc) { + return Object.defineProperty(it, key, desc); +}; + +if (Object.defineProperty.sham) defineProperty.sham = true; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/get-own-property-descriptor.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.get-own-property-descriptor */ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +var Object = path.Object; + +var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) { + return Object.getOwnPropertyDescriptor(it, key); +}; + +if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/get-own-property-descriptors.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/get-own-property-descriptors.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.get-own-property-descriptors */ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Object.getOwnPropertyDescriptors; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/get-own-property-symbols.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/get-own-property-symbols.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.symbol */ "./node_modules/core-js-pure/modules/es.symbol.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/object/keys.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js-pure/es/object/keys.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.object.keys */ "./node_modules/core-js-pure/modules/es.object.keys.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Object.keys; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/parse-int.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js-pure/es/parse-int.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../modules/es.parse-int */ "./node_modules/core-js-pure/modules/es.parse-int.js"); +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.parseInt; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/promise/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/es/promise/index.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.aggregate-error */ "./node_modules/core-js-pure/modules/es.aggregate-error.js"); +__webpack_require__(/*! ../../modules/es.array.iterator */ "./node_modules/core-js-pure/modules/es.array.iterator.js"); +__webpack_require__(/*! ../../modules/es.object.to-string */ "./node_modules/core-js-pure/modules/es.object.to-string.js"); +__webpack_require__(/*! ../../modules/es.promise */ "./node_modules/core-js-pure/modules/es.promise.js"); +__webpack_require__(/*! ../../modules/es.promise.all-settled */ "./node_modules/core-js-pure/modules/es.promise.all-settled.js"); +__webpack_require__(/*! ../../modules/es.promise.any */ "./node_modules/core-js-pure/modules/es.promise.any.js"); +__webpack_require__(/*! ../../modules/es.promise.with-resolvers */ "./node_modules/core-js-pure/modules/es.promise.with-resolvers.js"); +__webpack_require__(/*! ../../modules/es.promise.finally */ "./node_modules/core-js-pure/modules/es.promise.finally.js"); +__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js-pure/modules/es.string.iterator.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Promise; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/string/virtual/ends-with.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/es/string/virtual/ends-with.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.string.ends-with */ "./node_modules/core-js-pure/modules/es.string.ends-with.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('String', 'endsWith'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/string/virtual/starts-with.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/es/string/virtual/starts-with.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../../modules/es.string.starts-with */ "./node_modules/core-js-pure/modules/es.string.starts-with.js"); +var getBuiltInPrototypeMethod = __webpack_require__(/*! ../../../internals/get-built-in-prototype-method */ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js"); + +module.exports = getBuiltInPrototypeMethod('String', 'startsWith'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/symbol/index.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js-pure/es/symbol/index.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.array.concat */ "./node_modules/core-js-pure/modules/es.array.concat.js"); +__webpack_require__(/*! ../../modules/es.object.to-string */ "./node_modules/core-js-pure/modules/es.object.to-string.js"); +__webpack_require__(/*! ../../modules/es.symbol */ "./node_modules/core-js-pure/modules/es.symbol.js"); +__webpack_require__(/*! ../../modules/es.symbol.async-iterator */ "./node_modules/core-js-pure/modules/es.symbol.async-iterator.js"); +__webpack_require__(/*! ../../modules/es.symbol.description */ "./node_modules/core-js-pure/modules/es.symbol.description.js"); +__webpack_require__(/*! ../../modules/es.symbol.has-instance */ "./node_modules/core-js-pure/modules/es.symbol.has-instance.js"); +__webpack_require__(/*! ../../modules/es.symbol.is-concat-spreadable */ "./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js"); +__webpack_require__(/*! ../../modules/es.symbol.iterator */ "./node_modules/core-js-pure/modules/es.symbol.iterator.js"); +__webpack_require__(/*! ../../modules/es.symbol.match */ "./node_modules/core-js-pure/modules/es.symbol.match.js"); +__webpack_require__(/*! ../../modules/es.symbol.match-all */ "./node_modules/core-js-pure/modules/es.symbol.match-all.js"); +__webpack_require__(/*! ../../modules/es.symbol.replace */ "./node_modules/core-js-pure/modules/es.symbol.replace.js"); +__webpack_require__(/*! ../../modules/es.symbol.search */ "./node_modules/core-js-pure/modules/es.symbol.search.js"); +__webpack_require__(/*! ../../modules/es.symbol.species */ "./node_modules/core-js-pure/modules/es.symbol.species.js"); +__webpack_require__(/*! ../../modules/es.symbol.split */ "./node_modules/core-js-pure/modules/es.symbol.split.js"); +__webpack_require__(/*! ../../modules/es.symbol.to-primitive */ "./node_modules/core-js-pure/modules/es.symbol.to-primitive.js"); +__webpack_require__(/*! ../../modules/es.symbol.to-string-tag */ "./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js"); +__webpack_require__(/*! ../../modules/es.symbol.unscopables */ "./node_modules/core-js-pure/modules/es.symbol.unscopables.js"); +__webpack_require__(/*! ../../modules/es.json.to-string-tag */ "./node_modules/core-js-pure/modules/es.json.to-string-tag.js"); +__webpack_require__(/*! ../../modules/es.math.to-string-tag */ "./node_modules/core-js-pure/modules/es.math.to-string-tag.js"); +__webpack_require__(/*! ../../modules/es.reflect.to-string-tag */ "./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = path.Symbol; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/symbol/iterator.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/es/symbol/iterator.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.array.iterator */ "./node_modules/core-js-pure/modules/es.array.iterator.js"); +__webpack_require__(/*! ../../modules/es.object.to-string */ "./node_modules/core-js-pure/modules/es.object.to-string.js"); +__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js-pure/modules/es.string.iterator.js"); +__webpack_require__(/*! ../../modules/es.symbol.iterator */ "./node_modules/core-js-pure/modules/es.symbol.iterator.js"); +var WrappedWellKnownSymbolModule = __webpack_require__(/*! ../../internals/well-known-symbol-wrapped */ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js"); + +module.exports = WrappedWellKnownSymbolModule.f('iterator'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/es/symbol/to-primitive.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/es/symbol/to-primitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../../modules/es.date.to-primitive */ "./node_modules/core-js-pure/modules/es.date.to-primitive.js"); +__webpack_require__(/*! ../../modules/es.symbol.to-primitive */ "./node_modules/core-js-pure/modules/es.symbol.to-primitive.js"); +var WrappedWellKnownSymbolModule = __webpack_require__(/*! ../../internals/well-known-symbol-wrapped */ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js"); + +module.exports = WrappedWellKnownSymbolModule.f('toPrimitive'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/features/object/define-property.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/features/object/define-property.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +module.exports = __webpack_require__(/*! ../../full/object/define-property */ "./node_modules/core-js-pure/full/object/define-property.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/features/symbol/index.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/features/symbol/index.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +module.exports = __webpack_require__(/*! ../../full/symbol */ "./node_modules/core-js-pure/full/symbol/index.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/features/symbol/iterator.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/features/symbol/iterator.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +module.exports = __webpack_require__(/*! ../../full/symbol/iterator */ "./node_modules/core-js-pure/full/symbol/iterator.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/features/symbol/to-primitive.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js-pure/features/symbol/to-primitive.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +module.exports = __webpack_require__(/*! ../../full/symbol/to-primitive */ "./node_modules/core-js-pure/full/symbol/to-primitive.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/full/object/define-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/full/object/define-property.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../actual/object/define-property */ "./node_modules/core-js-pure/actual/object/define-property.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/full/symbol/index.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/full/symbol/index.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../actual/symbol */ "./node_modules/core-js-pure/actual/symbol/index.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.is-registered-symbol */ "./node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.is-well-known-symbol */ "./node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.custom-matcher */ "./node_modules/core-js-pure/modules/esnext.symbol.custom-matcher.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.observable */ "./node_modules/core-js-pure/modules/esnext.symbol.observable.js"); +// TODO: Remove from `core-js@4` +__webpack_require__(/*! ../../modules/esnext.symbol.is-registered */ "./node_modules/core-js-pure/modules/esnext.symbol.is-registered.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.is-well-known */ "./node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.matcher */ "./node_modules/core-js-pure/modules/esnext.symbol.matcher.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.metadata-key */ "./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.pattern-match */ "./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js"); +__webpack_require__(/*! ../../modules/esnext.symbol.replace-all */ "./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/full/symbol/iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/full/symbol/iterator.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../actual/symbol/iterator */ "./node_modules/core-js-pure/actual/symbol/iterator.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/full/symbol/to-primitive.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/full/symbol/to-primitive.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../actual/symbol/to-primitive */ "./node_modules/core-js-pure/actual/symbol/to-primitive.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/a-callable.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/a-callable.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js-pure/internals/try-to-string.js"); + +var $TypeError = TypeError; + +// `Assert: IsCallable(argument) is true` +module.exports = function (argument) { + if (isCallable(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a function'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/a-constructor.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/a-constructor.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js-pure/internals/is-constructor.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js-pure/internals/try-to-string.js"); + +var $TypeError = TypeError; + +// `Assert: IsConstructor(argument) is true` +module.exports = function (argument) { + if (isConstructor(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a constructor'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/a-possible-prototype.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/a-possible-prototype.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "./node_modules/core-js-pure/internals/is-possible-prototype.js"); + +var $String = String; +var $TypeError = TypeError; + +module.exports = function (argument) { + if (isPossiblePrototype(argument)) return argument; + throw new $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/add-to-unscopables.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/add-to-unscopables.js ***! + \*******************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function () { /* empty */ }; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/an-instance.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/an-instance.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); + +var $TypeError = TypeError; + +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw new $TypeError('Incorrect invocation'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/an-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/an-object.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); + +var $String = String; +var $TypeError = TypeError; + +// `Assert: Type(argument) is Object` +module.exports = function (argument) { + if (isObject(argument)) return argument; + throw new $TypeError($String(argument) + ' is not an object'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-for-each.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-for-each.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js-pure/internals/array-iteration.js").forEach); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js-pure/internals/array-method-is-strict.js"); + +var STRICT_METHOD = arrayMethodIsStrict('forEach'); + +// `Array.prototype.forEach` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.foreach +module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +// eslint-disable-next-line es/no-array-prototype-foreach -- safe +} : [].forEach; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-includes.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-includes.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js-pure/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js-pure/internals/length-of-array-like.js"); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + if (length === 0) return !IS_INCLUDES && -1; + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-iteration.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-iteration.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js-pure/internals/function-bind-context.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js-pure/internals/indexed-object.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js-pure/internals/length-of-array-like.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js-pure/internals/array-species-create.js"); + +var push = uncurryThis([].push); + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE === 1; + var IS_FILTER = TYPE === 2; + var IS_SOME = TYPE === 3; + var IS_EVERY = TYPE === 4; + var IS_FIND_INDEX = TYPE === 6; + var IS_FILTER_REJECT = TYPE === 7; + var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var length = lengthOfArrayLike(self); + var boundFunction = bind(callbackfn, that); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod(7) +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-method-has-species-support.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-method-has-species-support.js ***! + \*********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js-pure/internals/engine-v8-version.js"); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-method-is-strict.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-method-is-strict.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-slice.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-slice.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +module.exports = uncurryThis([].slice); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-species-constructor.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-species-constructor.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js-pure/internals/is-array.js"); +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js-pure/internals/is-constructor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; + +// a part of `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array : C; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/array-species-create.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/array-species-create.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js-pure/internals/array-species-constructor.js"); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/check-correctness-of-iteration.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + try { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + } catch (error) { return false; } // workaround of old WebKit + `eval` bug + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/classof-raw.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/classof-raw.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); + +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/classof.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/classof.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js-pure/internals/to-string-tag-support.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; + +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/copy-constructor-properties.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/copy-constructor-properties.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js-pure/internals/own-keys.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); + +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/correct-is-regexp-logic.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/correct-is-regexp-logic.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var MATCH = wellKnownSymbol('match'); + +module.exports = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/correct-prototype-getter.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/correct-prototype-getter.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/create-iter-result-object.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/create-iter-result-object.js ***! + \**************************************************************************/ +/***/ ((module) => { + +"use strict"; + +// `CreateIterResultObject` abstract operation +// https://tc39.es/ecma262/#sec-createiterresultobject +module.exports = function (value, done) { + return { value: value, done: done }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/create-non-enumerable-property.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/create-property-descriptor.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/create-property-descriptor.js ***! + \***************************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/create-property.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/create-property.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); + +module.exports = function (object, key, value) { + if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value)); + else object[key] = value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/date-to-iso-string.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/date-to-iso-string.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var padStart = (__webpack_require__(/*! ../internals/string-pad */ "./node_modules/core-js-pure/internals/string-pad.js").start); + +var $RangeError = RangeError; +var $isFinite = isFinite; +var abs = Math.abs; +var DatePrototype = Date.prototype; +var nativeDateToISOString = DatePrototype.toISOString; +var thisTimeValue = uncurryThis(DatePrototype.getTime); +var getUTCDate = uncurryThis(DatePrototype.getUTCDate); +var getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear); +var getUTCHours = uncurryThis(DatePrototype.getUTCHours); +var getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds); +var getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes); +var getUTCMonth = uncurryThis(DatePrototype.getUTCMonth); +var getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds); + +// `Date.prototype.toISOString` method implementation +// https://tc39.es/ecma262/#sec-date.prototype.toisostring +// PhantomJS / old WebKit fails here: +module.exports = (fails(function () { + return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z'; +}) || !fails(function () { + nativeDateToISOString.call(new Date(NaN)); +})) ? function toISOString() { + if (!$isFinite(thisTimeValue(this))) throw new $RangeError('Invalid time value'); + var date = this; + var year = getUTCFullYear(date); + var milliseconds = getUTCMilliseconds(date); + var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; + return sign + padStart(abs(year), sign ? 6 : 4, 0) + + '-' + padStart(getUTCMonth(date) + 1, 2, 0) + + '-' + padStart(getUTCDate(date), 2, 0) + + 'T' + padStart(getUTCHours(date), 2, 0) + + ':' + padStart(getUTCMinutes(date), 2, 0) + + ':' + padStart(getUTCSeconds(date), 2, 0) + + '.' + padStart(milliseconds, 3, 0) + + 'Z'; +} : nativeDateToISOString; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/define-built-in-accessor.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/define-built-in-accessor.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); + +module.exports = function (target, name, descriptor) { + return defineProperty.f(target, name, descriptor); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/define-built-in.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/define-built-in.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); + +module.exports = function (target, key, value, options) { + if (options && options.enumerable) target[key] = value; + else createNonEnumerableProperty(target, key, value); + return target; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/define-global-property.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/define-global-property.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); + +// eslint-disable-next-line es/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +module.exports = function (key, value) { + try { + defineProperty(global, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/descriptors.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/descriptors.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/document-create-element.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/document-create-element.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js ***! + \*****************************************************************************/ +/***/ ((module) => { + +"use strict"; + +var $TypeError = TypeError; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + +module.exports = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/dom-iterables.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/dom-iterables.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; + +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-browser.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-browser.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ "./node_modules/core-js-pure/internals/engine-is-deno.js"); +var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ "./node_modules/core-js-pure/internals/engine-is-node.js"); + +module.exports = !IS_DENO && !IS_NODE + && typeof window == 'object' + && typeof document == 'object'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-deno.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-deno.js ***! + \***************************************************************/ +/***/ ((module) => { + +"use strict"; + +/* global Deno -- Deno case */ +module.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-ios-pebble.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-ios-pebble.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js-pure/internals/engine-user-agent.js"); + +module.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-ios.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-ios.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js-pure/internals/engine-user-agent.js"); + +// eslint-disable-next-line redos/no-vulnerable -- safe +module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-node.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-node.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); + +module.exports = classof(global.process) === 'process'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-is-webos-webkit.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-is-webos-webkit.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js-pure/internals/engine-user-agent.js"); + +module.exports = /web0s(?!.*chrome)/i.test(userAgent); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-user-agent.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-user-agent.js ***! + \******************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/engine-v8-version.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/engine-v8-version.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js-pure/internals/engine-user-agent.js"); + +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} + +// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` +// so check `userAgent` even if `.v8` exists, but 0 +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } +} + +module.exports = version; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/enum-bug-keys.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/enum-bug-keys.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/error-stack-clear.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/error-stack-clear.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +var $Error = Error; +var replace = uncurryThis(''.replace); + +var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd'); +// eslint-disable-next-line redos/no-vulnerable -- safe +var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; +var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); + +module.exports = function (stack, dropEntries) { + if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { + while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); + } return stack; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/error-stack-install.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/error-stack-install.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ "./node_modules/core-js-pure/internals/error-stack-clear.js"); +var ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ "./node_modules/core-js-pure/internals/error-stack-installable.js"); + +// non-standard V8 +var captureStackTrace = Error.captureStackTrace; + +module.exports = function (error, C, stack, dropEntries) { + if (ERROR_STACK_INSTALLABLE) { + if (captureStackTrace) captureStackTrace(error, C); + else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries)); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/error-stack-installable.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/error-stack-installable.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); + +module.exports = !fails(function () { + var error = new Error('a'); + if (!('stack' in error)) return true; + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); + return error.stack !== 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/export.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/internals/export.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js-pure/internals/function-apply.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js").f); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js-pure/internals/is-forced.js"); +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js-pure/internals/path.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js-pure/internals/function-bind-context.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +// add debugging info +__webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js-pure/internals/shared-store.js"); + +var wrapConstructor = function (NativeConstructor) { + var Wrapper = function (a, b, c) { + if (this instanceof Wrapper) { + switch (arguments.length) { + case 0: return new NativeConstructor(); + case 1: return new NativeConstructor(a); + case 2: return new NativeConstructor(a, b); + } return new NativeConstructor(a, b, c); + } return apply(NativeConstructor, this, arguments); + }; + Wrapper.prototype = NativeConstructor.prototype; + return Wrapper; +}; + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var PROTO = options.proto; + + var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : global[TARGET] && global[TARGET].prototype; + + var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET]; + var targetPrototype = target.prototype; + + var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE; + var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor; + + for (key in source) { + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contains in native + USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key); + + targetProperty = target[key]; + + if (USE_NATIVE) if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(nativeSource, key); + nativeProperty = descriptor && descriptor.value; + } else nativeProperty = nativeSource[key]; + + // export native or implementation + sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key]; + + if (!FORCED && !PROTO && typeof targetProperty == typeof sourceProperty) continue; + + // bind methods to global for calling from export context + if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global); + // wrap global constructors for prevent changes in this version + else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty); + // make static versions for prototype methods + else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty); + // default case + else resultProperty = sourceProperty; + + // add a flag to not completely full polyfills + if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(resultProperty, 'sham', true); + } + + createNonEnumerableProperty(target, key, resultProperty); + + if (PROTO) { + VIRTUAL_PROTOTYPE = TARGET + 'Prototype'; + if (!hasOwn(path, VIRTUAL_PROTOTYPE)) { + createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {}); + } + // export virtual prototype methods + createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty); + // export real prototype methods + if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) { + createNonEnumerableProperty(targetPrototype, key, sourceProperty); + } + } + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/fails.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js-pure/internals/fails.js ***! + \******************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-apply.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-apply.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js-pure/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var apply = FunctionPrototype.apply; +var call = FunctionPrototype.call; + +// eslint-disable-next-line es/no-reflect -- safe +module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { + return call.apply(apply, arguments); +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-bind-context.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-bind-context.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js-pure/internals/function-bind-native.js"); + +var bind = uncurryThis(uncurryThis.bind); + +// optional / simple context binding +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-bind-native.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-bind-native.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +module.exports = !fails(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-call.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-call.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js-pure/internals/function-bind-native.js"); + +var call = Function.prototype.call; + +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-name.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-name.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); + +var FunctionPrototype = Function.prototype; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + +var EXISTS = hasOwn(FunctionPrototype, 'name'); +// additional protection from minified / mangled / dropped function names +var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); + +module.exports = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-uncurry-this-clause.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +module.exports = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis(fn); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/function-uncurry-this.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/function-uncurry-this.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js-pure/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var call = FunctionPrototype.call; +var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); + +module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { + return function () { + return call.apply(fn, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-built-in-prototype-method.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-built-in-prototype-method.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js-pure/internals/path.js"); + +module.exports = function (CONSTRUCTOR, METHOD) { + var Namespace = path[CONSTRUCTOR + 'Prototype']; + var pureMethod = Namespace && Namespace[METHOD]; + if (pureMethod) return pureMethod; + var NativeConstructor = global[CONSTRUCTOR]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + return NativePrototype && NativePrototype[METHOD]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-built-in.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-built-in.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js-pure/internals/path.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); + +var aFunction = function (variable) { + return isCallable(variable) ? variable : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) + : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-iterator-method.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-iterator-method.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js-pure/internals/classof.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js-pure/internals/get-method.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js-pure/internals/is-null-or-undefined.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-iterator.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-iterator.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js-pure/internals/try-to-string.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js-pure/internals/get-iterator-method.js"); + +var $TypeError = TypeError; + +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw new $TypeError(tryToString(argument) + ' is not iterable'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-json-replacer-function.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-json-replacer-function.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js-pure/internals/is-array.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); + +var push = uncurryThis([].push); + +module.exports = function (replacer) { + if (isCallable(replacer)) return replacer; + if (!isArray(replacer)) return; + var rawLength = replacer.length; + var keys = []; + for (var i = 0; i < rawLength; i++) { + var element = replacer[i]; + if (typeof element == 'string') push(keys, element); + else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element)); + } + var keysLength = keys.length; + var root = true; + return function (key, value) { + if (root) { + root = false; + return value; + } + if (isArray(this)) return value; + for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value; + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/get-method.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/get-method.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js-pure/internals/is-null-or-undefined.js"); + +// `GetMethod` abstract operation +// https://tc39.es/ecma262/#sec-getmethod +module.exports = function (V, P) { + var func = V[P]; + return isNullOrUndefined(func) ? undefined : aCallable(func); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/global.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/internals/global.js ***! + \*******************************************************/ +/***/ (function(module) { + +"use strict"; + +var check = function (it) { + return it && it.Math === Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof global == 'object' && global) || + check(typeof this == 'object' && this) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/has-own-property.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/has-own-property.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); + +var hasOwnProperty = uncurryThis({}.hasOwnProperty); + +// `HasOwnProperty` abstract operation +// https://tc39.es/ecma262/#sec-hasownproperty +// eslint-disable-next-line es/no-object-hasown -- safe +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/hidden-keys.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/hidden-keys.js ***! + \************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/host-report-errors.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/host-report-errors.js ***! + \*******************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function (a, b) { + try { + // eslint-disable-next-line no-console -- safe + arguments.length === 1 ? console.error(a) : console.error(a, b); + } catch (error) { /* empty */ } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/html.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js-pure/internals/html.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); + +module.exports = getBuiltIn('document', 'documentElement'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/ie8-dom-define.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/ie8-dom-define.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js-pure/internals/document-create-element.js"); + +// Thanks to IE8 for its funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a !== 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/indexed-object.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/indexed-object.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); + +var $Object = Object; +var split = uncurryThis(''.split); + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) === 'String' ? split(it, '') : $Object(it); +} : $Object; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/inspect-source.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/inspect-source.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js-pure/internals/shared-store.js"); + +var functionToString = uncurryThis(Function.toString); + +// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} + +module.exports = store.inspectSource; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/install-error-cause.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/install-error-cause.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); + +// `InstallErrorCause` abstract operation +// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause +module.exports = function (O, options) { + if (isObject(options) && 'cause' in options) { + createNonEnumerableProperty(O, 'cause', options.cause); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/internal-state.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/internal-state.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js-pure/internals/weak-map-basic-detection.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js-pure/internals/shared-store.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js-pure/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js-pure/internals/hidden-keys.js"); + +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set = function (it, metadata) { + if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get = function (it) { + return store.get(it) || {}; + }; + has = function (it) { + return store.has(it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-array-iterator-method.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-array-iterator-method.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-array.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-array.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es/no-array-isarray -- safe +module.exports = Array.isArray || function isArray(argument) { + return classof(argument) === 'Array'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-callable.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-callable.js ***! + \************************************************************/ +/***/ ((module) => { + +"use strict"; + +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot +var documentAll = typeof document == 'object' && document.all; + +// `IsCallable` abstract operation +// https://tc39.es/ecma262/#sec-iscallable +// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing +module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { + return typeof argument == 'function' || argument === documentAll; +} : function (argument) { + return typeof argument == 'function'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-constructor.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-constructor.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js-pure/internals/classof.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js-pure/internals/inspect-source.js"); + +var noop = function () { /* empty */ }; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.test(noop); + +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, [], argument); + return true; + } catch (error) { + return false; + } +}; + +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; + +isConstructorLegacy.sham = true; + +// `IsConstructor` abstract operation +// https://tc39.es/ecma262/#sec-isconstructor +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; +}) ? isConstructorLegacy : isConstructorModern; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-forced.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-forced.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value === POLYFILL ? true + : value === NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-null-or-undefined.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-null-or-undefined.js ***! + \*********************************************************************/ +/***/ ((module) => { + +"use strict"; + +// we can't use just `it == null` since of `document.all` special case +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec +module.exports = function (it) { + return it === null || it === undefined; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-object.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); + +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-possible-prototype.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-possible-prototype.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); + +module.exports = function (argument) { + return isObject(argument) || argument === null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-pure.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-pure.js ***! + \********************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = true; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-regexp.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-regexp.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var MATCH = wellKnownSymbol('match'); + +// `IsRegExp` abstract operation +// https://tc39.es/ecma262/#sec-isregexp +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/is-symbol.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/is-symbol.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js-pure/internals/use-symbol-as-uid.js"); + +var $Object = Object; + +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterate.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterate.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js-pure/internals/function-bind-context.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js-pure/internals/try-to-string.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js-pure/internals/is-array-iterator-method.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js-pure/internals/length-of-array-like.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js-pure/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js-pure/internals/get-iterator-method.js"); +var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ "./node_modules/core-js-pure/internals/iterator-close.js"); + +var $TypeError = TypeError; + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var ResultPrototype = Result.prototype; + +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterator-close.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterator-close.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js-pure/internals/get-method.js"); + +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterator-create-constructor.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterator-create-constructor.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js-pure/internals/iterators-core.js").IteratorPrototype); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js-pure/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterator-define.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterator-define.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var FunctionName = __webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js-pure/internals/function-name.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ "./node_modules/core-js-pure/internals/iterator-create-constructor.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js-pure/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js-pure/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); +var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js-pure/internals/iterators-core.js"); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; + + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } + + return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterators-core.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterators-core.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js-pure/internals/object-create.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js-pure/internals/object-get-prototype-of.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +/* eslint-disable es/no-array-prototype-keys -- safe */ +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; +else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + +// `%IteratorPrototype%[@@iterator]()` method +// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/iterators.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/iterators.js ***! + \**********************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/length-of-array-like.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/length-of-array-like.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js-pure/internals/to-length.js"); + +// `LengthOfArrayLike` abstract operation +// https://tc39.es/ecma262/#sec-lengthofarraylike +module.exports = function (obj) { + return toLength(obj.length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/math-trunc.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/math-trunc.js ***! + \***********************************************************/ +/***/ ((module) => { + +"use strict"; + +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.es/ecma262/#sec-math.trunc +// eslint-disable-next-line es/no-math-trunc -- safe +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/microtask.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/microtask.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var safeGetBuiltIn = __webpack_require__(/*! ../internals/safe-get-built-in */ "./node_modules/core-js-pure/internals/safe-get-built-in.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js-pure/internals/function-bind-context.js"); +var macrotask = (__webpack_require__(/*! ../internals/task */ "./node_modules/core-js-pure/internals/task.js").set); +var Queue = __webpack_require__(/*! ../internals/queue */ "./node_modules/core-js-pure/internals/queue.js"); +var IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ "./node_modules/core-js-pure/internals/engine-is-ios.js"); +var IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/engine-is-ios-pebble */ "./node_modules/core-js-pure/internals/engine-is-ios-pebble.js"); +var IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ "./node_modules/core-js-pure/internals/engine-is-webos-webkit.js"); +var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ "./node_modules/core-js-pure/internals/engine-is-node.js"); + +var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; +var document = global.document; +var process = global.process; +var Promise = global.Promise; +var microtask = safeGetBuiltIn('queueMicrotask'); +var notify, toggle, node, promise, then; + +// modern engines have queueMicrotask method +if (!microtask) { + var queue = new Queue(); + + var flush = function () { + var parent, fn; + if (IS_NODE && (parent = process.domain)) parent.exit(); + while (fn = queue.get()) try { + fn(); + } catch (error) { + if (queue.head) notify(); + throw error; + } + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise; + then = bind(promise.then, promise); + notify = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE) { + notify = function () { + process.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // `webpack` dev server bug on IE global methods - use bind(fn, global) + macrotask = bind(macrotask, global); + notify = function () { + macrotask(flush); + }; + } + + microtask = function (fn) { + if (!queue.head) notify(); + queue.add(fn); + }; +} + +module.exports = microtask; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/new-promise-capability.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/new-promise-capability.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); + +var $TypeError = TypeError; + +var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable(resolve); + this.reject = aCallable(reject); +}; + +// `NewPromiseCapability` abstract operation +// https://tc39.es/ecma262/#sec-newpromisecapability +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/normalize-string-argument.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/normalize-string-argument.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); + +module.exports = function (argument, $default) { + return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/not-a-regexp.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/not-a-regexp.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js-pure/internals/is-regexp.js"); + +var $TypeError = TypeError; + +module.exports = function (it) { + if (isRegExp(it)) { + throw new $TypeError("The method doesn't accept regular expressions"); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/number-parse-int.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/number-parse-int.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var trim = (__webpack_require__(/*! ../internals/string-trim */ "./node_modules/core-js-pure/internals/string-trim.js").trim); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js-pure/internals/whitespaces.js"); + +var $parseInt = global.parseInt; +var Symbol = global.Symbol; +var ITERATOR = Symbol && Symbol.iterator; +var hex = /^[+-]?0x/i; +var exec = uncurryThis(hex.exec); +var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22 + // MS Edge 18- broken with boxed symbols + || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); })); + +// `parseInt` method +// https://tc39.es/ecma262/#sec-parseint-string-radix +module.exports = FORCED ? function parseInt(string, radix) { + var S = trim(toString(string)); + return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10)); +} : $parseInt; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-assign.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-assign.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js-pure/internals/object-keys.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js-pure/internals/indexed-object.js"); + +// eslint-disable-next-line es/no-object-assign -- safe +var $assign = Object.assign; +// eslint-disable-next-line es/no-object-defineproperty -- required for testing +var defineProperty = Object.defineProperty; +var concat = uncurryThis([].concat); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +module.exports = !$assign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es/no-symbol -- safe + var symbol = Symbol('assign detection'); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-create.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-create.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* global ActiveXObject -- old IE, WSH */ +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js-pure/internals/object-define-properties.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js-pure/internals/enum-bug-keys.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js-pure/internals/hidden-keys.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js-pure/internals/html.js"); +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js-pure/internals/document-create-element.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js-pure/internals/shared-key.js"); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +// eslint-disable-next-line es/no-object-create -- safe +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-define-properties.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-define-properties.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js-pure/internals/v8-prototype-define-bug.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js-pure/internals/object-keys.js"); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es/no-object-defineproperties -- safe +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-define-property.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-define-property.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js-pure/internals/ie8-dom-define.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js-pure/internals/v8-prototype-define-bug.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js-pure/internals/to-property-key.js"); + +var $TypeError = TypeError; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js-pure/internals/to-property-key.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js-pure/internals/ie8-dom-define.js"); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-get-own-property-names-external.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-get-own-property-names-external.js ***! + \***************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* eslint-disable es/no-object-getownpropertynames -- safe */ +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js-pure/internals/object-get-own-property-names.js").f); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js-pure/internals/array-slice.js"); + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) === 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-get-own-property-names.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-get-own-property-names.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js-pure/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js-pure/internals/enum-bug-keys.js"); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es/no-object-getownpropertynames -- safe +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js": +/*!********************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-get-own-property-symbols.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-get-prototype-of.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-get-prototype-of.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js-pure/internals/shared-key.js"); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js-pure/internals/correct-prototype-getter.js"); + +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +// eslint-disable-next-line es/no-object-getprototypeof -- safe +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-is-prototype-of.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-is-prototype-of.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +module.exports = uncurryThis({}.isPrototypeOf); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-keys-internal.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-keys-internal.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js-pure/internals/array-includes.js").indexOf); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js-pure/internals/hidden-keys.js"); + +var push = uncurryThis([].push); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-keys.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-keys.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js-pure/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js-pure/internals/enum-bug-keys.js"); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es/no-object-keys -- safe +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-property-is-enumerable.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-set-prototype-of.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-set-prototype-of.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* eslint-disable no-proto -- safe */ +var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); +var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/core-js-pure/internals/a-possible-prototype.js"); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es/no-object-setprototypeof -- safe +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + requireObjectCoercible(O); + aPossiblePrototype(proto); + if (!isObject(O)) return O; + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/object-to-string.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/object-to-string.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js-pure/internals/to-string-tag-support.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js-pure/internals/classof.js"); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/ordinary-to-primitive.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/ordinary-to-primitive.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); + +var $TypeError = TypeError; + +// `OrdinaryToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-ordinarytoprimitive +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw new $TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/own-keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/own-keys.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js-pure/internals/object-get-own-property-names.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); + +var concat = uncurryThis([].concat); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/path.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js-pure/internals/path.js ***! + \*****************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/perform.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/perform.js ***! + \********************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/promise-constructor-detection.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/promise-constructor-detection.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js-pure/internals/is-forced.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js-pure/internals/inspect-source.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ "./node_modules/core-js-pure/internals/engine-is-browser.js"); +var IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ "./node_modules/core-js-pure/internals/engine-is-deno.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js-pure/internals/engine-v8-version.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var SPECIES = wellKnownSymbol('species'); +var SUBCLASSING = false; +var NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent); + +var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; + // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution + if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT; +}); + +module.exports = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT, + SUBCLASSING: SUBCLASSING +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/promise-native-constructor.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/promise-native-constructor.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); + +module.exports = global.Promise; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/promise-resolve.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/promise-resolve.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js": +/*!************************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js ***! + \************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js-pure/internals/check-correctness-of-iteration.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js-pure/internals/promise-constructor-detection.js").CONSTRUCTOR); + +module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) { + NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ }); +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/queue.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js-pure/internals/queue.js ***! + \******************************************************/ +/***/ ((module) => { + +"use strict"; + +var Queue = function () { + this.head = null; + this.tail = null; +}; + +Queue.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + var tail = this.tail; + if (tail) tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + var next = this.head = entry.next; + if (next === null) this.tail = null; + return entry.item; + } + } +}; + +module.exports = Queue; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/require-object-coercible.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/require-object-coercible.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js-pure/internals/is-null-or-undefined.js"); + +var $TypeError = TypeError; + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/safe-get-built-in.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/safe-get-built-in.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Avoid NodeJS experimental warning +module.exports = function (name) { + if (!DESCRIPTORS) return global[name]; + var descriptor = getOwnPropertyDescriptor(global, name); + return descriptor && descriptor.value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/set-species.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/set-species.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js-pure/internals/define-built-in-accessor.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineBuiltInAccessor(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/set-to-string-tag.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/set-to-string-tag.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js-pure/internals/to-string-tag-support.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js").f); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js-pure/internals/object-to-string.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC, SET_METHOD) { + var target = STATIC ? it : it && it.prototype; + if (target) { + if (!hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } + if (SET_METHOD && !TO_STRING_TAG_SUPPORT) { + createNonEnumerableProperty(target, 'toString', toString); + } + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/shared-key.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/shared-key.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js-pure/internals/uid.js"); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/shared-store.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/shared-store.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var globalThis = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js-pure/internals/define-global-property.js"); + +var SHARED = '__core-js_shared__'; +var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {}); + +(store.versions || (store.versions = [])).push({ + version: '3.37.0', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.37.0/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/shared.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/internals/shared.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js-pure/internals/shared-store.js"); + +module.exports = function (key, value) { + return store[key] || (store[key] = value || {}); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/species-constructor.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/species-constructor.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var aConstructor = __webpack_require__(/*! ../internals/a-constructor */ "./node_modules/core-js-pure/internals/a-constructor.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js-pure/internals/is-null-or-undefined.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.es/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/string-multibyte.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/string-multibyte.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); + +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var stringSlice = uncurryThis(''.slice); + +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString(requireObjectCoercible($this)); + var position = toIntegerOrInfinity(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/string-pad.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/string-pad.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// https://github.com/tc39/proposal-string-pad-start-end +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js-pure/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var $repeat = __webpack_require__(/*! ../internals/string-repeat */ "./node_modules/core-js-pure/internals/string-repeat.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); + +var repeat = uncurryThis($repeat); +var stringSlice = uncurryThis(''.slice); +var ceil = Math.ceil; + +// `String.prototype.{ padStart, padEnd }` methods implementation +var createMethod = function (IS_END) { + return function ($this, maxLength, fillString) { + var S = toString(requireObjectCoercible($this)); + var intMaxLength = toLength(maxLength); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : toString(fillString); + var fillLen, stringFiller; + if (intMaxLength <= stringLength || fillStr === '') return S; + fillLen = intMaxLength - stringLength; + stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen); + return IS_END ? S + stringFiller : stringFiller + S; + }; +}; + +module.exports = { + // `String.prototype.padStart` method + // https://tc39.es/ecma262/#sec-string.prototype.padstart + start: createMethod(false), + // `String.prototype.padEnd` method + // https://tc39.es/ecma262/#sec-string.prototype.padend + end: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/string-repeat.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/string-repeat.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); + +var $RangeError = RangeError; + +// `String.prototype.repeat` method implementation +// https://tc39.es/ecma262/#sec-string.prototype.repeat +module.exports = function repeat(count) { + var str = toString(requireObjectCoercible(this)); + var result = ''; + var n = toIntegerOrInfinity(count); + if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions'); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/string-trim.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/string-trim.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js-pure/internals/whitespaces.js"); + +var replace = uncurryThis(''.replace); +var ltrim = RegExp('^[' + whitespaces + ']+'); +var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = toString(requireObjectCoercible($this)); + if (TYPE & 1) string = replace(string, ltrim, ''); + if (TYPE & 2) string = replace(string, rtrim, '$1'); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/symbol-constructor-detection.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* eslint-disable es/no-symbol -- required for testing */ +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js-pure/internals/engine-v8-version.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); + +var $String = global.String; + +// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol('symbol detection'); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/symbol-define-to-primitive.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/symbol-define-to-primitive.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); + +module.exports = function () { + var Symbol = getBuiltIn('Symbol'); + var SymbolPrototype = Symbol && Symbol.prototype; + var valueOf = SymbolPrototype && SymbolPrototype.valueOf; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + + if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { + return call(valueOf, this); + }, { arity: 1 }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/symbol-is-registered.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/symbol-is-registered.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +var Symbol = getBuiltIn('Symbol'); +var keyFor = Symbol.keyFor; +var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf); + +// `Symbol.isRegisteredSymbol` method +// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol +module.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) { + try { + return keyFor(thisSymbolValue(value)) !== undefined; + } catch (error) { + return false; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/symbol-is-well-known.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/symbol-is-well-known.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js-pure/internals/is-symbol.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var Symbol = getBuiltIn('Symbol'); +var $isWellKnownSymbol = Symbol.isWellKnownSymbol; +var getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames'); +var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf); +var WellKnownSymbolsStore = shared('wks'); + +for (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) { + // some old engines throws on access to some keys like `arguments` or `caller` + try { + var symbolKey = symbolKeys[i]; + if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey); + } catch (error) { /* empty */ } +} + +// `Symbol.isWellKnownSymbol` method +// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol +// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected +module.exports = function isWellKnownSymbol(value) { + if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true; + try { + var symbol = thisSymbolValue(value); + for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) { + // eslint-disable-next-line eqeqeq -- polyfilled symbols case + if (WellKnownSymbolsStore[keys[j]] == symbol) return true; + } + } catch (error) { /* empty */ } + return false; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/symbol-registry-detection.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/symbol-registry-detection.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); + +/* eslint-disable es/no-symbol -- safe */ +module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/task.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js-pure/internals/task.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js-pure/internals/function-apply.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js-pure/internals/function-bind-context.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js-pure/internals/html.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js-pure/internals/array-slice.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js-pure/internals/document-create-element.js"); +var validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ "./node_modules/core-js-pure/internals/validate-arguments-length.js"); +var IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ "./node_modules/core-js-pure/internals/engine-is-ios.js"); +var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ "./node_modules/core-js-pure/internals/engine-is-node.js"); + +var set = global.setImmediate; +var clear = global.clearImmediate; +var process = global.process; +var Dispatch = global.Dispatch; +var Function = global.Function; +var MessageChannel = global.MessageChannel; +var String = global.String; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var $location, defer, channel, port; + +fails(function () { + // Deno throws a ReferenceError on `location` access without `--location` flag + $location = global.location; +}); + +var run = function (id) { + if (hasOwn(queue, id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function (id) { + return function () { + run(id); + }; +}; + +var eventListener = function (event) { + run(event.data); +}; + +var globalPostMessageDefer = function (id) { + // old engines have not location.origin + global.postMessage(String(id), $location.protocol + '//' + $location.host); +}; + +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!set || !clear) { + set = function setImmediate(handler) { + validateArgumentsLength(arguments.length, 1); + var fn = isCallable(handler) ? handler : Function(handler); + var args = arraySlice(arguments, 1); + queue[++counter] = function () { + apply(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (IS_NODE) { + defer = function (id) { + process.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !IS_IOS) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = eventListener; + defer = bind(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + global.addEventListener && + isCallable(global.postMessage) && + !global.importScripts && + $location && $location.protocol !== 'file:' && + !fails(globalPostMessageDefer) + ) { + defer = globalPostMessageDefer; + global.addEventListener('message', eventListener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } +} + +module.exports = { + set: set, + clear: clear +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-absolute-index.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-absolute-index.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js"); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-indexed-object.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-indexed-object.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js-pure/internals/indexed-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-integer-or-infinity.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js-pure/internals/math-trunc.js"); + +// `ToIntegerOrInfinity` abstract operation +// https://tc39.es/ecma262/#sec-tointegerorinfinity +module.exports = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-length.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-length.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js"); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + var len = toIntegerOrInfinity(argument); + return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-object.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); + +var $Object = Object; + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-primitive.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-primitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js-pure/internals/is-symbol.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js-pure/internals/get-method.js"); +var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js-pure/internals/ordinary-to-primitive.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw new $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-property-key.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-property-key.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js-pure/internals/to-primitive.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js-pure/internals/is-symbol.js"); + +// `ToPropertyKey` abstract operation +// https://tc39.es/ecma262/#sec-topropertykey +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-string-tag-support.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-string-tag-support.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/to-string.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/internals/to-string.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js-pure/internals/classof.js"); + +var $String = String; + +module.exports = function (argument) { + if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); + return $String(argument); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/try-to-string.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/try-to-string.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; + +var $String = String; + +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/uid.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js-pure/internals/uid.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); + +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); + +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/use-symbol-as-uid.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/use-symbol-as-uid.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* eslint-disable es/no-symbol -- required for testing */ +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); + +module.exports = NATIVE_SYMBOL + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/v8-prototype-define-bug.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/v8-prototype-define-bug.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +// V8 ~ Chrome 36- +// https://bugs.chromium.org/p/v8/issues/detail?id=3334 +module.exports = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype !== 42; +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/validate-arguments-length.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/validate-arguments-length.js ***! + \**************************************************************************/ +/***/ ((module) => { + +"use strict"; + +var $TypeError = TypeError; + +module.exports = function (passed, required) { + if (passed < required) throw new $TypeError('Not enough arguments'); + return passed; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/weak-map-basic-detection.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/weak-map-basic-detection.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); + +var WeakMap = global.WeakMap; + +module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/well-known-symbol-define.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/well-known-symbol-define.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js-pure/internals/path.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js").f); + +module.exports = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +exports.f = wellKnownSymbol; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/well-known-symbol.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/well-known-symbol.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js-pure/internals/uid.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js-pure/internals/use-symbol-as-uid.js"); + +var Symbol = global.Symbol; +var WellKnownSymbolsStore = shared('wks'); +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name)) { + WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) + ? Symbol[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/internals/whitespaces.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/internals/whitespaces.js ***! + \************************************************************/ +/***/ ((module) => { + +"use strict"; + +// a string of all valid unicode whitespaces +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js-pure/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js-pure/internals/object-set-prototype-of.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js-pure/internals/copy-constructor-properties.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js-pure/internals/object-create.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); +var installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ "./node_modules/core-js-pure/internals/install-error-cause.js"); +var installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ "./node_modules/core-js-pure/internals/error-stack-install.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js-pure/internals/iterate.js"); +var normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ "./node_modules/core-js-pure/internals/normalize-string-argument.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Error = Error; +var push = [].push; + +var $AggregateError = function AggregateError(errors, message /* , options */) { + var isInstance = isPrototypeOf(AggregateErrorPrototype, this); + var that; + if (setPrototypeOf) { + that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype); + } else { + that = isInstance ? this : create(AggregateErrorPrototype); + createNonEnumerableProperty(that, TO_STRING_TAG, 'Error'); + } + if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message)); + installErrorStack(that, $AggregateError, that.stack, 1); + if (arguments.length > 2) installErrorCause(that, arguments[2]); + var errorsArray = []; + iterate(errors, push, { that: errorsArray }); + createNonEnumerableProperty(that, 'errors', errorsArray); + return that; +}; + +if (setPrototypeOf) setPrototypeOf($AggregateError, $Error); +else copyConstructorProperties($AggregateError, $Error, { name: true }); + +var AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, { + constructor: createPropertyDescriptor(1, $AggregateError), + message: createPropertyDescriptor(1, ''), + name: createPropertyDescriptor(1, 'AggregateError') +}); + +// `AggregateError` constructor +// https://tc39.es/ecma262/#sec-aggregate-error-constructor +$({ global: true, constructor: true, arity: 2 }, { + AggregateError: $AggregateError +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.aggregate-error.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.aggregate-error.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's replaced to module below +__webpack_require__(/*! ../modules/es.aggregate-error.constructor */ "./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.concat.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.concat.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js-pure/internals/is-array.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js-pure/internals/length-of-array-like.js"); +var doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ "./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js-pure/internals/create-property.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js-pure/internals/array-species-create.js"); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js-pure/internals/array-method-has-species-support.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js-pure/internals/engine-v8-version.js"); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); + +// `Array.prototype.concat` method +// https://tc39.es/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike(E); + doesNotExceedSafeInteger(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + doesNotExceedSafeInteger(n + 1); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.filter.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.filter.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var $filter = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js-pure/internals/array-iteration.js").filter); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js-pure/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.for-each.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.for-each.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js-pure/internals/array-for-each.js"); + +// `Array.prototype.forEach` method +// https://tc39.es/ecma262/#sec-array.prototype.foreach +// eslint-disable-next-line es/no-array-prototype-foreach -- safe +$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, { + forEach: forEach +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.iterator.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.iterator.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js-pure/internals/add-to-unscopables.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js-pure/internals/internal-state.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js").f); +var defineIterator = __webpack_require__(/*! ../internals/iterator-define */ "./node_modules/core-js-pure/internals/iterator-define.js"); +var createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ "./node_modules/core-js-pure/internals/create-iter-result-object.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return createIterResultObject(undefined, true); + } + switch (state.kind) { + case 'keys': return createIterResultObject(index, false); + case 'values': return createIterResultObject(target[index], false); + } return createIterResultObject([index, target[index]], false); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +var values = Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +// V8 ~ Chrome 45- bug +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); +} catch (error) { /* empty */ } + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.map.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.map.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var $map = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js-pure/internals/array-iteration.js").map); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js-pure/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + +// `Array.prototype.map` method +// https://tc39.es/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.array.some.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.array.some.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var $some = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js-pure/internals/array-iteration.js").some); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js-pure/internals/array-method-is-strict.js"); + +var STRICT_METHOD = arrayMethodIsStrict('some'); + +// `Array.prototype.some` method +// https://tc39.es/ecma262/#sec-array.prototype.some +$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, { + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.date.to-json.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.date.to-json.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js-pure/internals/to-primitive.js"); +var toISOString = __webpack_require__(/*! ../internals/date-to-iso-string */ "./node_modules/core-js-pure/internals/date-to-iso-string.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js-pure/internals/classof-raw.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +var FORCED = fails(function () { + return new Date(NaN).toJSON() !== null + || call(Date.prototype.toJSON, { toISOString: function () { return 1; } }) !== 1; +}); + +// `Date.prototype.toJSON` method +// https://tc39.es/ecma262/#sec-date.prototype.tojson +$({ target: 'Date', proto: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O, 'number'); + return typeof pv == 'number' && !isFinite(pv) ? null : + (!('toISOString' in O) && classof(O) === 'Date') ? call(toISOString, O) : O.toISOString(); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.date.to-primitive.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.date.to-primitive.js ***! + \*******************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.json.stringify.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.json.stringify.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js-pure/internals/function-apply.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js-pure/internals/is-symbol.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js-pure/internals/array-slice.js"); +var getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ "./node_modules/core-js-pure/internals/get-json-replacer-function.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); + +var $String = String; +var $stringify = getBuiltIn('JSON', 'stringify'); +var exec = uncurryThis(/./.exec); +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var replace = uncurryThis(''.replace); +var numberToString = uncurryThis(1.0.toString); + +var tester = /[\uD800-\uDFFF]/g; +var low = /^[\uD800-\uDBFF]$/; +var hi = /^[\uDC00-\uDFFF]$/; + +var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () { + var symbol = getBuiltIn('Symbol')('stringify detection'); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) !== '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) !== '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) !== '{}'; +}); + +// https://github.com/tc39/proposal-well-formed-stringify +var ILL_FORMED_UNICODE = fails(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; +}); + +var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice(arguments); + var $replacer = getReplacerFunction(replacer); + if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined + args[1] = function (key, value) { + // some old implementations (like WebKit) could pass numbers as keys + if (isCallable($replacer)) value = call($replacer, this, $String(key), value); + if (!isSymbol(value)) return value; + }; + return apply($stringify, null, args); +}; + +var fixIllFormed = function (match, offset, string) { + var prev = charAt(string, offset - 1); + var next = charAt(string, offset + 1); + if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) { + return '\\u' + numberToString(charCodeAt(match, 0), 16); + } return match; +}; + +if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice(arguments); + var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result; + } + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.json.to-string-tag.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.json.to-string-tag.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); + +// JSON[@@toStringTag] property +// https://tc39.es/ecma262/#sec-json-@@tostringtag +setToStringTag(global.JSON, 'JSON', true); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.math.to-string-tag.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.math.to-string-tag.js ***! + \********************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.assign.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.assign.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var assign = __webpack_require__(/*! ../internals/object-assign */ "./node_modules/core-js-pure/internals/object-assign.js"); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +// eslint-disable-next-line es/no-object-assign -- required for testing +$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { + assign: assign +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.define-properties.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.define-properties.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var defineProperties = (__webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js-pure/internals/object-define-properties.js").f); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es/no-object-defineproperties -- safe +$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, { + defineProperties: defineProperties +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.define-property.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.define-property.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js").f); + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +// eslint-disable-next-line es/no-object-defineproperty -- safe +$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, { + defineProperty: defineProperty +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js": +/*!************************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var nativeGetOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js").f); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); + +var FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); }); + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js-pure/internals/own-keys.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js-pure/internals/create-property.js"); + +// `Object.getOwnPropertyDescriptors` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty(result, key, descriptor); + } + return result; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); + +// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); }); + +// `Object.getOwnPropertySymbols` method +// https://tc39.es/ecma262/#sec-object.getownpropertysymbols +$({ target: 'Object', stat: true, forced: FORCED }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : []; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.keys.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.keys.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js-pure/internals/to-object.js"); +var nativeKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js-pure/internals/object-keys.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.object.to-string.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.object.to-string.js ***! + \******************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.parse-int.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.parse-int.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ "./node_modules/core-js-pure/internals/number-parse-int.js"); + +// `parseInt` method +// https://tc39.es/ecma262/#sec-parseint-string-radix +$({ global: true, forced: parseInt !== $parseInt }, { + parseInt: $parseInt +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.all-settled.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.all-settled.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js-pure/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js-pure/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js"); + +// `Promise.allSettled` method +// https://tc39.es/ecma262/#sec-promise.allsettled +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + allSettled: function allSettled(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call(promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'fulfilled', value: value }; + --remaining || resolve(values); + }, function (error) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'rejected', reason: error }; + --remaining || resolve(values); + }); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.all.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.all.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js-pure/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js-pure/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js"); + +// `Promise.all` method +// https://tc39.es/ecma262/#sec-promise.all +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.any.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.any.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js-pure/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js-pure/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js"); + +var PROMISE_ANY_ERROR = 'No one promise resolved'; + +// `Promise.any` method +// https://tc39.es/ecma262/#sec-promise.any +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + any: function any(iterable) { + var C = this; + var AggregateError = getBuiltIn('AggregateError'); + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aCallable(C.resolve); + var errors = []; + var counter = 0; + var remaining = 1; + var alreadyResolved = false; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyRejected = false; + remaining++; + call(promiseResolve, C, promise).then(function (value) { + if (alreadyRejected || alreadyResolved) return; + alreadyResolved = true; + resolve(value); + }, function (error) { + if (alreadyRejected || alreadyResolved) return; + alreadyRejected = true; + errors[index] = error; + --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); + }); + }); + --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.catch.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.catch.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js-pure/internals/promise-constructor-detection.js").CONSTRUCTOR); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// `Promise.prototype.catch` method +// https://tc39.es/ecma262/#sec-promise.prototype.catch +$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } +}); + +// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['catch']; + if (NativePromisePrototype['catch'] !== method) { + defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true }); + } +} + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.constructor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.constructor.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ "./node_modules/core-js-pure/internals/engine-is-node.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js-pure/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js-pure/internals/set-species.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js-pure/internals/is-object.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js-pure/internals/an-instance.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js-pure/internals/species-constructor.js"); +var task = (__webpack_require__(/*! ../internals/task */ "./node_modules/core-js-pure/internals/task.js").set); +var microtask = __webpack_require__(/*! ../internals/microtask */ "./node_modules/core-js-pure/internals/microtask.js"); +var hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ "./node_modules/core-js-pure/internals/host-report-errors.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js-pure/internals/perform.js"); +var Queue = __webpack_require__(/*! ../internals/queue */ "./node_modules/core-js-pure/internals/queue.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js-pure/internals/internal-state.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js-pure/internals/promise-constructor-detection.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); + +var PROMISE = 'Promise'; +var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; +var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; +var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var setInternalState = InternalStateModule.set; +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var PromiseConstructor = NativePromiseConstructor; +var PromisePrototype = NativePromisePrototype; +var TypeError = global.TypeError; +var document = global.document; +var process = global.process; +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; + +var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; + +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && isCallable(then = it.then) ? then : false; +}; + +var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state === FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(new TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } +}; + +var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; +}; + +var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); +}; + +var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw new TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + call(then, value, + bind(internalResolve, wrapper, state), + bind(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED_PROMISE_CONSTRUCTOR) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromisePrototype); + aCallable(executor); + call(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind(internalResolve, state), bind(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: undefined + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable(onRejected) && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + if (state.state === PENDING) state.reactions.add(reaction); + else microtask(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, state); + this.reject = bind(internalReject, state); + }; + + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { + nativeThen = NativePromisePrototype.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf) { + setPrototypeOf(NativePromisePrototype, PromisePrototype); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.finally.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.finally.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js-pure/internals/is-callable.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js-pure/internals/species-constructor.js"); +var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ "./node_modules/core-js-pure/internals/promise-resolve.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 +var NON_GENERIC = !!NativePromiseConstructor && fails(function () { + // eslint-disable-next-line unicorn/no-thenable -- required for testing + NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); +}); + +// `Promise.prototype.finally` method +// https://tc39.es/ecma262/#sec-promise.prototype.finally +$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = isCallable(onFinally); + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } +}); + +// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['finally']; + if (NativePromisePrototype['finally'] !== method) { + defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true }); + } +} + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(/*! ../modules/es.promise.constructor */ "./node_modules/core-js-pure/modules/es.promise.constructor.js"); +__webpack_require__(/*! ../modules/es.promise.all */ "./node_modules/core-js-pure/modules/es.promise.all.js"); +__webpack_require__(/*! ../modules/es.promise.catch */ "./node_modules/core-js-pure/modules/es.promise.catch.js"); +__webpack_require__(/*! ../modules/es.promise.race */ "./node_modules/core-js-pure/modules/es.promise.race.js"); +__webpack_require__(/*! ../modules/es.promise.reject */ "./node_modules/core-js-pure/modules/es.promise.reject.js"); +__webpack_require__(/*! ../modules/es.promise.resolve */ "./node_modules/core-js-pure/modules/es.promise.resolve.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.race.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.race.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js-pure/internals/a-callable.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js-pure/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js-pure/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js"); + +// `Promise.race` method +// https://tc39.es/ecma262/#sec-promise.race +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + iterate(iterable, function (promise) { + call($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.reject.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.reject.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js-pure/internals/promise-constructor-detection.js").CONSTRUCTOR); + +// `Promise.reject` method +// https://tc39.es/ecma262/#sec-promise.reject +$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + var capabilityReject = capability.reject; + capabilityReject(r); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.resolve.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.resolve.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js-pure/internals/promise-native-constructor.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js-pure/internals/promise-constructor-detection.js").CONSTRUCTOR); +var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ "./node_modules/core-js-pure/internals/promise-resolve.js"); + +var PromiseConstructorWrapper = getBuiltIn('Promise'); +var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR; + +// `Promise.resolve` method +// https://tc39.es/ecma262/#sec-promise.resolve +$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.promise.with-resolvers.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.promise.with-resolvers.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js-pure/internals/new-promise-capability.js"); + +// `Promise.withResolvers` method +// https://github.com/tc39/proposal-promise-with-resolvers +$({ target: 'Promise', stat: true }, { + withResolvers: function withResolvers() { + var promiseCapability = newPromiseCapabilityModule.f(this); + return { + promise: promiseCapability.promise, + resolve: promiseCapability.resolve, + reject: promiseCapability.reject + }; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js ***! + \***********************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.string.ends-with.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.string.ends-with.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js"); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js").f); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js-pure/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ "./node_modules/core-js-pure/internals/not-a-regexp.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); +var correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js-pure/internals/correct-is-regexp-logic.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); + +var slice = uncurryThis(''.slice); +var min = Math.min; + +var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); +// https://github.com/zloirock/core-js/pull/702 +var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith'); + return descriptor && !descriptor.writable; +}(); + +// `String.prototype.endsWith` method +// https://tc39.es/ecma262/#sec-string.prototype.endswith +$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = toString(requireObjectCoercible(this)); + notARegExp(searchString); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = that.length; + var end = endPosition === undefined ? len : min(toLength(endPosition), len); + var search = toString(searchString); + return slice(that, end - search.length, end) === search; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.string.iterator.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.string.iterator.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js-pure/internals/string-multibyte.js").charAt); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js-pure/internals/internal-state.js"); +var defineIterator = __webpack_require__(/*! ../internals/iterator-define */ "./node_modules/core-js-pure/internals/iterator-define.js"); +var createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ "./node_modules/core-js-pure/internals/create-iter-result-object.js"); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: toString(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return createIterResultObject(undefined, true); + point = charAt(string, index); + state.index += point.length; + return createIterResultObject(point, false); +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.string.starts-with.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.string.starts-with.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js"); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js").f); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js-pure/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ "./node_modules/core-js-pure/internals/not-a-regexp.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js-pure/internals/require-object-coercible.js"); +var correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js-pure/internals/correct-is-regexp-logic.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); + +var stringSlice = uncurryThis(''.slice); +var min = Math.min; + +var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); +// https://github.com/zloirock/core-js/pull/702 +var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; +}(); + +// `String.prototype.startsWith` method +// https://tc39.es/ecma262/#sec-string.prototype.startswith +$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = toString(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = toString(searchString); + return stringSlice(that, index, index + search.length) === search; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.async-iterator.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.async-iterator.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.asyncIterator` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.asynciterator +defineWellKnownSymbol('asyncIterator'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.constructor.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.constructor.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js-pure/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js-pure/internals/function-uncurry-this.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js-pure/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js-pure/internals/descriptors.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js-pure/internals/fails.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js-pure/internals/an-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js-pure/internals/to-indexed-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js-pure/internals/to-property-key.js"); +var $toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js-pure/internals/create-property-descriptor.js"); +var nativeObjectCreate = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js-pure/internals/object-create.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js-pure/internals/object-keys.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js-pure/internals/object-get-own-property-names.js"); +var getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ "./node_modules/core-js-pure/internals/object-get-own-property-names-external.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js"); +var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js-pure/internals/object-define-properties.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js-pure/internals/define-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js-pure/internals/define-built-in-accessor.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js-pure/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js-pure/internals/hidden-keys.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js-pure/internals/uid.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js"); +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); +var defineSymbolToPrimitive = __webpack_require__(/*! ../internals/symbol-define-to-primitive */ "./node_modules/core-js-pure/internals/symbol-define-to-primitive.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js-pure/internals/internal-state.js"); +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js-pure/internals/array-iteration.js").forEach); + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; + +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); + +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = global.Symbol; +var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; +var RangeError = global.RangeError; +var TypeError = global.TypeError; +var QObject = global.QObject; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var push = uncurryThis([].push); + +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var WellKnownSymbolsStore = shared('wks'); + +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var fallbackDefineProperty = function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +}; + +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a !== 7; +}) ? fallbackDefineProperty : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPropertyKey(P); + anObject(Attributes); + if (hasOwn(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null))); + O[HIDDEN][key] = true; + } else { + if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPropertyKey(V); + var enumerable = call(nativePropertyIsEnumerable, this, P); + if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; + return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] + ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPropertyKey(P); + if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); + }); + return result; +}; + +var $getOwnPropertySymbols = function (O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { + push(result, AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.es/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); + var tag = uid(description); + var setter = function (value) { + var $this = this === undefined ? global : this; + if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); + if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false; + var descriptor = createPropertyDescriptor(1, value); + try { + setSymbolDescriptor($this, tag, descriptor); + } catch (error) { + if (!(error instanceof RangeError)) throw error; + fallbackDefineProperty($this, tag, descriptor); + } + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + SymbolPrototype = $Symbol[PROTOTYPE]; + + defineBuiltIn(SymbolPrototype, 'toString', function toString() { + return getInternalState(this).tag; + }); + + defineBuiltIn($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + definePropertiesModule.f = $defineProperties; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + defineBuiltInAccessor(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames +}); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.description.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.description.js ***! + \********************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.for.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.for.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js-pure/internals/to-string.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ "./node_modules/core-js-pure/internals/symbol-registry-detection.js"); + +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.for` method +// https://tc39.es/ecma262/#sec-symbol.for +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + 'for': function (key) { + var string = toString(key); + if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = getBuiltIn('Symbol')(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.has-instance.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.has-instance.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.hasInstance` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.hasinstance +defineWellKnownSymbol('hasInstance'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.isConcatSpreadable` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable +defineWellKnownSymbol('isConcatSpreadable'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.iterator.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.iterator.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.iterator` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.iterator +defineWellKnownSymbol('iterator'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(/*! ../modules/es.symbol.constructor */ "./node_modules/core-js-pure/modules/es.symbol.constructor.js"); +__webpack_require__(/*! ../modules/es.symbol.for */ "./node_modules/core-js-pure/modules/es.symbol.for.js"); +__webpack_require__(/*! ../modules/es.symbol.key-for */ "./node_modules/core-js-pure/modules/es.symbol.key-for.js"); +__webpack_require__(/*! ../modules/es.json.stringify */ "./node_modules/core-js-pure/modules/es.json.stringify.js"); +__webpack_require__(/*! ../modules/es.object.get-own-property-symbols */ "./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js"); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.key-for.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.key-for.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js-pure/internals/is-symbol.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js-pure/internals/try-to-string.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js-pure/internals/shared.js"); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ "./node_modules/core-js-pure/internals/symbol-registry-detection.js"); + +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.keyFor` method +// https://tc39.es/ecma262/#sec-symbol.keyfor +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol'); + if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.match-all.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.match-all.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.matchAll` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.matchall +defineWellKnownSymbol('matchAll'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.match.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.match.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.match` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.match +defineWellKnownSymbol('match'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.replace.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.replace.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.replace` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.replace +defineWellKnownSymbol('replace'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.search.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.search.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.search` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.search +defineWellKnownSymbol('search'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.species.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.species.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.species` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.species +defineWellKnownSymbol('species'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.split.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.split.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.split` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.split +defineWellKnownSymbol('split'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.to-primitive.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.to-primitive.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); +var defineSymbolToPrimitive = __webpack_require__(/*! ../internals/symbol-define-to-primitive */ "./node_modules/core-js-pure/internals/symbol-define-to-primitive.js"); + +// `Symbol.toPrimitive` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.toprimitive +defineWellKnownSymbol('toPrimitive'); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js-pure/internals/get-built-in.js"); +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); + +// `Symbol.toStringTag` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.tostringtag +defineWellKnownSymbol('toStringTag'); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag(getBuiltIn('Symbol'), 'Symbol'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/es.symbol.unscopables.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/es.symbol.unscopables.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.unscopables` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.unscopables +defineWellKnownSymbol('unscopables'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.function.metadata.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.function.metadata.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js-pure/internals/well-known-symbol.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js-pure/internals/object-define-property.js").f); + +var METADATA = wellKnownSymbol('metadata'); +var FunctionPrototype = Function.prototype; + +// Function.prototype[@@metadata] +// https://github.com/tc39/proposal-decorator-metadata +if (FunctionPrototype[METADATA] === undefined) { + defineProperty(FunctionPrototype, METADATA, { + value: null + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.asyncDispose` well-known symbol +// https://github.com/tc39/proposal-async-explicit-resource-management +defineWellKnownSymbol('asyncDispose'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.custom-matcher.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.custom-matcher.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.customMatcher` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('customMatcher'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.dispose.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.dispose.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.dispose` well-known symbol +// https://github.com/tc39/proposal-explicit-resource-management +defineWellKnownSymbol('dispose'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var isRegisteredSymbol = __webpack_require__(/*! ../internals/symbol-is-registered */ "./node_modules/core-js-pure/internals/symbol-is-registered.js"); + +// `Symbol.isRegisteredSymbol` method +// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol +$({ target: 'Symbol', stat: true }, { + isRegisteredSymbol: isRegisteredSymbol +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.is-registered.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.is-registered.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var isRegisteredSymbol = __webpack_require__(/*! ../internals/symbol-is-registered */ "./node_modules/core-js-pure/internals/symbol-is-registered.js"); + +// `Symbol.isRegistered` method +// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol +$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, { + isRegistered: isRegisteredSymbol +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var isWellKnownSymbol = __webpack_require__(/*! ../internals/symbol-is-well-known */ "./node_modules/core-js-pure/internals/symbol-is-well-known.js"); + +// `Symbol.isWellKnownSymbol` method +// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol +// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected +$({ target: 'Symbol', stat: true, forced: true }, { + isWellKnownSymbol: isWellKnownSymbol +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js-pure/internals/export.js"); +var isWellKnownSymbol = __webpack_require__(/*! ../internals/symbol-is-well-known */ "./node_modules/core-js-pure/internals/symbol-is-well-known.js"); + +// `Symbol.isWellKnown` method +// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol +// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected +$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, { + isWellKnown: isWellKnownSymbol +}); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.matcher.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.matcher.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.matcher` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('matcher'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: Remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.metadataKey` well-known symbol +// https://github.com/tc39/proposal-decorator-metadata +defineWellKnownSymbol('metadataKey'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.metadata.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.metadata.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.metadata` well-known symbol +// https://github.com/tc39/proposal-decorators +defineWellKnownSymbol('metadata'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.observable.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.observable.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.observable` well-known symbol +// https://github.com/tc39/proposal-observable +defineWellKnownSymbol('observable'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +// `Symbol.patternMatch` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('patternMatch'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js-pure/internals/well-known-symbol-define.js"); + +defineWellKnownSymbol('replaceAll'); + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/web.dom-collections.for-each.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/web.dom-collections.for-each.js ***! + \***************************************************************************/ +/***/ (() => { + +// empty + + +/***/ }), + +/***/ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +__webpack_require__(/*! ../modules/es.array.iterator */ "./node_modules/core-js-pure/modules/es.array.iterator.js"); +var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js-pure/internals/dom-iterables.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js-pure/internals/global.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js-pure/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js-pure/internals/iterators.js"); + +for (var COLLECTION_NAME in DOMIterables) { + setToStringTag(global[COLLECTION_NAME], COLLECTION_NAME); + Iterators[COLLECTION_NAME] = Iterators.Array; +} + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/array/virtual/for-each.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/array/virtual/for-each.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../../es/array/virtual/for-each */ "./node_modules/core-js-pure/es/array/virtual/for-each.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/ends-with.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/ends-with.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/instance/ends-with */ "./node_modules/core-js-pure/es/instance/ends-with.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/filter.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/filter.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/instance/filter */ "./node_modules/core-js-pure/es/instance/filter.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/for-each.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/for-each.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var classof = __webpack_require__(/*! ../../internals/classof */ "./node_modules/core-js-pure/internals/classof.js"); +var hasOwn = __webpack_require__(/*! ../../internals/has-own-property */ "./node_modules/core-js-pure/internals/has-own-property.js"); +var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ "./node_modules/core-js-pure/internals/object-is-prototype-of.js"); +var method = __webpack_require__(/*! ../array/virtual/for-each */ "./node_modules/core-js-pure/stable/array/virtual/for-each.js"); +__webpack_require__(/*! ../../modules/web.dom-collections.for-each */ "./node_modules/core-js-pure/modules/web.dom-collections.for-each.js"); + +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.forEach; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach) + || hasOwn(DOMIterables, classof(it)) ? method : own; +}; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/map.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/map.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/instance/map */ "./node_modules/core-js-pure/es/instance/map.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/some.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/some.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/instance/some */ "./node_modules/core-js-pure/es/instance/some.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/instance/starts-with.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/instance/starts-with.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/instance/starts-with */ "./node_modules/core-js-pure/es/instance/starts-with.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/json/stringify.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/json/stringify.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/json/stringify */ "./node_modules/core-js-pure/es/json/stringify.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/assign.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/assign.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/assign */ "./node_modules/core-js-pure/es/object/assign.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/define-properties.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/define-properties.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/define-properties */ "./node_modules/core-js-pure/es/object/define-properties.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/define-property.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/define-property.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/define-property */ "./node_modules/core-js-pure/es/object/define-property.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js": +/*!********************************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js ***! + \********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/get-own-property-descriptor */ "./node_modules/core-js-pure/es/object/get-own-property-descriptor.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js ***! + \*********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/get-own-property-descriptors */ "./node_modules/core-js-pure/es/object/get-own-property-descriptors.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/get-own-property-symbols.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/get-own-property-symbols.js ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/get-own-property-symbols */ "./node_modules/core-js-pure/es/object/get-own-property-symbols.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/object/keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/object/keys.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/object/keys */ "./node_modules/core-js-pure/es/object/keys.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/parse-int.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js-pure/stable/parse-int.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../es/parse-int */ "./node_modules/core-js-pure/es/parse-int.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/promise/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/promise/index.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/promise */ "./node_modules/core-js-pure/es/promise/index.js"); +__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/symbol/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js-pure/stable/symbol/index.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/symbol */ "./node_modules/core-js-pure/es/symbol/index.js"); +__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/symbol/iterator.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/symbol/iterator.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/symbol/iterator */ "./node_modules/core-js-pure/es/symbol/iterator.js"); +__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/core-js-pure/stable/symbol/to-primitive.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js-pure/stable/symbol/to-primitive.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var parent = __webpack_require__(/*! ../../es/symbol/to-primitive */ "./node_modules/core-js-pure/es/symbol/to-primitive.js"); + +module.exports = parent; + + +/***/ }), + +/***/ "./node_modules/async/dist/async.mjs": +/*!*******************************************!*\ + !*** ./node_modules/async/dist/async.mjs ***! + \*******************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ all: () => (/* binding */ every$1), +/* harmony export */ allLimit: () => (/* binding */ everyLimit$1), +/* harmony export */ allSeries: () => (/* binding */ everySeries$1), +/* harmony export */ any: () => (/* binding */ some$1), +/* harmony export */ anyLimit: () => (/* binding */ someLimit$1), +/* harmony export */ anySeries: () => (/* binding */ someSeries$1), +/* harmony export */ apply: () => (/* binding */ apply), +/* harmony export */ applyEach: () => (/* binding */ applyEach), +/* harmony export */ applyEachSeries: () => (/* binding */ applyEachSeries), +/* harmony export */ asyncify: () => (/* binding */ asyncify), +/* harmony export */ auto: () => (/* binding */ auto), +/* harmony export */ autoInject: () => (/* binding */ autoInject), +/* harmony export */ cargo: () => (/* binding */ cargo$1), +/* harmony export */ cargoQueue: () => (/* binding */ cargo), +/* harmony export */ compose: () => (/* binding */ compose), +/* harmony export */ concat: () => (/* binding */ concat$1), +/* harmony export */ concatLimit: () => (/* binding */ concatLimit$1), +/* harmony export */ concatSeries: () => (/* binding */ concatSeries$1), +/* harmony export */ constant: () => (/* binding */ constant$1), +/* harmony export */ "default": () => (/* binding */ index), +/* harmony export */ detect: () => (/* binding */ detect$1), +/* harmony export */ detectLimit: () => (/* binding */ detectLimit$1), +/* harmony export */ detectSeries: () => (/* binding */ detectSeries$1), +/* harmony export */ dir: () => (/* binding */ dir), +/* harmony export */ doDuring: () => (/* binding */ doWhilst$1), +/* harmony export */ doUntil: () => (/* binding */ doUntil), +/* harmony export */ doWhilst: () => (/* binding */ doWhilst$1), +/* harmony export */ during: () => (/* binding */ whilst$1), +/* harmony export */ each: () => (/* binding */ each), +/* harmony export */ eachLimit: () => (/* binding */ eachLimit$1), +/* harmony export */ eachOf: () => (/* binding */ eachOf$1), +/* harmony export */ eachOfLimit: () => (/* binding */ eachOfLimit$1), +/* harmony export */ eachOfSeries: () => (/* binding */ eachOfSeries$1), +/* harmony export */ eachSeries: () => (/* binding */ eachSeries$1), +/* harmony export */ ensureAsync: () => (/* binding */ ensureAsync), +/* harmony export */ every: () => (/* binding */ every$1), +/* harmony export */ everyLimit: () => (/* binding */ everyLimit$1), +/* harmony export */ everySeries: () => (/* binding */ everySeries$1), +/* harmony export */ filter: () => (/* binding */ filter$1), +/* harmony export */ filterLimit: () => (/* binding */ filterLimit$1), +/* harmony export */ filterSeries: () => (/* binding */ filterSeries$1), +/* harmony export */ find: () => (/* binding */ detect$1), +/* harmony export */ findLimit: () => (/* binding */ detectLimit$1), +/* harmony export */ findSeries: () => (/* binding */ detectSeries$1), +/* harmony export */ flatMap: () => (/* binding */ concat$1), +/* harmony export */ flatMapLimit: () => (/* binding */ concatLimit$1), +/* harmony export */ flatMapSeries: () => (/* binding */ concatSeries$1), +/* harmony export */ foldl: () => (/* binding */ reduce$1), +/* harmony export */ foldr: () => (/* binding */ reduceRight), +/* harmony export */ forEach: () => (/* binding */ each), +/* harmony export */ forEachLimit: () => (/* binding */ eachLimit$1), +/* harmony export */ forEachOf: () => (/* binding */ eachOf$1), +/* harmony export */ forEachOfLimit: () => (/* binding */ eachOfLimit$1), +/* harmony export */ forEachOfSeries: () => (/* binding */ eachOfSeries$1), +/* harmony export */ forEachSeries: () => (/* binding */ eachSeries$1), +/* harmony export */ forever: () => (/* binding */ forever$1), +/* harmony export */ groupBy: () => (/* binding */ groupBy), +/* harmony export */ groupByLimit: () => (/* binding */ groupByLimit$1), +/* harmony export */ groupBySeries: () => (/* binding */ groupBySeries), +/* harmony export */ inject: () => (/* binding */ reduce$1), +/* harmony export */ log: () => (/* binding */ log), +/* harmony export */ map: () => (/* binding */ map$1), +/* harmony export */ mapLimit: () => (/* binding */ mapLimit$1), +/* harmony export */ mapSeries: () => (/* binding */ mapSeries$1), +/* harmony export */ mapValues: () => (/* binding */ mapValues), +/* harmony export */ mapValuesLimit: () => (/* binding */ mapValuesLimit$1), +/* harmony export */ mapValuesSeries: () => (/* binding */ mapValuesSeries), +/* harmony export */ memoize: () => (/* binding */ memoize), +/* harmony export */ nextTick: () => (/* binding */ nextTick), +/* harmony export */ parallel: () => (/* binding */ parallel), +/* harmony export */ parallelLimit: () => (/* binding */ parallelLimit), +/* harmony export */ priorityQueue: () => (/* binding */ priorityQueue), +/* harmony export */ queue: () => (/* binding */ queue), +/* harmony export */ race: () => (/* binding */ race$1), +/* harmony export */ reduce: () => (/* binding */ reduce$1), +/* harmony export */ reduceRight: () => (/* binding */ reduceRight), +/* harmony export */ reflect: () => (/* binding */ reflect), +/* harmony export */ reflectAll: () => (/* binding */ reflectAll), +/* harmony export */ reject: () => (/* binding */ reject$1), +/* harmony export */ rejectLimit: () => (/* binding */ rejectLimit$1), +/* harmony export */ rejectSeries: () => (/* binding */ rejectSeries$1), +/* harmony export */ retry: () => (/* binding */ retry), +/* harmony export */ retryable: () => (/* binding */ retryable), +/* harmony export */ select: () => (/* binding */ filter$1), +/* harmony export */ selectLimit: () => (/* binding */ filterLimit$1), +/* harmony export */ selectSeries: () => (/* binding */ filterSeries$1), +/* harmony export */ seq: () => (/* binding */ seq), +/* harmony export */ series: () => (/* binding */ series), +/* harmony export */ setImmediate: () => (/* binding */ setImmediate$1), +/* harmony export */ some: () => (/* binding */ some$1), +/* harmony export */ someLimit: () => (/* binding */ someLimit$1), +/* harmony export */ someSeries: () => (/* binding */ someSeries$1), +/* harmony export */ sortBy: () => (/* binding */ sortBy$1), +/* harmony export */ timeout: () => (/* binding */ timeout), +/* harmony export */ times: () => (/* binding */ times), +/* harmony export */ timesLimit: () => (/* binding */ timesLimit), +/* harmony export */ timesSeries: () => (/* binding */ timesSeries), +/* harmony export */ transform: () => (/* binding */ transform), +/* harmony export */ tryEach: () => (/* binding */ tryEach$1), +/* harmony export */ unmemoize: () => (/* binding */ unmemoize), +/* harmony export */ until: () => (/* binding */ until), +/* harmony export */ waterfall: () => (/* binding */ waterfall$1), +/* harmony export */ whilst: () => (/* binding */ whilst$1), +/* harmony export */ wrapSync: () => (/* binding */ asyncify) +/* harmony export */ }); +/** + * Creates a continuation function with some arguments already applied. + * + * Useful as a shorthand when combined with other control flow functions. Any + * arguments passed to the returned function are added to the arguments + * originally passed to apply. + * + * @name apply + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {Function} fn - The function you want to eventually apply all + * arguments to. Invokes with (arguments...). + * @param {...*} arguments... - Any number of arguments to automatically apply + * when the continuation is called. + * @returns {Function} the partially-applied function + * @example + * + * // using apply + * async.parallel([ + * async.apply(fs.writeFile, 'testfile1', 'test1'), + * async.apply(fs.writeFile, 'testfile2', 'test2') + * ]); + * + * + * // the same process without using apply + * async.parallel([ + * function(callback) { + * fs.writeFile('testfile1', 'test1', callback); + * }, + * function(callback) { + * fs.writeFile('testfile2', 'test2', callback); + * } + * ]); + * + * // It's possible to pass any number of additional arguments when calling the + * // continuation: + * + * node> var fn = async.apply(sys.puts, 'one'); + * node> fn('two', 'three'); + * one + * two + * three + */ +function apply(fn, ...args) { + return (...callArgs) => fn(...args,...callArgs); +} + +function initialParams (fn) { + return function (...args/*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; +} + +/* istanbul ignore file */ + +var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; +var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +function fallback(fn) { + setTimeout(fn, 0); +} + +function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); +} + +var _defer$1; + +if (hasQueueMicrotask) { + _defer$1 = queueMicrotask; +} else if (hasSetImmediate) { + _defer$1 = setImmediate; +} else if (hasNextTick) { + _defer$1 = process.nextTick; +} else { + _defer$1 = fallback; +} + +var setImmediate$1 = wrap(_defer$1); + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if (isAsync(func)) { + return function (...args/*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback) + } + } + + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback) + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + setImmediate$1(e => { throw e }, err); + } +} + +function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; +} + +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; +} + +function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function') + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; +} + +// conditionally promisify a function. +// only return a promise if a callback is omitted +function awaitify (asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined') + function awaitable (...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args) + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err) + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }) + } + + return awaitable +} + +function applyEach$1 (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = awaitify(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; +} + +function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); +} + +function isArrayLike(value) { + return value && + typeof value.length === 'number' && + value.length >= 0 && + value.length % 1 === 0; +} + +// A temporary value used to identify if the loop should be broken. +// See #1064, #1293 +const breakLoop = {}; +var breakLoop$1 = breakLoop; + +function once(fn) { + function wrapper (...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper +} + +function getIterator (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); +} + +function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? {value: coll[i], key: i} : null; + } +} + +function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return {value: item.value, key: i}; + } +} + +function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? {value: obj[key], key} : null; + }; +} + +function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); +} + +function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; +} + +// for async generators +function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({value, done: iterDone}) => { + //console.log('got value', value) + if (canceled || done) return + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return + if (err) return handleError(err) + + if (err === false) { + done = true; + canceled = true; + return + } + + if (result === breakLoop$1 || (done && running <= 0)) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return + awaiting = false; + done = true; + callback(err); + } + + replenish(); +} + +var eachOfLimit$2 = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1') + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback) + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback) + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return + running -= 1; + if (err) { + done = true; + callback(err); + } + else if (err === false) { + done = true; + canceled = true; + } + else if (value === breakLoop$1 || (done && running <= 0)) { + done = true; + return callback(null); + } + else if (!looping) { + replenish(); + } + } + + function replenish () { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; +}; + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback); +} + +var eachOfLimit$1 = awaitify(eachOfLimit, 4); + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index = 0, + completed = 0, + {length} = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return + if (err) { + callback(err); + } else if ((++completed === length) || value === breakLoop$1) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, onlyOnce(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric (coll, iteratee, callback) { + return eachOfLimit$1(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); +} + +var eachOf$1 = awaitify(eachOf, 3); + +/** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function map (coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback) +} +var map$1 = awaitify(map, 3); + +/** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ +var applyEach = applyEach$1(map$1); + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$1(coll, 1, iteratee, callback) +} +var eachOfSeries$1 = awaitify(eachOfSeries, 3); + +/** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapSeries (coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback) +} +var mapSeries$1 = awaitify(mapSeries, 3); + +/** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ +var applyEachSeries = applyEach$1(mapSeries$1); + +const PROMISE_SYMBOL = Symbol('promiseCallback'); + +function promiseCallback () { + let resolve, reject; + function callback (err, ...args) { + if (err) return reject(err) + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, + reject = rej; + }); + + return callback +} + +/** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + + '` has a non-existent dependency `' + + dependencyName + '` in ' + + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while(readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error( + 'async.auto cannot execute tasks due to a recursive dependency' + ); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[PROMISE_SYMBOL] +} + +var FN_ARGS = /^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/; +var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /(=.+)?(\s*)$/; + +function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index+1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = (endIndex === -1) ? string.length : endIndex; + } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; +} + +function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src) + let [, args] = match; + return args + .replace(/\s/g, '') + .split(FN_ARG_SPLIT) + .map((arg) => arg.replace(FN_ARG, '').trim()); +} + +/** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ +function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = + (!fnIsAsync && taskFn.length === 1) || + (fnIsAsync && taskFn.length === 0); + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + + return auto(newTasks, callback); +} + +// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation +// used for queues. This implementation assumes that the node provided by the user can be modified +// to adjust the next and last properties. We implement only the minimal functionality +// for queue support. +class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next; + else this.head = node.next; + if (node.next) node.next.prev = node.prev; + else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty () { + while(this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode; + else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode; + else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node); + else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node); + else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this] + } + + *[Symbol.iterator] () { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove (testFn) { + var curr = this.head; + while(curr) { + var {next} = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } +} + +function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; +} + +function queue$1(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on (event, handler) { + events[event].push(handler); + } + + function once (event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off (event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []) + if (!handler) return events[event] = [] + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger (event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback (err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res() + if (args.length <= 1) return res(args[0]) + res(args); + } + + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback : + (callback || promiseCallback) + ); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }) + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= (q.concurrency - q.buffer) ) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + setImmediate$1(() => trigger('drain')); + return true + } + return false + } + + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err) + resolve(data); + }); + }) + } + off(name); + on(name, handler); + + }; + + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem (data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator] () { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, false, callback)) + } + return _insert(data, false, false, callback); + }, + pushAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, true, callback)) + } + return _insert(data, false, true, callback); + }, + kill () { + off(); + q._tasks.empty(); + }, + unshift (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, false, callback)) + } + return _insert(data, true, false, callback); + }, + unshiftAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, true, callback)) + } + return _insert(data, true, true, callback); + }, + remove (testFn) { + q._tasks.remove(testFn); + }, + process () { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while(!q.paused && numRunning < q.concurrency && q._tasks.length){ + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length () { + return q._tasks.length; + }, + running () { + return numRunning; + }, + workersList () { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause () { + q.paused = true; + }, + resume () { + if (q.paused === false) { return; } + q.paused = false; + setImmediate$1(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + }, + }); + return q; +} + +/** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +var reduce$1 = awaitify(reduce, 4); + +/** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ +function seq(...functions) { + var _functions = functions.map(wrapAsync); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = promiseCallback(); + } + + reduce$1(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results)); + + return cb[PROMISE_SYMBOL] + }; +} + +/** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ +function compose(...args) { + return seq(...args.reverse()); +} + +/** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapLimit (coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback) +} +var mapLimit$1 = awaitify(mapLimit, 4); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +var concatLimit$1 = awaitify(concatLimit, 4); + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback) +} +var concat$1 = awaitify(concat, 3); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback) +} +var concatSeries$1 = awaitify(concatSeries, 3); + +/** + * Returns a function that when called, calls-back with the values provided. + * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to + * [`auto`]{@link module:ControlFlow.auto}. + * + * @name constant + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {...*} arguments... - Any number of arguments to automatically invoke + * callback with. + * @returns {AsyncFunction} Returns a function that when invoked, automatically + * invokes the callback with the previous given arguments. + * @example + * + * async.waterfall([ + * async.constant(42), + * function (value, next) { + * // value === 42 + * }, + * //... + * ], callback); + * + * async.waterfall([ + * async.constant(filename, "utf8"), + * fs.readFile, + * function (fileData, next) { + * //... + * } + * //... + * ], callback); + * + * async.auto({ + * hostname: async.constant("https://server.net/"), + * port: findFreePort, + * launchServer: ["hostname", "port", function (options, cb) { + * startServer(options, cb); + * }], + * //... + * }, callback); + */ +function constant$1(...args) { + return function (...ignoredArgs/*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; +} + +function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop$1); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; +} + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback) +} +var detect$1 = awaitify(detect, 3); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var detectLimit$1 = awaitify(detectLimit, 4); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback) +} + +var detectSeries$1 = awaitify(detectSeries, 3); + +function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }) +} + +/** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ +var dir = consoleFunc('dir'); + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +var doWhilst$1 = awaitify(doWhilst, 3); + +/** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb (err, !truth)); + }, callback); +} + +function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); +} + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit$2(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} + +var each = awaitify(eachLimit$2, 3); + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} +var eachLimit$1 = awaitify(eachLimit, 4); + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return eachLimit$1(coll, 1, iteratee, callback) +} +var eachSeries$1 = awaitify(eachSeries, 3); + +/** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ +function ensureAsync(fn) { + if (isAsync(fn)) return fn; + return function (...args/*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; +} + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback) +} +var every$1 = awaitify(every, 3); + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var everyLimit$1 = awaitify(everyLimit, 4); + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback) +} +var everySeries$1 = awaitify(everySeries, 3); + +function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); +} + +function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({index, value: x}); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); + }); +} + +function _filter(eachfn, coll, iteratee, callback) { + var filter = isArrayLike(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, wrapAsync(iteratee), callback); +} + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter (coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback) +} +var filter$1 = awaitify(filter, 3); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit (coll, limit, iteratee, callback) { + return _filter(eachOfLimit$2(limit), coll, iteratee, callback) +} +var filterLimit$1 = awaitify(filterLimit, 4); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries (coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback) +} +var filterSeries$1 = awaitify(filterSeries, 3); + +/** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ +function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); +} +var forever$1 = awaitify(forever, 2); + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, {key, val}); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var {hasOwnProperty} = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var {key} = mapResults[i]; + var {val} = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +} + +var groupByLimit$1 = awaitify(groupByLimit, 4); + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function groupBy (coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback) +} + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupBySeries (coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback) +} + +/** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ +var log = consoleFunc('log'); + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit$2(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); +} + +var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + +/** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback) +} + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback) +} + +/** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ +function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; +} + +/* istanbul ignore file */ + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +var _defer; + +if (hasNextTick) { + _defer = process.nextTick; +} else if (hasSetImmediate) { + _defer = setImmediate; +} else { + _defer = fallback; +} + +var nextTick = wrap(_defer); + +var _parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); +}, 3); + +/** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function parallel(tasks, callback) { + return _parallel(eachOf$1, tasks, callback); +} + +/** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ +function parallelLimit(tasks, limit, callback) { + return _parallel(eachOfLimit$2(limit), tasks, callback); +} + +/** + * A queue of tasks for the worker function to complete. + * @typedef {Iterable} QueueObject + * @memberOf module:ControlFlow + * @property {Function} length - a function returning the number of items + * waiting to be processed. Invoke with `queue.length()`. + * @property {boolean} started - a boolean indicating whether or not any + * items have been pushed and processed by the queue. + * @property {Function} running - a function returning the number of items + * currently being processed. Invoke with `queue.running()`. + * @property {Function} workersList - a function returning the array of items + * currently being processed. Invoke with `queue.workersList()`. + * @property {Function} idle - a function returning false if there are items + * waiting or being processed, or true if not. Invoke with `queue.idle()`. + * @property {number} concurrency - an integer for determining how many `worker` + * functions should be run in parallel. This property can be changed after a + * `queue` is created to alter the concurrency on-the-fly. + * @property {number} payload - an integer that specifies how many items are + * passed to the worker function at a time. only applies if this is a + * [cargo]{@link module:ControlFlow.cargo} object + * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback` + * once the `worker` has finished processing the task. Instead of a single task, + * a `tasks` array can be submitted. The respective callback is used for every + * task in the list. Invoke with `queue.push(task, [callback])`, + * @property {AsyncFunction} unshift - add a new task to the front of the `queue`. + * Invoke with `queue.unshift(task, [callback])`. + * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns + * a promise that rejects if an error occurs. + * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns + * a promise that rejects if an error occurs. + * @property {Function} remove - remove items from the queue that match a test + * function. The test function will be passed an object with a `data` property, + * and a `priority` property, if this is a + * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. + * Invoked with `queue.remove(testFn)`, where `testFn` is of the form + * `function ({data, priority}) {}` and returns a Boolean. + * @property {Function} saturated - a function that sets a callback that is + * called when the number of running workers hits the `concurrency` limit, and + * further tasks will be queued. If the callback is omitted, `q.saturated()` + * returns a promise for the next occurrence. + * @property {Function} unsaturated - a function that sets a callback that is + * called when the number of running workers is less than the `concurrency` & + * `buffer` limits, and further tasks will not be queued. If the callback is + * omitted, `q.unsaturated()` returns a promise for the next occurrence. + * @property {number} buffer - A minimum threshold buffer in order to say that + * the `queue` is `unsaturated`. + * @property {Function} empty - a function that sets a callback that is called + * when the last item from the `queue` is given to a `worker`. If the callback + * is omitted, `q.empty()` returns a promise for the next occurrence. + * @property {Function} drain - a function that sets a callback that is called + * when the last item from the `queue` has returned from the `worker`. If the + * callback is omitted, `q.drain()` returns a promise for the next occurrence. + * @property {Function} error - a function that sets a callback that is called + * when a task errors. Has the signature `function(error, task)`. If the + * callback is omitted, `error()` returns a promise that rejects on the next + * error. + * @property {boolean} paused - a boolean for determining whether the queue is + * in a paused state. + * @property {Function} pause - a function that pauses the processing of tasks + * until `resume()` is called. Invoke with `queue.pause()`. + * @property {Function} resume - a function that resumes the processing of + * queued tasks when the queue is paused. Invoke with `queue.resume()`. + * @property {Function} kill - a function that removes the `drain` callback and + * empties remaining tasks from the queue forcing it to go idle. No more tasks + * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. + * + * @example + * const q = async.queue(worker, 2) + * q.push(item1) + * q.push(item2) + * q.push(item3) + * // queues are iterable, spread into an array to inspect + * const items = [...q] // [item1, item2, item3] + * // or use for of + * for (let item of q) { + * console.log(item) + * } + * + * q.drain(() => { + * console.log('all done') + * }) + * // or + * await q.drain() + */ + +/** + * Creates a `queue` object with the specified `concurrency`. Tasks added to the + * `queue` are processed in parallel (up to the `concurrency` limit). If all + * `worker`s are in progress, the task is queued until one becomes available. + * Once a `worker` completes a `task`, that `task`'s callback is called. + * + * @name queue + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be + * attached as certain properties to listen for specific events during the + * lifecycle of the queue. + * @example + * + * // create a queue object with concurrency 2 + * var q = async.queue(function(task, callback) { + * console.log('hello ' + task.name); + * callback(); + * }, 2); + * + * // assign a callback + * q.drain(function() { + * console.log('all items have been processed'); + * }); + * // or await the end + * await q.drain() + * + * // assign an error callback + * q.error(function(err, task) { + * console.error('task experienced an error'); + * }); + * + * // add some items to the queue + * q.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * // callback is optional + * q.push({name: 'bar'}); + * + * // add some items to the queue (batch-wise) + * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { + * console.log('finished processing item'); + * }); + * + * // add some items to the front of the queue + * q.unshift({name: 'bar'}, function (err) { + * console.log('finished processing bar'); + * }); + */ +function queue (worker, concurrency) { + var _worker = wrapAsync(worker); + return queue$1((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); +} + +// Binary min-heap implementation used for priority queue. +// Implementation is stable, i.e. push time is considered for equal priorities +class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty () { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l=leftChi(index)) < this.heap.length) { + if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) { + l = l+1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length-1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length-1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator] () { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove (testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length-1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } +} + +function leftChi(i) { + return (i<<1)+1; +} + +function parent(i) { + return ((i+1)>>1)-1; +} + +function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } + else { + return x.pushCount < y.pushCount; + } +} + +/** + * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and + * completed in ascending priority order. + * + * @name priorityQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). + * @param {number} concurrency - An `integer` for determining how many `worker` + * functions should be run in parallel. If omitted, the concurrency defaults to + * `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three + * differences between `queue` and `priorityQueue` objects: + * * `push(task, priority, [callback])` - `priority` should be a number. If an + * array of `tasks` is given, all tasks will be assigned the same priority. + * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`, + * except this returns a promise that rejects if an error occurs. + * * The `unshift` and `unshiftAsync` methods were removed. + */ +function priorityQueue(worker, concurrency) { + // Start with a normal queue + var q = queue(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new Heap(); + q._createTaskItem = ({data, priority}, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return {data: tasks, priority}; + } + return tasks.map(data => { return {data, priority}; }); + } + + // Override push to accept second parameter representing priority + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; +} + +/** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ +function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } +} + +var race$1 = awaitify(race, 2); + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight (array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); +} + +/** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ +function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0){ + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); +} + +/** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ +function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; +} + +function reject$2(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); +} + +/** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function reject (coll, iteratee, callback) { + return reject$2(eachOf$1, coll, iteratee, callback) +} +var reject$1 = awaitify(reject, 3); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectLimit (coll, limit, iteratee, callback) { + return reject$2(eachOfLimit$2(limit), coll, iteratee, callback) +} +var rejectLimit$1 = awaitify(rejectLimit, 4); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectSeries (coll, iteratee, callback) { + return reject$2(eachOfSeries$1, coll, iteratee, callback) +} +var rejectSeries$1 = awaitify(rejectSeries, 3); + +function constant(value) { + return function () { + return value; + } +} + +/** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ +const DEFAULT_TIMES = 5; +const DEFAULT_INTERVAL = 0; + +function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = wrapAsync(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return + if (err && attempt++ < options.times && + (typeof options.errorFilter != 'function' || + options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[PROMISE_SYMBOL] +} + +function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? + t.interval : + constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } +} + +/** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ +function retryable (opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = (opts && opts.arity) || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) retry(opts, taskFn, callback); + else retry(taskFn, callback); + + return callback[PROMISE_SYMBOL] + }); +} + +/** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function series(tasks, callback) { + return _parallel(eachOfSeries$1, tasks, callback); +} + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback) +} +var some$1 = awaitify(some, 3); + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var someLimit$1 = awaitify(someLimit, 4); + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback) +} +var someSeries$1 = awaitify(someSeries, 3); + +/** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function sortBy (coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, {value: x, criteria}); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } +} +var sortBy$1 = awaitify(sortBy, 3); + +/** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ +function timeout(asyncFn, milliseconds, info) { + var fn = wrapAsync(asyncFn); + + return initialParams((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); +} + +function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); +} + +/** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ +function times (n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback) +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesSeries (n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback) +} + +/** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function transform (coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[PROMISE_SYMBOL] +} + +/** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ +function tryEach(tasks, callback) { + var error = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); +} + +var tryEach$1 = awaitify(tryEach); + +/** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ +function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; +} + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +var whilst$1 = awaitify(whilst, 3); + +/** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ +function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback); +} + +/** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ +function waterfall (tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + + function next(err, ...args) { + if (err === false) return + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); +} + +var waterfall$1 = awaitify(waterfall); + +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + + +var index = { + apply, + applyEach, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo: cargo$1, + cargoQueue: cargo, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant: constant$1, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$1, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$1, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel, + parallelLimit, + priorityQueue, + queue, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$1, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + + // aliases + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$1, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$1, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 +}; + + + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!****************************!*\ + !*** ./main/background.ts ***! + \****************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var electron_serve__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! electron-serve */ "electron-serve"); +/* harmony import */ var electron_serve__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(electron_serve__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./main/helpers/index.ts"); +/* harmony import */ var _helpers_handlers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers/handlers */ "./main/helpers/handlers.ts"); + + + + + +const isProd = "development" === "production"; +let mainWindow; +if (isProd) { + electron_serve__WEBPACK_IMPORTED_MODULE_2___default()({ + directory: "app" + }); +} else { + electron__WEBPACK_IMPORTED_MODULE_1__.app.setPath("userData", `${electron__WEBPACK_IMPORTED_MODULE_1__.app.getPath("userData")} (development)`); +} +(async () => { + await electron__WEBPACK_IMPORTED_MODULE_1__.app.whenReady(); + mainWindow = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.createWindow)("main", { + width: 1000, + height: 600, + autoHideMenuBar: true, + webPreferences: { + preload: path__WEBPACK_IMPORTED_MODULE_0___default().join(__dirname, "preload.js") + } + }); + if (isProd) { + await mainWindow.loadURL("app://./start"); + } else { + const port = process.argv[2]; + await mainWindow.loadURL(`http://localhost:${port}/start`); + mainWindow.webContents.openDevTools(); + } + const pythonScriptsPath = isProd ? path__WEBPACK_IMPORTED_MODULE_0___default().join(process.resourcesPath, "py") : path__WEBPACK_IMPORTED_MODULE_0___default().join(__dirname, "../py"); + (0,_helpers_handlers__WEBPACK_IMPORTED_MODULE_4__.setupHandlers)(pythonScriptsPath); + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.performSetup)(mainWindow, pythonScriptsPath); +})(); +electron__WEBPACK_IMPORTED_MODULE_1__.app.on("window-all-closed", () => { + electron__WEBPACK_IMPORTED_MODULE_1__.app.quit(); +}); +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7O0FBRUEs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QUFDOUU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtB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QTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUk7QUFDSixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixtQkFBTyxDQUFDLDBHQUFrQjs7QUFFL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQzs7QUFFakM7O0FBRUEsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsb0RBQW9EO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUUsY0FBYztBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViOztBQUVBLGFBQWEsa0hBQTZCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixzQ0FBc0Msc0NBQXNDO0FBQ3pHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQ3ZTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLHVEQUFZOztBQUVuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQixZQUFZLFFBQVEsdUJBQXVCO0FBQzNDLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxRQUFRLHVCQUF1QjtBQUMzQyxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsbUJBQU8sQ0FBQyxxRUFBbUI7QUFDekQsOEJBQThCLG1CQUFPLENBQUMscUVBQW1CO0FBQ3pELCtCQUErQixtQkFBTyxDQUFDLHVFQUFvQjs7QUFFM0Q7Ozs7Ozs7Ozs7QUNuRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFNBQVMsbUJBQU8sQ0FBQyxjQUFJO0FBQ3JCLFdBQVcsbUJBQU8sQ0FBQywwREFBYztBQUNqQyxZQUFZLG1CQUFPLENBQUMsa0RBQU87QUFDM0IsV0FBVyxtQkFBTyxDQUFDLGtCQUFNO0FBQ3pCLFdBQVcsbUJBQU8sQ0FBQyw4REFBZ0I7O0FBRW5DLGVBQWUsa0RBQXdCO0FBQ3ZDLG9CQUFvQixtQkFBTyxDQUFDLHFEQUFTO0FBQ3JDLGdCQUFnQixvR0FBb0M7O0FBRXBEOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxnQ0FBZ0Msa0JBQWtCLGtCQUFrQixLQUFLLGlCQUFpQjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUJBQWlCO0FBQzdCLFlBQVksV0FBVztBQUN2QixZQUFZLFVBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQixZQUFZLFVBQVU7QUFDdEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBLG1CQUFtQixjQUFjLGNBQWM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCLFlBQVksVUFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCLFlBQVksVUFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxRQUFRO0FBQ3BCLFlBQVksVUFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQixZQUFZLFVBQVU7QUFDdEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUVBO0FBQ0E7Ozs7Ozs7Ozs7QUNwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FDdEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLHlFQUFROztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUNwR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCLElBQUk7QUFDSix1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FDekVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrREFBd0I7QUFDdkMsb0JBQW9CLG1CQUFPLENBQUMsOERBQWdCOztBQUU1QyxtQkFBbUIsbUJBQU8sQ0FBQyx3RkFBa0I7QUFDN0Msd0JBQXdCLG1CQUFPLENBQUMsdUdBQXVCO0FBQ3ZELGVBQWUsbUJBQU8sQ0FBQyxtRkFBYTs7QUFFcEMsZ0JBQWdCLG1CQUFPLENBQUMsbUZBQWE7QUFDckMsY0FBYyxtQkFBTyxDQUFDLHlFQUFROztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLEtBQUs7QUFDcEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FDNVpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrREFBd0I7QUFDdkMsWUFBWSxtQkFBTyxDQUFDLDBEQUFjO0FBQ2xDLEtBQUssYUFBYSxFQUFFLG1CQUFPLENBQUMsOERBQWM7QUFDMUMsS0FBSyxvQkFBb0IsRUFBRSxtQkFBTyxDQUFDLDhEQUFjOztBQUVqRCwwQkFBMEIsbUJBQU8sQ0FBQyx3R0FBMEI7QUFDNUQsc0JBQXNCLG1CQUFPLENBQUMsbUdBQXFCO0FBQ25ELHdCQUF3QixtQkFBTyxDQUFDLHVHQUF1Qjs7QUFFdkQsZ0JBQWdCLG1CQUFPLENBQUMsbUZBQWE7QUFDckMsV0FBVyxtQkFBTyxDQUFDLHFFQUFZO0FBQy9CLGNBQWMsbUJBQU8sQ0FBQyx5RUFBUTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILHVCQUF1QixZQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFF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QTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLGdDQUFnQztBQUM1QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkMsT0FBTztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLGdCQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7OztBQzdPQTtBQUNB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLG9CQUFvQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLFNBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FB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QUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHFEQUFxRDs7QUFFckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTixNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssSUFBSTtBQUNULEtBQUssR0FBRztBQUNSLEtBQUssS0FBSztBQUNWLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDZixLQUFLLElBQUksRUFBRSxJQUFJO0FBQ2Y7QUFDQTtBQUNBLEtBQUssSUFBSSxPQUFPLElBQUk7QUFDcEIsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDZCQUE2QixRQUFRLE1BQU07QUFDM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLElBQUk7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ04sTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsTUFBTTtBQUNOLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxFQUFFLEVBQUUsS0FBSztBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0JBQXNCO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFFBQVE7QUFDakM7QUFDQTtBQUNBOztBQUVBLGNBQWMsZ0JBQWdCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sNENBQTRDOztBQUVsRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjs7Ozs7Ozs7Ozs7QUNsN0JBO0FBQ0E7O0FBRUEsU0FBUyxtQkFBTyxDQUFDLHdEQUFhO0FBQzlCLGdCQUFnQixtQkFBTyxDQUFDLDBFQUFXO0FBQ25DO0FBQ0EsV0FBVywwRUFBeUI7QUFDcEMsV0FBVyxtQkFBTyxDQUFDLGtCQUFNO0FBQ3pCLFdBQVcsbUJBQU8sQ0FBQyxrQkFBTTtBQUN6QixhQUFhLG1CQUFPLENBQUMsc0JBQVE7QUFDN0IsaUJBQWlCLG1CQUFPLENBQUMsa0VBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQyxrREFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixvQkFBb0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JlWTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7QUN0QkEsU0FBUyxtQkFBTyxDQUFDLGNBQUk7QUFDckIsZ0JBQWdCLG1CQUFPLENBQUMsK0RBQWdCO0FBQ3hDLGFBQWEsbUJBQU8sQ0FBQyx5RUFBcUI7QUFDMUMsWUFBWSxtQkFBTyxDQUFDLHVEQUFZOztBQUVoQyxXQUFXLG1CQUFPLENBQUMsa0JBQU07O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpREFBdUI7QUFDN0IsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDhCQUE4QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQy9iQSxhQUFhLG9EQUF3Qjs7QUFFckM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEMsZ0JBQWdCO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDhDQUE4QyxnQkFBZ0I7QUFDOUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUNySEEsZ0JBQWdCLG1CQUFPLENBQUMsNEJBQVc7O0FBRW5DO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7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aEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0MseUlBQXdDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsU0FBUztBQUM3QixzQ0FBc0MsbUJBQW1CO0FBQ3pELEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEVBQTRFOztBQUU1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IseUJBQXlCO0FBQzNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBLG1EQUFtRCxpRUFBaUU7QUFDcEg7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkMsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkMsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQyxPQUFPO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQzEvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJO0FBQ0osQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsbUJBQU8sQ0FBQyxzR0FBa0I7O0FBRS9DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUM7O0FBRWpDOztBQUVBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9EQUFvRDtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQzVxQmE7O0FBRWIsa0RBQWtELDBDQUEwQzs7QUFFNUYsYUFBYSw4R0FBNkI7QUFDMUMsV0FBVyxtQkFBTyxDQUFDLGtCQUFNOztBQUV6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsNkJBQTZCLHFCQUFxQjtBQUNsRDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FDN0VhOztBQUViOztBQUVBLFVBQVUsbUJBQU8sQ0FBQywwRUFBc0I7QUFDeEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUNuRkEsNERBQWtDOzs7Ozs7Ozs7OztBQ0FsQyx3SUFBa0Q7Ozs7Ozs7Ozs7O0FDQWxELGFBQWEsbUJBQU8sQ0FBQyxzQkFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdCQUFnQjtBQUNsQixFQUFFLGdCQUFnQjtBQUNsQixFQUFFLGNBQWM7QUFDaEIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxjQUFjO0FBQ2hCLEVBQUU7QUFDRixZQUFZLHVKQUFxRDtBQUNqRSxFQUFFLGNBQWM7QUFDaEIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSx5SkFBdUQ7QUFDekQsRUFBRSxtSkFBbUQ7QUFDckQsRUFBRSw0SkFBeUQ7QUFDM0QsRUFBRSxrS0FBNkQ7QUFDL0Q7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLHNCQUFRO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUUsY0FBYztBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViOztBQUVBLGFBQWEsOEdBQTZCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixzQ0FBc0Msc0NBQXNDO0FBQ3pHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG1CQUFtQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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O0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsSUFBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLElBQUk7QUFDL0I7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsaURBQWlEO0FBQ3hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsa0JBQWtCO0FBQ3JFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUTtBQUNSLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxJQUFJO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUUsRUFBRSxLQUFLO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsUUFBUTtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEVBQTRFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix5QkFBeUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG1CQUFPLENBQUMsZ0hBQW1DO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0EsbURBQW1ELCtEQUErRDtBQUNsSDtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLDRGQUF5QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLE9BQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FDbGdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGFBQWE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViO0FBQ0EscUJBQXFCLHdGQUEwQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbUJBQU8sQ0FBQyw4RUFBa0I7QUFDdkMsbUJBQU8sQ0FBQyxxREFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUM3TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGFBQWEsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDckM7QUFDQTs7QUFFQTtBQUNBLGFB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtB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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2hFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViOztBQUVBLGFBQWEsc0ZBQTZCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixzQ0FBc0Msc0NBQXNDO0FBQ3pHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQ3ZTQSxXQUFXLG1CQUFPLENBQUMsa0JBQU07QUFDekIsU0FBUyxtQkFBTyxDQUFDLG1DQUFJO0FBQ3JCLGNBQWMsbUJBQU8sQ0FBQyx1REFBVzs7QUFFakMsZUFBZSxtR0FBbUM7QUFDbEQsa0JBQWtCLHNHQUFzQzs7QUFFeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7QUNoUUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTLGNBQWM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixTQUFTO0FBQzNCLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtCQUErQixPQUFPO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7QUFDQTs7QUFFQSxpQkFBaUIscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ3RTQSw4RkFBc0M7QUFDdEMscUZBQWdDOzs7Ozs7Ozs7OztBQ0RoQyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBYztBQUN0QyxVQUFVLG1CQUFPLENBQUMsNERBQWU7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFVO0FBQ2pDOztBQUVBLGVBQWUsbUdBQW1DO0FBQ2xELGVBQWUsbUdBQW1DO0FBQ2xELG9CQUFvQiwyRUFBdUM7O0FBRTNELGNBQWMsbUJBQU8sQ0FBQyx1REFBVzs7QUFFakM7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsOEJBQThCLG9CQUFvQjtBQUNsRCxhQUFhLGVBQWU7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTiw4QkFBOEIsU0FBUztBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsd0JBQXdCO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsc0JBQXNCO0FBQ2hEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxzQkFBc0I7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQixpQ0FBaUM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSxXQUFXLHFDQUFxQztBQUNoRCxXQUFXLFFBQVE7QUFDbkIsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxRQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsOEJBQThCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsV0FBVyxxQ0FBcUM7QUFDaEQsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxQ0FBcUM7QUFDaEQsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtB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Q00sT0FBTyxDQUFFLG9CQUFtQkMsSUFBSyxRQUFPLENBQUM7SUFDMURQLFVBQVUsQ0FBQ3pFLFdBQVcsQ0FBQ2tGLFlBQVksQ0FBQyxDQUFDO0VBQ3RDO0VBRUEsTUFBTXRGLGlCQUF5QixHQUFHdkcsTUFBTSxHQUNyQ3ZDLGdEQUFTLENBQUN3QyxPQUFPLENBQUNJLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FDdEM1QyxnREFBUyxDQUFDNkMsU0FBUyxFQUFFLE9BQU8sQ0FBQztFQUVoQ1IsZ0VBQWEsQ0FBQ3lHLGlCQUFpQixDQUFDO0VBQ2hDUSxzREFBWSxDQUFDcUUsVUFBVSxFQUFFN0UsaUJBQWlCLENBQUM7QUFDNUMsQ0FBQyxFQUFFLENBQUM7QUFFSjJFLHlDQUFHLENBQUMxTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsTUFBTTtFQUNqQzBPLHlDQUFHLENBQUNZLElBQUksQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvZmlsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9hcmNoaXZlci11dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9hcmNoaXZlci11dGlscy9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9hcmNoaXZlci11dGlscy9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyLXV0aWxzL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9hcmNoaXZlci11dGlscy9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyLXV0aWxzL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyLXV0aWxzL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyLXV0aWxzL25vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9saWIvc3RyaW5nX2RlY29kZXIuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXIvbGliL2NvcmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXIvbGliL2Vycm9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyL2xpYi9wbHVnaW5zL2pzb24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYXJjaGl2ZXIvbGliL3BsdWdpbnMvdGFyLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FyY2hpdmVyL2xpYi9wbHVnaW5zL3ppcC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL21haW4vaGVscGVycy9jcmVhdGUtd2luZG93LnRzIiwid2VicGFjazovL2JlbGwtamFyLy4vbWFpbi9oZWxwZXJzL2hhbmRsZXJzLnRzIiwid2VicGFjazovL2JlbGwtamFyLy4vbWFpbi9oZWxwZXJzL2luZGV4LnRzIiwid2VicGFjazovL2JlbGwtamFyLy4vbWFpbi9oZWxwZXJzL3BlcmZvcm0tc2V0dXAudHMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9tYWluL2hlbHBlcnMvcHJvamVjdHMtdG9vbHMudHMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYmFsYW5jZWQtbWF0Y2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYmwvQnVmZmVyTGlzdC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ibC9ibC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9icmFjZS1leHBhbnNpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvYnVmZmVyLWNyYzMyL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL2FyY2hpdmVycy9hcmNoaXZlLWVudHJ5LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL2FyY2hpdmVycy9hcmNoaXZlLW91dHB1dC1zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29tcHJlc3MtY29tbW9ucy9saWIvYXJjaGl2ZXJzL3ppcC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29tcHJlc3MtY29tbW9ucy9saWIvYXJjaGl2ZXJzL3ppcC9nZW5lcmFsLXB1cnBvc2UtYml0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL2FyY2hpdmVycy96aXAvdW5peC1zdGF0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL2FyY2hpdmVycy96aXAvdXRpbC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb21wcmVzcy1jb21tb25zL2xpYi9hcmNoaXZlcnMvemlwL3ppcC1hcmNoaXZlLWVudHJ5LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL2FyY2hpdmVycy96aXAvemlwLWFyY2hpdmUtb3V0cHV0LXN0cmVhbS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb21wcmVzcy1jb21tb25zL2xpYi9jb21wcmVzcy1jb21tb25zLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvbXByZXNzLWNvbW1vbnMvbGliL3V0aWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29uY2F0LW1hcC9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY3JjLTMyL2NyYzMyLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NyYzMyLXN0cmVhbS9saWIvY3JjMzItc3RyZWFtLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NyYzMyLXN0cmVhbS9saWIvZGVmbGF0ZS1jcmMzMi1zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY3JjMzItc3RyZWFtL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9lbmQtb2Ytc3RyZWFtL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2ZzLWNvbnN0YW50cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9mcy5yZWFscGF0aC9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9mcy5yZWFscGF0aC9vbGQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvZ2xvYi9jb21tb24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvZ2xvYi9nbG9iLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2dsb2Ivbm9kZV9tb2R1bGVzL2JyYWNlLWV4cGFuc2lvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9nbG9iL25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvbWluaW1hdGNoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2dsb2Ivc3luYy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ncmFjZWZ1bC1mcy9jbG9uZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ncmFjZWZ1bC1mcy9ncmFjZWZ1bC1mcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ncmFjZWZ1bC1mcy9sZWdhY3ktc3RyZWFtcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ncmFjZWZ1bC1mcy9wb2x5ZmlsbHMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvaW5mbGlnaHQvaW5mbGlnaHQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbGliL2xhenlzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbGF6eXN0cmVhbS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9sYXp5c3RyZWFtL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbGF6eXN0cmVhbS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbGF6eXN0cmVhbS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbGF6eXN0cmVhbS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xhenlzdHJlYW0vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9sYXp5c3RyZWFtL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9sYXp5c3RyZWFtL25vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9saWIvc3RyaW5nX2RlY29kZXIuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbG9kYXNoLmRlZmF1bHRzL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC5kaWZmZXJlbmNlL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC5mbGF0dGVuL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC5pc3BsYWlub2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC51bmlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvbGliL3BhdGguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvbWluaW1hdGNoL21pbmltYXRjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtcGF0aC9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9vbmNlL29uY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvcGF0aC1pcy1hYnNvbHV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9wcm9jZXNzLW5leHRpY2stYXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZXJyb3JzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2J1ZmZlcl9saXN0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9mcm9tLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9waXBlbGluZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RhdGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvcmVhZGRpci1nbG9iL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy90YXItc3RyZWFtL2V4dHJhY3QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvdGFyLXN0cmVhbS9oZWFkZXJzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3Rhci1zdHJlYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvdGFyLXN0cmVhbS9wYWNrLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL25vZGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvd3JhcHB5L3dyYXBweS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy96aXAtc3RyZWFtL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL3ppcC1zdHJlYW0vbm9kZV9tb2R1bGVzL2FyY2hpdmVyLXV0aWxzL2ZpbGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvemlwLXN0cmVhbS9ub2RlX21vZHVsZXMvYXJjaGl2ZXItdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImFzc2VydFwiIiwid2VicGFjazovL2JlbGwtamFyL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiY2hpbGRfcHJvY2Vzc1wiIiwid2VicGFjazovL2JlbGwtamFyL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJjb25zdGFudHNcIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiZWxlY3Ryb25cIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiZXZlbnRzXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImZzXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcIm9zXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInBhdGhcIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInN0cmluZ19kZWNvZGVyXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInV0aWxcIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiemxpYlwiIiwid2VicGFjazovL2JlbGwtamFyL2V4dGVybmFsIHVtZCBcImF4aW9zXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgdW1kIFwiZWxlY3Ryb24tc2VydmVcIiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCB1bWQgXCJlbGVjdHJvbi1zdG9yZVwiIiwid2VicGFjazovL2JlbGwtamFyL2V4dGVybmFsIHVtZCBcImV4dHJhY3QtemlwXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgdW1kIFwicHl0aG9uLXNoZWxsXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvZXh0ZXJuYWwgdW1kIFwidGFyXCIiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS9lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS9mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2luc3RhbmNlL21hcC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2luc3RhbmNlL3NvbWUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS9zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2pzb24vc3RyaW5naWZ5LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL29iamVjdC9kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9wcm9taXNlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvYWN0dWFsL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2FjdHVhbC9zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2FjdHVhbC9zeW1ib2wvaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2FjdHVhbC9zeW1ib2wvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvYXJyYXkvdmlydHVhbC9mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvYXJyYXkvdmlydHVhbC9tYXAuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2FycmF5L3ZpcnR1YWwvc29tZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2UvZW5kcy13aXRoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9pbnN0YW5jZS9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2luc3RhbmNlL21hcC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2Uvc29tZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2Uvc3RhcnRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2pzb24vc3RyaW5naWZ5LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3QvZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvcGFyc2UtaW50LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9zdHJpbmcvdmlydHVhbC9lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL3N0cmluZy92aXJ0dWFsL3N0YXJ0cy13aXRoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL3N5bWJvbC9pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvc3ltYm9sL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZmVhdHVyZXMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZmVhdHVyZXMvc3ltYm9sL2luZGV4LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9mZWF0dXJlcy9zeW1ib2wvaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ZlYXR1cmVzL3N5bWJvbC90by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2Z1bGwvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZnVsbC9zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2Z1bGwvc3ltYm9sL2l0ZXJhdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9mdWxsL3N5bWJvbC90by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYXJyYXktc2xpY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RhdGUtdG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VuZ2luZS1pcy1kZW5vLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbmdpbmUtaXMtd2Vib3Mtd2Via2l0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2ZhaWxzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2dldC1idWlsdC1pbi1wcm90b3R5cGUtbWV0aG9kLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2dldC1qc29uLXJlcGxhY2VyLWZ1bmN0aW9uLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2h0bWwuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2lzLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1yZWdleHAuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pdGVyYXRlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbWF0aC10cnVuYy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbm90LWEtcmVnZXhwLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9xdWV1ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3NhZmUtZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3N0cmluZy1wYWQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zdHJpbmctcmVwZWF0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc3ltYm9sLWRlZmluZS10by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zeW1ib2wtaXMtcmVnaXN0ZXJlZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3N5bWJvbC1pcy13ZWxsLWtub3duLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc3ltYm9sLXJlZ2lzdHJ5LWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3Rhc2suanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvci5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYXJyYXkuc29tZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5kYXRlLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuZGF0ZS50by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuanNvbi50by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLm1hdGgudG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnBhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnByb21pc2UuYWxsLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnByb21pc2UuYW55LmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2guanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5wcm9taXNlLnJhY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5yZWplY3QuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucmVmbGVjdC50by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnN0cmluZy5lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnN0cmluZy5zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wuZm9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnN5bWJvbC5oYXMtaW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLmlzLWNvbmNhdC1zcHJlYWRhYmxlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnN5bWJvbC5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLmtleS1mb3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLm1hdGNoLWFsbC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wubWF0Y2guanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLnJlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLnNlYXJjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wuc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wuc3BsaXQuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3ltYm9sLnRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wudG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zeW1ib2wudW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXNuZXh0LmZ1bmN0aW9uLm1ldGFkYXRhLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuYXN5bmMtZGlzcG9zZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lc25leHQuc3ltYm9sLmN1c3RvbS1tYXRjaGVyLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuZGlzcG9zZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lc25leHQuc3ltYm9sLmlzLXJlZ2lzdGVyZWQtc3ltYm9sLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuaXMtcmVnaXN0ZXJlZC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lc25leHQuc3ltYm9sLmlzLXdlbGwta25vd24tc3ltYm9sLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuaXMtd2VsbC1rbm93bi5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lc25leHQuc3ltYm9sLm1hdGNoZXIuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5tZXRhZGF0YS1rZXkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lc25leHQuc3ltYm9sLm9ic2VydmFibGUuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5wYXR0ZXJuLW1hdGNoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzbmV4dC5zeW1ib2wucmVwbGFjZS1hbGwuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvYXJyYXkvdmlydHVhbC9mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2VuZHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2Zvci1lYWNoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvbWFwLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2Uvc29tZS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL3N0YXJ0cy13aXRoLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvanNvbi9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvb2JqZWN0L2RlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL29iamVjdC9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL3BhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9iZWxsLWphci8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9zeW1ib2wvaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9zeW1ib2wvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL2JlbGwtamFyLy4vbm9kZV9tb2R1bGVzL2FzeW5jL2Rpc3QvYXN5bmMubWpzIiwid2VicGFjazovL2JlbGwtamFyL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2JlbGwtamFyL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2JlbGwtamFyL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2JlbGwtamFyL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvLi9tYWluL2JhY2tncm91bmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiZWxlY3Ryb24tc2VydmVcIiksIHJlcXVpcmUoXCJlbGVjdHJvbi1zdG9yZVwiKSwgcmVxdWlyZShcImF4aW9zXCIpLCByZXF1aXJlKFwidGFyXCIpLCByZXF1aXJlKFwiZXh0cmFjdC16aXBcIiksIHJlcXVpcmUoXCJweXRob24tc2hlbGxcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiZWxlY3Ryb24tc2VydmVcIiwgXCJlbGVjdHJvbi1zdG9yZVwiLCBcImF4aW9zXCIsIFwidGFyXCIsIFwiZXh0cmFjdC16aXBcIiwgXCJweXRob24tc2hlbGxcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIHtcblx0XHR2YXIgYSA9IHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGZhY3RvcnkocmVxdWlyZShcImVsZWN0cm9uLXNlcnZlXCIpLCByZXF1aXJlKFwiZWxlY3Ryb24tc3RvcmVcIiksIHJlcXVpcmUoXCJheGlvc1wiKSwgcmVxdWlyZShcInRhclwiKSwgcmVxdWlyZShcImV4dHJhY3QtemlwXCIpLCByZXF1aXJlKFwicHl0aG9uLXNoZWxsXCIpKSA6IGZhY3Rvcnkocm9vdFtcImVsZWN0cm9uLXNlcnZlXCJdLCByb290W1wiZWxlY3Ryb24tc3RvcmVcIl0sIHJvb3RbXCJheGlvc1wiXSwgcm9vdFtcInRhclwiXSwgcm9vdFtcImV4dHJhY3QtemlwXCJdLCByb290W1wicHl0aG9uLXNoZWxsXCJdKTtcblx0XHRmb3IodmFyIGkgaW4gYSkgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGV4cG9ydHMgOiByb290KVtpXSA9IGFbaV07XG5cdH1cbn0pKGdsb2JhbCwgKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfZWxlY3Ryb25fc2VydmVfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9lbGVjdHJvbl9zdG9yZV9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX2F4aW9zX18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfdGFyX18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfZXh0cmFjdF96aXBfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9weXRob25fc2hlbGxfXykgPT4ge1xucmV0dXJuICIsIi8qKlxyXG4gKiBhcmNoaXZlci11dGlsc1xyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cclxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1hcmNoaXZlci9ibG9iL21hc3Rlci9MSUNFTlNFLU1JVFxyXG4gKi9cclxudmFyIGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKTtcclxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcblxyXG52YXIgZmxhdHRlbiA9IHJlcXVpcmUoJ2xvZGFzaC5mbGF0dGVuJyk7XHJcbnZhciBkaWZmZXJlbmNlID0gcmVxdWlyZSgnbG9kYXNoLmRpZmZlcmVuY2UnKTtcclxudmFyIHVuaW9uID0gcmVxdWlyZSgnbG9kYXNoLnVuaW9uJyk7XHJcbnZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoLmlzcGxhaW5vYmplY3QnKTtcclxuXHJcbnZhciBnbG9iID0gcmVxdWlyZSgnZ2xvYicpO1xyXG5cclxudmFyIGZpbGUgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xyXG5cclxudmFyIHBhdGhTZXBhcmF0b3JSZSA9IC9bXFwvXFxcXF0vZztcclxuXHJcbi8vIFByb2Nlc3Mgc3BlY2lmaWVkIHdpbGRjYXJkIGdsb2IgcGF0dGVybnMgb3IgZmlsZW5hbWVzIGFnYWluc3QgYVxyXG4vLyBjYWxsYmFjaywgZXhjbHVkaW5nIGFuZCB1bmlxdWluZyBmaWxlcyBpbiB0aGUgcmVzdWx0IHNldC5cclxudmFyIHByb2Nlc3NQYXR0ZXJucyA9IGZ1bmN0aW9uKHBhdHRlcm5zLCBmbikge1xyXG4gIC8vIEZpbGVwYXRocyB0byByZXR1cm4uXHJcbiAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gIC8vIEl0ZXJhdGUgb3ZlciBmbGF0dGVuZWQgcGF0dGVybnMgYXJyYXkuXHJcbiAgZmxhdHRlbihwYXR0ZXJucykuZm9yRWFjaChmdW5jdGlvbihwYXR0ZXJuKSB7XHJcbiAgICAvLyBJZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzICEgaXQgc2hvdWxkIGJlIG9taXR0ZWRcclxuICAgIHZhciBleGNsdXNpb24gPSBwYXR0ZXJuLmluZGV4T2YoJyEnKSA9PT0gMDtcclxuICAgIC8vIElmIHRoZSBwYXR0ZXJuIGlzIGFuIGV4Y2x1c2lvbiwgcmVtb3ZlIHRoZSAhXHJcbiAgICBpZiAoZXhjbHVzaW9uKSB7IHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOyB9XHJcbiAgICAvLyBGaW5kIGFsbCBtYXRjaGluZyBmaWxlcyBmb3IgdGhpcyBwYXR0ZXJuLlxyXG4gICAgdmFyIG1hdGNoZXMgPSBmbihwYXR0ZXJuKTtcclxuICAgIGlmIChleGNsdXNpb24pIHtcclxuICAgICAgLy8gSWYgYW4gZXhjbHVzaW9uLCByZW1vdmUgbWF0Y2hpbmcgZmlsZXMuXHJcbiAgICAgIHJlc3VsdCA9IGRpZmZlcmVuY2UocmVzdWx0LCBtYXRjaGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE90aGVyd2lzZSBhZGQgbWF0Y2hpbmcgZmlsZXMuXHJcbiAgICAgIHJlc3VsdCA9IHVuaW9uKHJlc3VsdCwgbWF0Y2hlcyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbi8vIFRydWUgaWYgdGhlIGZpbGUgcGF0aCBleGlzdHMuXHJcbmZpbGUuZXhpc3RzID0gZnVuY3Rpb24oKSB7XHJcbiAgdmFyIGZpbGVwYXRoID0gcGF0aC5qb2luLmFwcGx5KHBhdGgsIGFyZ3VtZW50cyk7XHJcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZXBhdGgpO1xyXG59O1xyXG5cclxuLy8gUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBmaWxlIHBhdGhzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHdpbGRjYXJkIHBhdHRlcm5zLlxyXG5maWxlLmV4cGFuZCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gb3B0aW9ucyBvYmplY3QsIHNhdmUgdGhvc2Ugb3B0aW9ucyB0byBwYXNzXHJcbiAgLy8gaW50byB0aGUgRmlsZS5wcm90b3R5cGUuZ2xvYi5zeW5jIG1ldGhvZC5cclxuICB2YXIgb3B0aW9ucyA9IGlzUGxhaW5PYmplY3QoYXJnc1swXSkgPyBhcmdzLnNoaWZ0KCkgOiB7fTtcclxuICAvLyBVc2UgdGhlIGZpcnN0IGFyZ3VtZW50IGlmIGl0J3MgYW4gQXJyYXksIG90aGVyd2lzZSBjb252ZXJ0IHRoZSBhcmd1bWVudHNcclxuICAvLyBvYmplY3QgdG8gYW4gYXJyYXkgYW5kIHVzZSB0aGF0LlxyXG4gIHZhciBwYXR0ZXJucyA9IEFycmF5LmlzQXJyYXkoYXJnc1swXSkgPyBhcmdzWzBdIDogYXJncztcclxuICAvLyBSZXR1cm4gZW1wdHkgc2V0IGlmIHRoZXJlIGFyZSBubyBwYXR0ZXJucyBvciBmaWxlcGF0aHMuXHJcbiAgaWYgKHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gW107IH1cclxuICAvLyBSZXR1cm4gYWxsIG1hdGNoaW5nIGZpbGVwYXRocy5cclxuICB2YXIgbWF0Y2hlcyA9IHByb2Nlc3NQYXR0ZXJucyhwYXR0ZXJucywgZnVuY3Rpb24ocGF0dGVybikge1xyXG4gICAgLy8gRmluZCBhbGwgbWF0Y2hpbmcgZmlsZXMgZm9yIHRoaXMgcGF0dGVybi5cclxuICAgIHJldHVybiBnbG9iLnN5bmMocGF0dGVybiwgb3B0aW9ucyk7XHJcbiAgfSk7XHJcbiAgLy8gRmlsdGVyIHJlc3VsdCBzZXQ/XHJcbiAgaWYgKG9wdGlvbnMuZmlsdGVyKSB7XHJcbiAgICBtYXRjaGVzID0gbWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24oZmlsZXBhdGgpIHtcclxuICAgICAgZmlsZXBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5jd2QgfHwgJycsIGZpbGVwYXRoKTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoZmlsZXBhdGgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgZmlsZSBpcyBvZiB0aGUgcmlnaHQgdHlwZSBhbmQgZXhpc3RzLCB0aGlzIHNob3VsZCB3b3JrLlxyXG4gICAgICAgICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVwYXRoKVtvcHRpb25zLmZpbHRlcl0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgIC8vIE90aGVyd2lzZSwgaXQncyBwcm9iYWJseSBub3QgdGhlIHJpZ2h0IHR5cGUuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIG1hdGNoZXM7XHJcbn07XHJcblxyXG4vLyBCdWlsZCBhIG11bHRpIHRhc2sgXCJmaWxlc1wiIG9iamVjdCBkeW5hbWljYWxseS5cclxuZmlsZS5leHBhbmRNYXBwaW5nID0gZnVuY3Rpb24ocGF0dGVybnMsIGRlc3RCYXNlLCBvcHRpb25zKSB7XHJcbiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgcmVuYW1lOiBmdW5jdGlvbihkZXN0QmFzZSwgZGVzdFBhdGgpIHtcclxuICAgICAgcmV0dXJuIHBhdGguam9pbihkZXN0QmFzZSB8fCAnJywgZGVzdFBhdGgpO1xyXG4gICAgfVxyXG4gIH0sIG9wdGlvbnMpO1xyXG4gIHZhciBmaWxlcyA9IFtdO1xyXG4gIHZhciBmaWxlQnlEZXN0ID0ge307XHJcbiAgLy8gRmluZCBhbGwgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiwgdXNpbmcgcGFzc2VkLWluIG9wdGlvbnMuXHJcbiAgZmlsZS5leHBhbmQob3B0aW9ucywgcGF0dGVybnMpLmZvckVhY2goZnVuY3Rpb24oc3JjKSB7XHJcbiAgICB2YXIgZGVzdFBhdGggPSBzcmM7XHJcbiAgICAvLyBGbGF0dGVuP1xyXG4gICAgaWYgKG9wdGlvbnMuZmxhdHRlbikge1xyXG4gICAgICBkZXN0UGF0aCA9IHBhdGguYmFzZW5hbWUoZGVzdFBhdGgpO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hhbmdlIHRoZSBleHRlbnNpb24/XHJcbiAgICBpZiAob3B0aW9ucy5leHQpIHtcclxuICAgICAgZGVzdFBhdGggPSBkZXN0UGF0aC5yZXBsYWNlKC8oXFwuW15cXC9dKik/JC8sIG9wdGlvbnMuZXh0KTtcclxuICAgIH1cclxuICAgIC8vIEdlbmVyYXRlIGRlc3RpbmF0aW9uIGZpbGVuYW1lLlxyXG4gICAgdmFyIGRlc3QgPSBvcHRpb25zLnJlbmFtZShkZXN0QmFzZSwgZGVzdFBhdGgsIG9wdGlvbnMpO1xyXG4gICAgLy8gUHJlcGVuZCBjd2QgdG8gc3JjIHBhdGggaWYgbmVjZXNzYXJ5LlxyXG4gICAgaWYgKG9wdGlvbnMuY3dkKSB7IHNyYyA9IHBhdGguam9pbihvcHRpb25zLmN3ZCwgc3JjKTsgfVxyXG4gICAgLy8gTm9ybWFsaXplIGZpbGVwYXRocyB0byBiZSB1bml4LXN0eWxlLlxyXG4gICAgZGVzdCA9IGRlc3QucmVwbGFjZShwYXRoU2VwYXJhdG9yUmUsICcvJyk7XHJcbiAgICBzcmMgPSBzcmMucmVwbGFjZShwYXRoU2VwYXJhdG9yUmUsICcvJyk7XHJcbiAgICAvLyBNYXAgY29ycmVjdCBzcmMgcGF0aCB0byBkZXN0IHBhdGguXHJcbiAgICBpZiAoZmlsZUJ5RGVzdFtkZXN0XSkge1xyXG4gICAgICAvLyBJZiBkZXN0IGFscmVhZHkgZXhpc3RzLCBwdXNoIHRoaXMgc3JjIG9udG8gdGhhdCBkZXN0J3Mgc3JjIGFycmF5LlxyXG4gICAgICBmaWxlQnlEZXN0W2Rlc3RdLnNyYy5wdXNoKHNyYyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IHNyYy1kZXN0IGZpbGUgbWFwcGluZyBvYmplY3QuXHJcbiAgICAgIGZpbGVzLnB1c2goe1xyXG4gICAgICAgIHNyYzogW3NyY10sXHJcbiAgICAgICAgZGVzdDogZGVzdCxcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIEFuZCBzdG9yZSBhIHJlZmVyZW5jZSBmb3IgbGF0ZXIgdXNlLlxyXG4gICAgICBmaWxlQnlEZXN0W2Rlc3RdID0gZmlsZXNbZmlsZXMubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59O1xyXG5cclxuLy8gcmV1c2luZyBiaXRzIG9mIGdydW50J3MgbXVsdGktdGFzayBzb3VyY2Ugbm9ybWFsaXphdGlvblxyXG5maWxlLm5vcm1hbGl6ZUZpbGVzQXJyYXkgPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgdmFyIGZpbGVzID0gW107XHJcblxyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcclxuICAgIHZhciBwcm9wO1xyXG4gICAgaWYgKCdzcmMnIGluIG9iaiB8fCAnZGVzdCcgaW4gb2JqKSB7XHJcbiAgICAgIGZpbGVzLnB1c2gob2JqKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZmlsZXMgPSBfKGZpbGVzKS5jaGFpbigpLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XHJcbiAgICBpZiAoISgnc3JjJyBpbiBvYmopIHx8ICFvYmouc3JjKSB7IHJldHVybjsgfVxyXG4gICAgLy8gTm9ybWFsaXplIC5zcmMgcHJvcGVydGllcyB0byBmbGF0dGVuZWQgYXJyYXkuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmouc3JjKSkge1xyXG4gICAgICBvYmouc3JjID0gZmxhdHRlbihvYmouc3JjKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9iai5zcmMgPSBbb2JqLnNyY107XHJcbiAgICB9XHJcbiAgfSkubWFwKGZ1bmN0aW9uKG9iaikge1xyXG4gICAgLy8gQnVpbGQgb3B0aW9ucyBvYmplY3QsIHJlbW92aW5nIHVud2FudGVkIHByb3BlcnRpZXMuXHJcbiAgICB2YXIgZXhwYW5kT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9iaik7XHJcbiAgICBkZWxldGUgZXhwYW5kT3B0aW9ucy5zcmM7XHJcbiAgICBkZWxldGUgZXhwYW5kT3B0aW9ucy5kZXN0O1xyXG5cclxuICAgIC8vIEV4cGFuZCBmaWxlIG1hcHBpbmdzLlxyXG4gICAgaWYgKG9iai5leHBhbmQpIHtcclxuICAgICAgcmV0dXJuIGZpbGUuZXhwYW5kTWFwcGluZyhvYmouc3JjLCBvYmouZGVzdCwgZXhwYW5kT3B0aW9ucykubWFwKGZ1bmN0aW9uKG1hcE9iaikge1xyXG4gICAgICAgIC8vIENvcHkgb2JqIHByb3BlcnRpZXMgdG8gcmVzdWx0LlxyXG4gICAgICAgIHZhciByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xyXG4gICAgICAgIC8vIE1ha2UgYSBjbG9uZSBvZiB0aGUgb3JpZyBvYmogYXZhaWxhYmxlLlxyXG4gICAgICAgIHJlc3VsdC5vcmlnID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcclxuICAgICAgICAvLyBTZXQgLnNyYyBhbmQgLmRlc3QsIHByb2Nlc3NpbmcgYm90aCBhcyB0ZW1wbGF0ZXMuXHJcbiAgICAgICAgcmVzdWx0LnNyYyA9IG1hcE9iai5zcmM7XHJcbiAgICAgICAgcmVzdWx0LmRlc3QgPSBtYXBPYmouZGVzdDtcclxuICAgICAgICAvLyBSZW1vdmUgdW53YW50ZWQgcHJvcGVydGllcy5cclxuICAgICAgICBbJ2V4cGFuZCcsICdjd2QnLCAnZmxhdHRlbicsICdyZW5hbWUnLCAnZXh0J10uZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XHJcbiAgICAgICAgICBkZWxldGUgcmVzdWx0W3Byb3BdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvcHkgb2JqIHByb3BlcnRpZXMgdG8gcmVzdWx0LCBhZGRpbmcgYW4gLm9yaWcgcHJvcGVydHkuXHJcbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcclxuICAgIC8vIE1ha2UgYSBjbG9uZSBvZiB0aGUgb3JpZyBvYmogYXZhaWxhYmxlLlxyXG4gICAgcmVzdWx0Lm9yaWcgPSBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xyXG5cclxuICAgIGlmICgnc3JjJyBpbiByZXN1bHQpIHtcclxuICAgICAgLy8gRXhwb3NlIGFuIGV4cGFuZC1vbi1kZW1hbmQgZ2V0dGVyIG1ldGhvZCBhcyAuc3JjLlxyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCAnc3JjJywge1xyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBmbigpIHtcclxuICAgICAgICAgIHZhciBzcmM7XHJcbiAgICAgICAgICBpZiAoISgncmVzdWx0JyBpbiBmbikpIHtcclxuICAgICAgICAgICAgc3JjID0gb2JqLnNyYztcclxuICAgICAgICAgICAgLy8gSWYgc3JjIGlzIGFuIGFycmF5LCBmbGF0dGVuIGl0LiBPdGhlcndpc2UsIG1ha2UgaXQgaW50byBhbiBhcnJheS5cclxuICAgICAgICAgICAgc3JjID0gQXJyYXkuaXNBcnJheShzcmMpID8gZmxhdHRlbihzcmMpIDogW3NyY107XHJcbiAgICAgICAgICAgIC8vIEV4cGFuZCBzcmMgZmlsZXMsIG1lbW9pemluZyByZXN1bHQuXHJcbiAgICAgICAgICAgIGZuLnJlc3VsdCA9IGZpbGUuZXhwYW5kKGV4cGFuZE9wdGlvbnMsIHNyYyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZm4ucmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCdkZXN0JyBpbiByZXN1bHQpIHtcclxuICAgICAgcmVzdWx0LmRlc3QgPSBvYmouZGVzdDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH0pLmZsYXR0ZW4oKS52YWx1ZSgpO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn07XHJcbiIsIi8qKlxyXG4gKiBhcmNoaXZlci11dGlsc1xyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2hyaXMgVGFsa2luZ3Rvbi5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9hcmNoaXZlci11dGlscy9ibG9iL21hc3Rlci9MSUNFTlNFXHJcbiAqL1xyXG52YXIgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxudmFyIG51dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG52YXIgbGF6eXN0cmVhbSA9IHJlcXVpcmUoJ2xhenlzdHJlYW0nKTtcclxudmFyIG5vcm1hbGl6ZVBhdGggPSByZXF1aXJlKCdub3JtYWxpemUtcGF0aCcpO1xyXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCdsb2Rhc2guZGVmYXVsdHMnKTtcclxuXHJcbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW07XHJcbnZhciBQYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLlBhc3NUaHJvdWdoO1xyXG5cclxudmFyIHV0aWxzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcclxudXRpbHMuZmlsZSA9IHJlcXVpcmUoJy4vZmlsZS5qcycpO1xyXG5cclxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XHJcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAnICsgbnV0aWxzLmluc3BlY3QocGF0aCkpO1xyXG4gIH1cclxufVxyXG5cclxudXRpbHMuY29sbGVjdFN0cmVhbSA9IGZ1bmN0aW9uKHNvdXJjZSwgY2FsbGJhY2spIHtcclxuICB2YXIgY29sbGVjdGlvbiA9IFtdO1xyXG4gIHZhciBzaXplID0gMDtcclxuXHJcbiAgc291cmNlLm9uKCdlcnJvcicsIGNhbGxiYWNrKTtcclxuXHJcbiAgc291cmNlLm9uKCdkYXRhJywgZnVuY3Rpb24oY2h1bmspIHtcclxuICAgIGNvbGxlY3Rpb24ucHVzaChjaHVuayk7XHJcbiAgICBzaXplICs9IGNodW5rLmxlbmd0aDtcclxuICB9KTtcclxuXHJcbiAgc291cmNlLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcclxuICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHNpemUpO1xyXG4gICAgdmFyIG9mZnNldCA9IDA7XHJcblxyXG4gICAgY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgZGF0YS5jb3B5KGJ1Ziwgb2Zmc2V0KTtcclxuICAgICAgb2Zmc2V0ICs9IGRhdGEubGVuZ3RoO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY2FsbGJhY2sobnVsbCwgYnVmKTtcclxuICB9KTtcclxufTtcclxuXHJcbnV0aWxzLmRhdGVpZnkgPSBmdW5jdGlvbihkYXRlaXNoKSB7XHJcbiAgZGF0ZWlzaCA9IGRhdGVpc2ggfHwgbmV3IERhdGUoKTtcclxuXHJcbiAgaWYgKGRhdGVpc2ggaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICBkYXRlaXNoID0gZGF0ZWlzaDtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlaXNoID09PSAnc3RyaW5nJykge1xyXG4gICAgZGF0ZWlzaCA9IG5ldyBEYXRlKGRhdGVpc2gpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBkYXRlaXNoID0gbmV3IERhdGUoKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlaXNoO1xyXG59O1xyXG5cclxuLy8gdGhpcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSBsb2Rhc2ggdmVyc2lvblxyXG51dGlscy5kZWZhdWx0cyA9IGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBndWFyZCkge1xyXG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xyXG4gIGFyZ3NbMF0gPSBhcmdzWzBdIHx8IHt9O1xyXG5cclxuICByZXR1cm4gZGVmYXVsdHMoLi4uYXJncyk7XHJcbn07XHJcblxyXG51dGlscy5pc1N0cmVhbSA9IGZ1bmN0aW9uKHNvdXJjZSkge1xyXG4gIHJldHVybiBzb3VyY2UgaW5zdGFuY2VvZiBTdHJlYW07XHJcbn07XHJcblxyXG51dGlscy5sYXp5UmVhZFN0cmVhbSA9IGZ1bmN0aW9uKGZpbGVwYXRoKSB7XHJcbiAgcmV0dXJuIG5ldyBsYXp5c3RyZWFtLlJlYWRhYmxlKGZ1bmN0aW9uKCkge1xyXG4gICAgcmV0dXJuIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZXBhdGgpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxudXRpbHMubm9ybWFsaXplSW5wdXRTb3VyY2UgPSBmdW5jdGlvbihzb3VyY2UpIHtcclxuICBpZiAoc291cmNlID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKTtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihzb3VyY2UpO1xyXG4gIH0gZWxzZSBpZiAodXRpbHMuaXNTdHJlYW0oc291cmNlKSAmJiAhc291cmNlLl9yZWFkYWJsZVN0YXRlKSB7XHJcbiAgICB2YXIgbm9ybWFsaXplZCA9IG5ldyBQYXNzVGhyb3VnaCgpO1xyXG4gICAgc291cmNlLnBpcGUobm9ybWFsaXplZCk7XHJcblxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc291cmNlO1xyXG59O1xyXG5cclxudXRpbHMuc2FuaXRpemVQYXRoID0gZnVuY3Rpb24oZmlsZXBhdGgpIHtcclxuICByZXR1cm4gbm9ybWFsaXplUGF0aChmaWxlcGF0aCwgZmFsc2UpLnJlcGxhY2UoL15cXHcrOi8sICcnKS5yZXBsYWNlKC9eKFxcLlxcLlxcL3xcXC8pKy8sICcnKTtcclxufTtcclxuXHJcbnV0aWxzLnRyYWlsaW5nU2xhc2hJdCA9IGZ1bmN0aW9uKHN0cikge1xyXG4gIHJldHVybiBzdHIuc2xpY2UoLTEpICE9PSAnLycgPyBzdHIgKyAnLycgOiBzdHI7XHJcbn07XHJcblxyXG51dGlscy51bml4aWZ5UGF0aCA9IGZ1bmN0aW9uKGZpbGVwYXRoKSB7XHJcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgoZmlsZXBhdGgsIGZhbHNlKS5yZXBsYWNlKC9eXFx3KzovLCAnJyk7XHJcbn07XHJcblxyXG51dGlscy53YWxrZGlyID0gZnVuY3Rpb24oZGlycGF0aCwgYmFzZSwgY2FsbGJhY2spIHtcclxuICB2YXIgcmVzdWx0cyA9IFtdO1xyXG5cclxuICBpZiAodHlwZW9mIGJhc2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgIGNhbGxiYWNrID0gYmFzZTtcclxuICAgIGJhc2UgPSBkaXJwYXRoO1xyXG4gIH1cclxuXHJcbiAgZnMucmVhZGRpcihkaXJwYXRoLCBmdW5jdGlvbihlcnIsIGxpc3QpIHtcclxuICAgIHZhciBpID0gMDtcclxuICAgIHZhciBmaWxlO1xyXG4gICAgdmFyIGZpbGVwYXRoO1xyXG5cclxuICAgIGlmIChlcnIpIHtcclxuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICB9XHJcblxyXG4gICAgKGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICAgIGZpbGUgPSBsaXN0W2krK107XHJcblxyXG4gICAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0cyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZpbGVwYXRoID0gcGF0aC5qb2luKGRpcnBhdGgsIGZpbGUpO1xyXG5cclxuICAgICAgZnMuc3RhdChmaWxlcGF0aCwgZnVuY3Rpb24oZXJyLCBzdGF0cykge1xyXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XHJcbiAgICAgICAgICBwYXRoOiBmaWxlcGF0aCxcclxuICAgICAgICAgIHJlbGF0aXZlOiBwYXRoLnJlbGF0aXZlKGJhc2UsIGZpbGVwYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyksXHJcbiAgICAgICAgICBzdGF0czogc3RhdHNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcclxuICAgICAgICAgIHV0aWxzLndhbGtkaXIoZmlsZXBhdGgsIGJhc2UsIGZ1bmN0aW9uKGVyciwgcmVzKSB7XHJcbiAgICAgICAgICAgIHJlcy5mb3JFYWNoKGZ1bmN0aW9uKGRpckVudHJ5KSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGRpckVudHJ5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG5leHQoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pKCk7XHJcbiAgfSk7XHJcbn07XHJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnV0aWwuaW5oZXJpdHMoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gYXZvaWQgc2NvcGUgY3JlZXAsIHRoZSBrZXlzIGFycmF5IGNhbiB0aGVuIGJlIGNvbGxlY3RlZFxuICB2YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcblxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIG9uZW5kKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcG5hLm5leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgdGhpcy5lbmQoKTtcblxuICBwbmEubmV4dFRpY2soY2IsIGVycik7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge30pLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IE9iamVjdC5jcmVhdGUocmVxdWlyZSgnY29yZS11dGlsLWlzJykpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgZGVidWcgPSB2b2lkIDA7XG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uICgpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXJMaXN0ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QnKTtcbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGtQcm94eUV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyKGV2ZW50LCBmbik7XG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xufVxuXG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgcmVhZGFibGVId20gPSBvcHRpb25zLnJlYWRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmIChyZWFkYWJsZUh3bSB8fCByZWFkYWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHJlYWRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZFxuICAvLyBpbW1lZGlhdGVseSwgb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZVxuICAvLyBhbnkgYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3QgcmVhZCBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcbiAgdGhpcy5hd2FpdERyYWluID0gMDtcblxuICAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcblxuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5wdXNoKG51bGwpO1xuICBjYihlcnIpO1xufTtcblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cbiAgICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIGVuY29kaW5nLCBmYWxzZSwgc2tpcENodW5rQ2hlY2spO1xufTtcblxuLy8gVW5zaGlmdCBzaG91bGQgKmFsd2F5cyogYmUgc29tZXRoaW5nIGRpcmVjdGx5IG91dCBvZiByZWFkKClcblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuICAgIGlmIChlcikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50JykpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG4vLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKTtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IGVuYztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CXG52YXIgTUFYX0hXTSA9IDB4ODAwMDAwO1xuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47XG4gIC8vIERvbid0IGhhdmUgZW5vdWdoXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzdGF0ZS5sZW5ndGg7XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGEgYnVuY2ggb2YgZGF0YSBpbiB0aGUgYnVmZmVyLCB0aGVuIGp1c3QgdHJpZ2dlclxuICAvLyB0aGUgJ3JlYWRhYmxlJyBldmVudCBhbmQgbW92ZSBvbi5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBkZWJ1ZygncmVhZDogZW1pdFJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7ZWxzZSBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7XG5cbiAgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkge1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIGVuZFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cblxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG4gIHZhciBkb1JlYWQgPSBzdGF0ZS5uZWVkUmVhZGFibGU7XG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKTtcblxuICAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWU7XG4gICAgZGVidWcoJ2xlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrJywgZG9SZWFkKTtcbiAgfVxuXG4gIC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgICAvLyBpZiB0aGUgbGVuZ3RoIGlzIGN1cnJlbnRseSB6ZXJvLCB0aGVuIHdlICpuZWVkKiBhIHJlYWRhYmxlIGV2ZW50LlxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG4gICAgc3RhdGUuc3luYyA9IGZhbHNlO1xuICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cbiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO1xuICB9XG5cbiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTtcblxuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwbmEubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHBuYS5uZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUsIHVucGlwZUluZm8pIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHVucGlwZUluZm8gPSB7IGhhc1VucGlwZWQ6IGZhbHNlIH07XG5cbiAgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7XG5cbiAgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzO1xuXG4gICAgLy8gZ290IGEgbWF0Y2guXG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICBpZiAoZGVzdCkgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHNsb3cgY2FzZS4gbXVsdGlwbGUgcGlwZSBkZXN0aW5hdGlvbnMuXG5cbiAgaWYgKCFkZXN0KSB7XG4gICAgLy8gcmVtb3ZlIGFsbC5cbiAgICB2YXIgZGVzdHMgPSBzdGF0ZS5waXBlcztcbiAgICB2YXIgbGVuID0gc3RhdGUucGlwZXNDb3VudDtcbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdHNbaV0uZW1pdCgndW5waXBlJywgdGhpcywgeyBoYXNVbnBpcGVkOiBmYWxzZSB9KTtcbiAgICB9cmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG5cbiAgc3RhdGUucGlwZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3RhdGUucGlwZXNDb3VudCAtPSAxO1xuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTtcblxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldiwgZm4pO1xuXG4gIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgLy8gU3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHRoaXMucmVzdW1lKCk7XG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgX3RoaXMucHVzaChjaHVuayk7XG4gICAgfVxuXG4gICAgX3RoaXMucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH1cblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICB0aGlzLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gT2JqZWN0LmNyZWF0ZShyZXF1aXJlKCdjb3JlLXV0aWwtaXMnKSk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qIDxyZXBsYWNlbWVudD4gKi9cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcG5hLm5leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fSkuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBpZiBfZmluYWwgaGFzIGJlZW4gY2FsbGVkXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTtcblxuICAvLyBkcmFpbiBldmVudCBmbGFnLlxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTtcblxuLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgaWYgKHJlYWxIYXNJbnN0YW5jZS5jYWxsKHRoaXMsIG9iamVjdCkpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHRoaXMgIT09IFdyaXRhYmxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHtcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB9XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmluYWwgPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZpbmFsID0gb3B0aW9ucy5maW5hbDtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHBuYS5uZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBjYikge1xuICB2YXIgdmFsaWQgPSB0cnVlO1xuICB2YXIgZXIgPSBmYWxzZTtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcblxuICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcDtcblxuICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcblxuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcbiAgICBwbmEubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY2FsbGVyIGV4cGVjdCB0aGlzIHRvIGhhcHBlbiBiZWZvcmUgaWZcbiAgICAvLyBpdCBpcyBhc3luY1xuICAgIGNiKGVyKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdFxuICAgIC8vIGFsd2F5cyBmb2xsb3cgZXJyb3JcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcblxuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuXG4gIGlmIChlcikgb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYik7ZWxzZSB7XG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXRcbiAgICB2YXIgZmluaXNoZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICAvKjxyZXBsYWNlbWVudD4qL1xuICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgICAgLyo8L3JlcGxhY2VtZW50PiovXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07XG4gICAgICAvLyBpZiB3ZSBkaWRuJ3QgY2FsbCB0aGUgb253cml0ZSBpbW1lZGlhdGVseSwgdGhlblxuICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy5cbiAgICAgIC8vIGFsc28sIHRoYXQgbWVhbnMgdGhhdCB0aGUgY2h1bmsgYW5kIGNiIGFyZSBjdXJyZW50bHlcbiAgICAgIC8vIGJlaW5nIHByb2Nlc3NlZCwgc28gbW92ZSB0aGUgYnVmZmVyIGNvdW50ZXIgcGFzdCB0aGVtLlxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ193cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH1cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICAgIHN0YXRlLmZpbmFsQ2FsbGVkID0gdHJ1ZTtcbiAgICAgIHBuYS5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcG5hLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cblxuICAvLyByZXVzZSB0aGUgZnJlZSBjb3JrUmVxLlxuICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5lbmQoKTtcbiAgY2IoZXJyKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIHNyYy5jb3B5KHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gdW5zaGlmdCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgLS10aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgfXJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgcCA9IHAubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICByZXR1cm4gQnVmZmVyTGlzdDtcbn0oKTtcblxuaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHtcbiAgbW9kdWxlLmV4cG9ydHMucHJvdG90eXBlW3V0aWwuaW5zcGVjdC5jdXN0b21dID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSB1dGlsLmluc3BlY3QoeyBsZW5ndGg6IHRoaXMubGVuZ3RoIH0pO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vLyB1bmRvY3VtZW50ZWQgY2IoKSBBUEksIG5lZWRlZCBmb3IgY29yZSwgbm90IGZvciBwdWJsaWMgQVBJXG5mdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB2YXIgd3JpdGFibGVEZXN0cm95ZWQgPSB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuXG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCB0aGlzLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgaWYgKCFfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgX3RoaXMsIGVycik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgc2VsZi5lbWl0KCdlcnJvcicsIGVycik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZXN0cm95OiBkZXN0cm95LFxuICB1bmRlc3Ryb3k6IHVuZGVzdHJveVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuaWYgKHByb2Nlc3MuZW52LlJFQURBQkxFX1NUUkVBTSA9PT0gJ2Rpc2FibGUnICYmIFN0cmVhbSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcbiAgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gU3RyZWFtLlJlYWRhYmxlO1xuICBleHBvcnRzLlJlYWRhYmxlID0gU3RyZWFtLlJlYWRhYmxlO1xuICBleHBvcnRzLldyaXRhYmxlID0gU3RyZWFtLldyaXRhYmxlO1xuICBleHBvcnRzLkR1cGxleCA9IFN0cmVhbS5EdXBsZXg7XG4gIGV4cG9ydHMuVHJhbnNmb3JtID0gU3RyZWFtLlRyYW5zZm9ybTtcbiAgZXhwb3J0cy5QYXNzVGhyb3VnaCA9IFN0cmVhbS5QYXNzVGhyb3VnaDtcbiAgZXhwb3J0cy5TdHJlYW0gPSBTdHJlYW07XG59IGVsc2Uge1xuICBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG4gIGV4cG9ydHMuU3RyZWFtID0gU3RyZWFtIHx8IGV4cG9ydHM7XG4gIGV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuICBleHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuICBleHBvcnRzLkR1cGxleCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG4gIGV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbiAgZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCIvKipcbiAqIEFyY2hpdmVyIFZlbmRpbmdcbiAqXG4gKiBAaWdub3JlXG4gKiBAbGljZW5zZSBbTUlUXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWFyY2hpdmVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0V9XG4gKiBAY29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICovXG52YXIgQXJjaGl2ZXIgPSByZXF1aXJlKCcuL2xpYi9jb3JlJyk7XG5cbnZhciBmb3JtYXRzID0ge307XG5cbi8qKlxuICogRGlzcGVuc2VzIGEgbmV3IEFyY2hpdmVyIGluc3RhbmNlLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtICB7U3RyaW5nfSBmb3JtYXQgVGhlIGFyY2hpdmUgZm9ybWF0IHRvIHVzZS5cbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyBTZWUgW0FyY2hpdmVyXXtAbGluayBBcmNoaXZlcn1cbiAqIEByZXR1cm4ge0FyY2hpdmVyfVxuICovXG52YXIgdmVuZGluZyA9IGZ1bmN0aW9uKGZvcm1hdCwgb3B0aW9ucykge1xuICByZXR1cm4gdmVuZGluZy5jcmVhdGUoZm9ybWF0LCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBBcmNoaXZlciBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGZvcm1hdCBUaGUgYXJjaGl2ZSBmb3JtYXQgdG8gdXNlLlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zIFNlZSBbQXJjaGl2ZXJde0BsaW5rIEFyY2hpdmVyfVxuICogQHJldHVybiB7QXJjaGl2ZXJ9XG4gKi9cbnZlbmRpbmcuY3JlYXRlID0gZnVuY3Rpb24oZm9ybWF0LCBvcHRpb25zKSB7XG4gIGlmIChmb3JtYXRzW2Zvcm1hdF0pIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQXJjaGl2ZXIoZm9ybWF0LCBvcHRpb25zKTtcbiAgICBpbnN0YW5jZS5zZXRGb3JtYXQoZm9ybWF0KTtcbiAgICBpbnN0YW5jZS5zZXRNb2R1bGUobmV3IGZvcm1hdHNbZm9ybWF0XShvcHRpb25zKSk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjcmVhdGUoJyArIGZvcm1hdCArICcpOiBmb3JtYXQgbm90IHJlZ2lzdGVyZWQnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBmb3JtYXQgZm9yIHVzZSB3aXRoIGFyY2hpdmVyLlxuICpcbiAqIEBwYXJhbSAge1N0cmluZ30gZm9ybWF0IFRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gbW9kdWxlIFRoZSBmdW5jdGlvbiBmb3IgYXJjaGl2ZXIgdG8gaW50ZXJhY3Qgd2l0aC5cbiAqIEByZXR1cm4gdm9pZFxuICovXG52ZW5kaW5nLnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24oZm9ybWF0LCBtb2R1bGUpIHtcbiAgaWYgKGZvcm1hdHNbZm9ybWF0XSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVnaXN0ZXIoJyArIGZvcm1hdCArICcpOiBmb3JtYXQgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVnaXN0ZXIoJyArIGZvcm1hdCArICcpOiBmb3JtYXQgbW9kdWxlIGludmFsaWQnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgbW9kdWxlLnByb3RvdHlwZS5hcHBlbmQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG1vZHVsZS5wcm90b3R5cGUuZmluYWxpemUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlZ2lzdGVyKCcgKyBmb3JtYXQgKyAnKTogZm9ybWF0IG1vZHVsZSBtaXNzaW5nIG1ldGhvZHMnKTtcbiAgfVxuXG4gIGZvcm1hdHNbZm9ybWF0XSA9IG1vZHVsZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG4gKiBcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXQgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdC5cbiAqIEByZXR1cm4gYm9vbGVhblxuICovXG52ZW5kaW5nLmlzUmVnaXN0ZXJlZEZvcm1hdCA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgaWYgKGZvcm1hdHNbZm9ybWF0XSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICByZXR1cm4gZmFsc2U7XG59O1xuXG52ZW5kaW5nLnJlZ2lzdGVyRm9ybWF0KCd6aXAnLCByZXF1aXJlKCcuL2xpYi9wbHVnaW5zL3ppcCcpKTtcbnZlbmRpbmcucmVnaXN0ZXJGb3JtYXQoJ3RhcicsIHJlcXVpcmUoJy4vbGliL3BsdWdpbnMvdGFyJykpO1xudmVuZGluZy5yZWdpc3RlckZvcm1hdCgnanNvbicsIHJlcXVpcmUoJy4vbGliL3BsdWdpbnMvanNvbicpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB2ZW5kaW5nOyIsIi8qKlxuICogQXJjaGl2ZXIgQ29yZVxuICpcbiAqIEBpZ25vcmVcbiAqIEBsaWNlbnNlIFtNSVRde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtYXJjaGl2ZXIvYmxvYi9tYXN0ZXIvTElDRU5TRX1cbiAqIEBjb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKi9cbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG52YXIgZ2xvYiA9IHJlcXVpcmUoJ3JlYWRkaXItZ2xvYicpO1xudmFyIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIHV0aWwgPSByZXF1aXJlKCdhcmNoaXZlci11dGlscycpO1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCd1dGlsJykuaW5oZXJpdHM7XG52YXIgQXJjaGl2ZXJFcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKS5UcmFuc2Zvcm07XG5cbnZhciB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IFRoZSBhcmNoaXZlIGZvcm1hdCB0byB1c2UuXG4gKiBAcGFyYW0geyhDb3JlT3B0aW9uc3xUcmFuc2Zvcm1PcHRpb25zKX0gb3B0aW9ucyBTZWUgYWxzbyB7QGxpbmsgWmlwT3B0aW9uc30gYW5kIHtAbGluayBUYXJPcHRpb25zfS5cbiAqL1xudmFyIEFyY2hpdmVyID0gZnVuY3Rpb24oZm9ybWF0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBcmNoaXZlcikpIHtcbiAgICByZXR1cm4gbmV3IEFyY2hpdmVyKGZvcm1hdCwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZvcm1hdCAhPT0gJ3N0cmluZycpIHtcbiAgICBvcHRpb25zID0gZm9ybWF0O1xuICAgIGZvcm1hdCA9ICd6aXAnO1xuICB9XG5cbiAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHV0aWwuZGVmYXVsdHMob3B0aW9ucywge1xuICAgIGhpZ2hXYXRlck1hcms6IDEwMjQgKiAxMDI0LFxuICAgIHN0YXRDb25jdXJyZW5jeTogNFxuICB9KTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLl9mb3JtYXQgPSBmYWxzZTtcbiAgdGhpcy5fbW9kdWxlID0gZmFsc2U7XG4gIHRoaXMuX3BlbmRpbmcgPSAwO1xuICB0aGlzLl9wb2ludGVyID0gMDtcblxuICB0aGlzLl9lbnRyaWVzQ291bnQgPSAwO1xuICB0aGlzLl9lbnRyaWVzUHJvY2Vzc2VkQ291bnQgPSAwO1xuICB0aGlzLl9mc0VudHJpZXNUb3RhbEJ5dGVzID0gMDtcbiAgdGhpcy5fZnNFbnRyaWVzUHJvY2Vzc2VkQnl0ZXMgPSAwO1xuXG4gIHRoaXMuX3F1ZXVlID0gYXN5bmMucXVldWUodGhpcy5fb25RdWV1ZVRhc2suYmluZCh0aGlzKSwgMSk7XG4gIHRoaXMuX3F1ZXVlLmRyYWluKHRoaXMuX29uUXVldWVEcmFpbi5iaW5kKHRoaXMpKTtcblxuICB0aGlzLl9zdGF0UXVldWUgPSBhc3luYy5xdWV1ZSh0aGlzLl9vblN0YXRRdWV1ZVRhc2suYmluZCh0aGlzKSwgb3B0aW9ucy5zdGF0Q29uY3VycmVuY3kpO1xuICB0aGlzLl9zdGF0UXVldWUuZHJhaW4odGhpcy5fb25RdWV1ZURyYWluLmJpbmQodGhpcykpO1xuXG4gIHRoaXMuX3N0YXRlID0ge1xuICAgIGFib3J0ZWQ6IGZhbHNlLFxuICAgIGZpbmFsaXplOiBmYWxzZSxcbiAgICBmaW5hbGl6aW5nOiBmYWxzZSxcbiAgICBmaW5hbGl6ZWQ6IGZhbHNlLFxuICAgIG1vZHVsZVBpcGVkOiBmYWxzZVxuICB9O1xuXG4gIHRoaXMuX3N0cmVhbXMgPSBbXTtcbn07XG5cbmluaGVyaXRzKEFyY2hpdmVyLCBUcmFuc2Zvcm0pO1xuXG4vKipcbiAqIEludGVybmFsIGxvZ2ljIGZvciBgYWJvcnRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9zdGF0ZS5hYm9ydGVkID0gdHJ1ZTtcbiAgdGhpcy5fcXVldWUua2lsbCgpO1xuICB0aGlzLl9zdGF0UXVldWUua2lsbCgpO1xuXG4gIGlmICh0aGlzLl9xdWV1ZS5pZGxlKCkpIHtcbiAgICB0aGlzLl9zaHV0ZG93bigpO1xuICB9XG59O1xuXG4vKipcbiAqIEludGVybmFsIGhlbHBlciBmb3IgYXBwZW5kaW5nIGZpbGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGZpbGVwYXRoIFRoZSBzb3VyY2UgZmlsZXBhdGguXG4gKiBAcGFyYW0gIHtFbnRyeURhdGF9IGRhdGEgVGhlIGVudHJ5IGRhdGEuXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9hcHBlbmQgPSBmdW5jdGlvbihmaWxlcGF0aCwgZGF0YSkge1xuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICB2YXIgdGFzayA9IHtcbiAgICBzb3VyY2U6IG51bGwsXG4gICAgZmlsZXBhdGg6IGZpbGVwYXRoXG4gIH07XG5cbiAgaWYgKCFkYXRhLm5hbWUpIHtcbiAgICBkYXRhLm5hbWUgPSBmaWxlcGF0aDtcbiAgfVxuXG4gIGRhdGEuc291cmNlUGF0aCA9IGZpbGVwYXRoO1xuICB0YXNrLmRhdGEgPSBkYXRhO1xuICB0aGlzLl9lbnRyaWVzQ291bnQrKztcblxuICBpZiAoZGF0YS5zdGF0cyAmJiBkYXRhLnN0YXRzIGluc3RhbmNlb2YgZnMuU3RhdHMpIHtcbiAgICB0YXNrID0gdGhpcy5fdXBkYXRlUXVldWVUYXNrV2l0aFN0YXRzKHRhc2ssIGRhdGEuc3RhdHMpO1xuICAgIGlmICh0YXNrKSB7XG4gICAgICBpZiAoZGF0YS5zdGF0cy5zaXplKSB7XG4gICAgICAgIHRoaXMuX2ZzRW50cmllc1RvdGFsQnl0ZXMgKz0gZGF0YS5zdGF0cy5zaXplO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9xdWV1ZS5wdXNoKHRhc2spO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9zdGF0UXVldWUucHVzaCh0YXNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBJbnRlcm5hbCBsb2dpYyBmb3IgYGZpbmFsaXplYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHJldHVybiB2b2lkXG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXppbmcgfHwgdGhpcy5fc3RhdGUuZmluYWxpemVkIHx8IHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9zdGF0ZS5maW5hbGl6aW5nID0gdHJ1ZTtcblxuICB0aGlzLl9tb2R1bGVGaW5hbGl6ZSgpO1xuXG4gIHRoaXMuX3N0YXRlLmZpbmFsaXppbmcgPSBmYWxzZTtcbiAgdGhpcy5fc3RhdGUuZmluYWxpemVkID0gdHJ1ZTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHRoZSB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGBmaW5hbGl6ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5fbWF5YmVGaW5hbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fc3RhdGUuZmluYWxpemluZyB8fCB0aGlzLl9zdGF0ZS5maW5hbGl6ZWQgfHwgdGhpcy5fc3RhdGUuYWJvcnRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zdGF0ZS5maW5hbGl6ZSAmJiB0aGlzLl9wZW5kaW5nID09PSAwICYmIHRoaXMuX3F1ZXVlLmlkbGUoKSAmJiB0aGlzLl9zdGF0UXVldWUuaWRsZSgpKSB7XG4gICAgdGhpcy5fZmluYWxpemUoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQXBwZW5kcyBhbiBlbnRyeSB0byB0aGUgbW9kdWxlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAZmlyZXMgIEFyY2hpdmVyI2VudHJ5XG4gKiBAcGFyYW0gIHsoQnVmZmVyfFN0cmVhbSl9IHNvdXJjZVxuICogQHBhcmFtICB7RW50cnlEYXRhfSBkYXRhXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX21vZHVsZUFwcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZGF0YSwgY2FsbGJhY2spIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICBjYWxsYmFjaygpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZS5hcHBlbmQoc291cmNlLCBkYXRhLCBmdW5jdGlvbihlcnIpIHtcbiAgICB0aGlzLl90YXNrID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9zdGF0ZS5hYm9ydGVkKSB7XG4gICAgICB0aGlzLl9zaHV0ZG93bigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlcnIpIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBlbnRyeSdzIGlucHV0IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgYXBwZW5kZWQgdG8gdGhlIGFyY2hpdmUuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgQXJjaGl2ZXIjZW50cnlcbiAgICAgKiBAdHlwZSB7RW50cnlEYXRhfVxuICAgICAqL1xuICAgIHRoaXMuZW1pdCgnZW50cnknLCBkYXRhKTtcbiAgICB0aGlzLl9lbnRyaWVzUHJvY2Vzc2VkQ291bnQrKztcblxuICAgIGlmIChkYXRhLnN0YXRzICYmIGRhdGEuc3RhdHMuc2l6ZSkge1xuICAgICAgdGhpcy5fZnNFbnRyaWVzUHJvY2Vzc2VkQnl0ZXMgKz0gZGF0YS5zdGF0cy5zaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBldmVudCBBcmNoaXZlciNwcm9ncmVzc1xuICAgICAqIEB0eXBlIHtQcm9ncmVzc0RhdGF9XG4gICAgICovXG4gICAgdGhpcy5lbWl0KCdwcm9ncmVzcycsIHtcbiAgICAgIGVudHJpZXM6IHtcbiAgICAgICAgdG90YWw6IHRoaXMuX2VudHJpZXNDb3VudCxcbiAgICAgICAgcHJvY2Vzc2VkOiB0aGlzLl9lbnRyaWVzUHJvY2Vzc2VkQ291bnRcbiAgICAgIH0sXG4gICAgICBmczoge1xuICAgICAgICB0b3RhbEJ5dGVzOiB0aGlzLl9mc0VudHJpZXNUb3RhbEJ5dGVzLFxuICAgICAgICBwcm9jZXNzZWRCeXRlczogdGhpcy5fZnNFbnRyaWVzUHJvY2Vzc2VkQnl0ZXNcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldEltbWVkaWF0ZShjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIEZpbmFsaXplcyB0aGUgbW9kdWxlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9tb2R1bGVGaW5hbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAodHlwZW9mIHRoaXMuX21vZHVsZS5maW5hbGl6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX21vZHVsZS5maW5hbGl6ZSgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9tb2R1bGUuZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5fbW9kdWxlLmVuZCgpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgQXJjaGl2ZXJFcnJvcignTk9FTkRNRVRIT0QnKSk7XG4gIH1cbn07XG5cbi8qKlxuICogUGlwZXMgdGhlIG1vZHVsZSB0byBvdXIgaW50ZXJuYWwgc3RyZWFtIHdpdGggZXJyb3IgYnViYmxpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX21vZHVsZVBpcGUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fbW9kdWxlLm9uKCdlcnJvcicsIHRoaXMuX29uTW9kdWxlRXJyb3IuYmluZCh0aGlzKSk7XG4gIHRoaXMuX21vZHVsZS5waXBlKHRoaXMpO1xuICB0aGlzLl9zdGF0ZS5tb2R1bGVQaXBlZCA9IHRydWU7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgbW9kdWxlIHN1cHBvcnRzIGEgZGVmaW5lZCBmZWF0dXJlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGtleVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9tb2R1bGVTdXBwb3J0cyA9IGZ1bmN0aW9uKGtleSkge1xuICBpZiAoIXRoaXMuX21vZHVsZS5zdXBwb3J0cyB8fCAhdGhpcy5fbW9kdWxlLnN1cHBvcnRzW2tleV0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fbW9kdWxlLnN1cHBvcnRzW2tleV07XG59O1xuXG4vKipcbiAqIFVucGlwZXMgdGhlIG1vZHVsZSBmcm9tIG91ciBpbnRlcm5hbCBzdHJlYW0uXG4gKlxuICogQHByaXZhdGVcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX21vZHVsZVVucGlwZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9tb2R1bGUudW5waXBlKHRoaXMpO1xuICB0aGlzLl9zdGF0ZS5tb2R1bGVQaXBlZCA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGVudHJ5IGRhdGEgd2l0aCBmYWxsYmFja3MgZm9yIGtleSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gIHtPYmplY3R9IGRhdGFcbiAqIEBwYXJhbSAge2ZzLlN0YXRzfSBzdGF0c1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX25vcm1hbGl6ZUVudHJ5RGF0YSA9IGZ1bmN0aW9uKGRhdGEsIHN0YXRzKSB7XG4gIGRhdGEgPSB1dGlsLmRlZmF1bHRzKGRhdGEsIHtcbiAgICB0eXBlOiAnZmlsZScsXG4gICAgbmFtZTogbnVsbCxcbiAgICBkYXRlOiBudWxsLFxuICAgIG1vZGU6IG51bGwsXG4gICAgcHJlZml4OiBudWxsLFxuICAgIHNvdXJjZVBhdGg6IG51bGwsXG4gICAgc3RhdHM6IGZhbHNlXG4gIH0pO1xuXG4gIGlmIChzdGF0cyAmJiBkYXRhLnN0YXRzID09PSBmYWxzZSkge1xuICAgIGRhdGEuc3RhdHMgPSBzdGF0cztcbiAgfVxuXG4gIHZhciBpc0RpciA9IGRhdGEudHlwZSA9PT0gJ2RpcmVjdG9yeSc7XG5cbiAgaWYgKGRhdGEubmFtZSkge1xuICAgIGlmICh0eXBlb2YgZGF0YS5wcmVmaXggPT09ICdzdHJpbmcnICYmICcnICE9PSBkYXRhLnByZWZpeCkge1xuICAgICAgZGF0YS5uYW1lID0gZGF0YS5wcmVmaXggKyAnLycgKyBkYXRhLm5hbWU7XG4gICAgICBkYXRhLnByZWZpeCA9IG51bGw7XG4gICAgfVxuXG4gICAgZGF0YS5uYW1lID0gdXRpbC5zYW5pdGl6ZVBhdGgoZGF0YS5uYW1lKTtcblxuICAgIGlmIChkYXRhLnR5cGUgIT09ICdzeW1saW5rJyAmJiBkYXRhLm5hbWUuc2xpY2UoLTEpID09PSAnLycpIHtcbiAgICAgIGlzRGlyID0gdHJ1ZTtcbiAgICAgIGRhdGEudHlwZSA9ICdkaXJlY3RvcnknO1xuICAgIH0gZWxzZSBpZiAoaXNEaXIpIHtcbiAgICAgIGRhdGEubmFtZSArPSAnLyc7XG4gICAgfVxuICB9XG5cbiAgLy8gNTExID09PSAwNzc3OyA0OTMgPT09IDA3NTU7IDQzOCA9PT0gMDY2NjsgNDIwID09PSAwNjQ0XG4gIGlmICh0eXBlb2YgZGF0YS5tb2RlID09PSAnbnVtYmVyJykge1xuICAgIGlmICh3aW4zMikge1xuICAgICAgZGF0YS5tb2RlICY9IDUxMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5tb2RlICY9IDQwOTVcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF0YS5zdGF0cyAmJiBkYXRhLm1vZGUgPT09IG51bGwpIHtcbiAgICBpZiAod2luMzIpIHtcbiAgICAgIGRhdGEubW9kZSA9IGRhdGEuc3RhdHMubW9kZSAmIDUxMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5tb2RlID0gZGF0YS5zdGF0cy5tb2RlICYgNDA5NTtcbiAgICB9XG5cbiAgICAvLyBzdGF0IGlzbid0IHJlbGlhYmxlIG9uIHdpbmRvd3M7IGZvcmNlIDA3NTUgZm9yIGRpclxuICAgIGlmICh3aW4zMiAmJiBpc0Rpcikge1xuICAgICAgZGF0YS5tb2RlID0gNDkzO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkYXRhLm1vZGUgPT09IG51bGwpIHtcbiAgICBkYXRhLm1vZGUgPSBpc0RpciA/IDQ5MyA6IDQyMDtcbiAgfVxuXG4gIGlmIChkYXRhLnN0YXRzICYmIGRhdGEuZGF0ZSA9PT0gbnVsbCkge1xuICAgIGRhdGEuZGF0ZSA9IGRhdGEuc3RhdHMubXRpbWU7XG4gIH0gZWxzZSB7XG4gICAgZGF0YS5kYXRlID0gdXRpbC5kYXRlaWZ5KGRhdGEuZGF0ZSk7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn07XG5cbi8qKlxuICogRXJyb3IgbGlzdGVuZXIgdGhhdCByZS1lbWl0cyBlcnJvciBvbiB0byBvdXIgaW50ZXJuYWwgc3RyZWFtLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gIHtFcnJvcn0gZXJyXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9vbk1vZHVsZUVycm9yID0gZnVuY3Rpb24oZXJyKSB7XG4gIC8qKlxuICAgKiBAZXZlbnQgQXJjaGl2ZXIjZXJyb3JcbiAgICogQHR5cGUge0Vycm9yRGF0YX1cbiAgICovXG4gIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgdGhlIHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzIGFmdGVyIHF1ZXVlIGhhcyBkcmFpbmVkIHRvIGRldGVybWluZSBpZlxuICogd2UgbmVlZCB0byBgZmluYWxpemVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLl9vblF1ZXVlRHJhaW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXppbmcgfHwgdGhpcy5fc3RhdGUuZmluYWxpemVkIHx8IHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5fc3RhdGUuZmluYWxpemUgJiYgdGhpcy5fcGVuZGluZyA9PT0gMCAmJiB0aGlzLl9xdWV1ZS5pZGxlKCkgJiYgdGhpcy5fc3RhdFF1ZXVlLmlkbGUoKSkge1xuICAgIHRoaXMuX2ZpbmFsaXplKCk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwZW5kcyBlYWNoIHF1ZXVlIHRhc2sgdG8gdGhlIG1vZHVsZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICB7T2JqZWN0fSB0YXNrXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX29uUXVldWVUYXNrID0gZnVuY3Rpb24odGFzaywgY2FsbGJhY2spIHtcbiAgdmFyIGZ1bGxDYWxsYmFjayA9ICgpID0+IHtcbiAgICBpZih0YXNrLmRhdGEuY2FsbGJhY2spIHtcbiAgICAgIHRhc2suZGF0YS5jYWxsYmFjaygpO1xuICAgIH1cbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXppbmcgfHwgdGhpcy5fc3RhdGUuZmluYWxpemVkIHx8IHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICBmdWxsQ2FsbGJhY2soKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl90YXNrID0gdGFzaztcbiAgdGhpcy5fbW9kdWxlQXBwZW5kKHRhc2suc291cmNlLCB0YXNrLmRhdGEsIGZ1bGxDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgZmlsZSBzdGF0IGFuZCByZWluamVjdHMgdGhlIHRhc2sgYmFjayBpbnRvIHRoZSBxdWV1ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICB7T2JqZWN0fSB0YXNrXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX29uU3RhdFF1ZXVlVGFzayA9IGZ1bmN0aW9uKHRhc2ssIGNhbGxiYWNrKSB7XG4gIGlmICh0aGlzLl9zdGF0ZS5maW5hbGl6aW5nIHx8IHRoaXMuX3N0YXRlLmZpbmFsaXplZCB8fCB0aGlzLl9zdGF0ZS5hYm9ydGVkKSB7XG4gICAgY2FsbGJhY2soKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmcy5sc3RhdCh0YXNrLmZpbGVwYXRoLCBmdW5jdGlvbihlcnIsIHN0YXRzKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICAgIHNldEltbWVkaWF0ZShjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVycikge1xuICAgICAgdGhpcy5fZW50cmllc0NvdW50LS07XG5cbiAgICAgIC8qKlxuICAgICAgICogQGV2ZW50IEFyY2hpdmVyI3dhcm5pbmdcbiAgICAgICAqIEB0eXBlIHtFcnJvckRhdGF9XG4gICAgICAgKi9cbiAgICAgIHRoaXMuZW1pdCgnd2FybmluZycsIGVycik7XG4gICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRhc2sgPSB0aGlzLl91cGRhdGVRdWV1ZVRhc2tXaXRoU3RhdHModGFzaywgc3RhdHMpO1xuXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGlmIChzdGF0cy5zaXplKSB7XG4gICAgICAgIHRoaXMuX2ZzRW50cmllc1RvdGFsQnl0ZXMgKz0gc3RhdHMuc2l6ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcXVldWUucHVzaCh0YXNrKTtcbiAgICB9XG5cbiAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiBVbnBpcGVzIHRoZSBtb2R1bGUgYW5kIGVuZHMgb3VyIGludGVybmFsIHN0cmVhbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHJldHVybiB2b2lkXG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5fc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fbW9kdWxlVW5waXBlKCk7XG4gIHRoaXMuZW5kKCk7XG59O1xuXG4vKipcbiAqIFRyYWNrcyB0aGUgYnl0ZXMgZW1pdHRlZCBieSBvdXIgaW50ZXJuYWwgc3RyZWFtLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gIHtCdWZmZXJ9IGNodW5rXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGVuY29kaW5nXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgaWYgKGNodW5rKSB7XG4gICAgdGhpcy5fcG9pbnRlciArPSBjaHVuay5sZW5ndGg7XG4gIH1cblxuICBjYWxsYmFjayhudWxsLCBjaHVuayk7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgYW5kIG5vcm1hbGl6ZXMgYSBxdWV1ZSB0YXNrIHVzaW5nIHN0YXRzIGRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSAge09iamVjdH0gdGFza1xuICogQHBhcmFtICB7ZnMuU3RhdHN9IHN0YXRzXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5fdXBkYXRlUXVldWVUYXNrV2l0aFN0YXRzID0gZnVuY3Rpb24odGFzaywgc3RhdHMpIHtcbiAgaWYgKHN0YXRzLmlzRmlsZSgpKSB7XG4gICAgdGFzay5kYXRhLnR5cGUgPSAnZmlsZSc7XG4gICAgdGFzay5kYXRhLnNvdXJjZVR5cGUgPSAnc3RyZWFtJztcbiAgICB0YXNrLnNvdXJjZSA9IHV0aWwubGF6eVJlYWRTdHJlYW0odGFzay5maWxlcGF0aCk7XG4gIH0gZWxzZSBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSAmJiB0aGlzLl9tb2R1bGVTdXBwb3J0cygnZGlyZWN0b3J5JykpIHtcbiAgICB0YXNrLmRhdGEubmFtZSA9IHV0aWwudHJhaWxpbmdTbGFzaEl0KHRhc2suZGF0YS5uYW1lKTtcbiAgICB0YXNrLmRhdGEudHlwZSA9ICdkaXJlY3RvcnknO1xuICAgIHRhc2suZGF0YS5zb3VyY2VQYXRoID0gdXRpbC50cmFpbGluZ1NsYXNoSXQodGFzay5maWxlcGF0aCk7XG4gICAgdGFzay5kYXRhLnNvdXJjZVR5cGUgPSAnYnVmZmVyJztcbiAgICB0YXNrLnNvdXJjZSA9IEJ1ZmZlci5jb25jYXQoW10pO1xuICB9IGVsc2UgaWYgKHN0YXRzLmlzU3ltYm9saWNMaW5rKCkgJiYgdGhpcy5fbW9kdWxlU3VwcG9ydHMoJ3N5bWxpbmsnKSkge1xuICAgIHZhciBsaW5rUGF0aCA9IGZzLnJlYWRsaW5rU3luYyh0YXNrLmZpbGVwYXRoKTtcbiAgICB2YXIgZGlyTmFtZSA9IHBhdGguZGlybmFtZSh0YXNrLmZpbGVwYXRoKTtcbiAgICB0YXNrLmRhdGEudHlwZSA9ICdzeW1saW5rJztcbiAgICB0YXNrLmRhdGEubGlua25hbWUgPSBwYXRoLnJlbGF0aXZlKGRpck5hbWUsIHBhdGgucmVzb2x2ZShkaXJOYW1lLCBsaW5rUGF0aCkpO1xuICAgIHRhc2suZGF0YS5zb3VyY2VUeXBlID0gJ2J1ZmZlcic7XG4gICAgdGFzay5zb3VyY2UgPSBCdWZmZXIuY29uY2F0KFtdKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhpcy5lbWl0KCd3YXJuaW5nJywgbmV3IEFyY2hpdmVyRXJyb3IoJ0RJUkVDVE9SWU5PVFNVUFBPUlRFRCcsIHRhc2suZGF0YSkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgdGhpcy5lbWl0KCd3YXJuaW5nJywgbmV3IEFyY2hpdmVyRXJyb3IoJ1NZTUxJTktOT1RTVVBQT1JURUQnLCB0YXNrLmRhdGEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0KCd3YXJuaW5nJywgbmV3IEFyY2hpdmVyRXJyb3IoJ0VOVFJZTk9UU1VQUE9SVEVEJywgdGFzay5kYXRhKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0YXNrLmRhdGEgPSB0aGlzLl9ub3JtYWxpemVFbnRyeURhdGEodGFzay5kYXRhLCBzdGF0cyk7XG5cbiAgcmV0dXJuIHRhc2s7XG59O1xuXG4vKipcbiAqIEFib3J0cyB0aGUgYXJjaGl2aW5nIHByb2Nlc3MsIHRha2luZyBhIGJlc3QtZWZmb3J0IGFwcHJvYWNoLCBieTpcbiAqXG4gKiAtIHJlbW92aW5nIGFueSBwZW5kaW5nIHF1ZXVlIHRhc2tzXG4gKiAtIGFsbG93aW5nIGFueSBhY3RpdmUgcXVldWUgd29ya2VycyB0byBmaW5pc2hcbiAqIC0gZGV0YWNoaW5nIGludGVybmFsIG1vZHVsZSBwaXBlc1xuICogLSBlbmRpbmcgYm90aCBzaWRlcyBvZiB0aGUgVHJhbnNmb3JtIHN0cmVhbVxuICpcbiAqIEl0IHdpbGwgTk9UIGRyYWluIGFueSByZW1haW5pbmcgc291cmNlcy5cbiAqXG4gKiBAcmV0dXJuIHt0aGlzfVxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmFib3J0ZWQgfHwgdGhpcy5fc3RhdGUuZmluYWxpemVkKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9hYm9ydCgpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIGFuIGlucHV0IHNvdXJjZSAodGV4dCBzdHJpbmcsIGJ1ZmZlciwgb3Igc3RyZWFtKSB0byB0aGUgaW5zdGFuY2UuXG4gKlxuICogV2hlbiB0aGUgaW5zdGFuY2UgaGFzIHJlY2VpdmVkLCBwcm9jZXNzZWQsIGFuZCBlbWl0dGVkIHRoZSBpbnB1dCwgdGhlIGBlbnRyeWBcbiAqIGV2ZW50IGlzIGZpcmVkLlxuICpcbiAqIEBmaXJlcyAgQXJjaGl2ZXIjZW50cnlcbiAqIEBwYXJhbSAgeyhCdWZmZXJ8U3RyZWFtfFN0cmluZyl9IHNvdXJjZSBUaGUgaW5wdXQgc291cmNlLlxuICogQHBhcmFtICB7RW50cnlEYXRhfSBkYXRhIFNlZSBhbHNvIHtAbGluayBaaXBFbnRyeURhdGF9IGFuZCB7QGxpbmsgVGFyRW50cnlEYXRhfS5cbiAqIEByZXR1cm4ge3RoaXN9XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihzb3VyY2UsIGRhdGEpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXplIHx8IHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ1FVRVVFQ0xPU0VEJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGF0YSA9IHRoaXMuX25vcm1hbGl6ZUVudHJ5RGF0YShkYXRhKTtcblxuICBpZiAodHlwZW9mIGRhdGEubmFtZSAhPT0gJ3N0cmluZycgfHwgZGF0YS5uYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgQXJjaGl2ZXJFcnJvcignRU5UUllOQU1FUkVRVUlSRUQnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoZGF0YS50eXBlID09PSAnZGlyZWN0b3J5JyAmJiAhdGhpcy5fbW9kdWxlU3VwcG9ydHMoJ2RpcmVjdG9yeScpKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdESVJFQ1RPUllOT1RTVVBQT1JURUQnLCB7IG5hbWU6IGRhdGEubmFtZSB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzb3VyY2UgPSB1dGlsLm5vcm1hbGl6ZUlucHV0U291cmNlKHNvdXJjZSk7XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzb3VyY2UpKSB7XG4gICAgZGF0YS5zb3VyY2VUeXBlID0gJ2J1ZmZlcic7XG4gIH0gZWxzZSBpZiAodXRpbC5pc1N0cmVhbShzb3VyY2UpKSB7XG4gICAgZGF0YS5zb3VyY2VUeXBlID0gJ3N0cmVhbSc7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdJTlBVVFNURUFNQlVGRkVSUkVRVUlSRUQnLCB7IG5hbWU6IGRhdGEubmFtZSB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9lbnRyaWVzQ291bnQrKztcbiAgdGhpcy5fcXVldWUucHVzaCh7XG4gICAgZGF0YTogZGF0YSxcbiAgICBzb3VyY2U6IHNvdXJjZVxuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQXBwZW5kcyBhIGRpcmVjdG9yeSBhbmQgaXRzIGZpbGVzLCByZWN1cnNpdmVseSwgZ2l2ZW4gaXRzIGRpcnBhdGguXG4gKlxuICogQHBhcmFtICB7U3RyaW5nfSBkaXJwYXRoIFRoZSBzb3VyY2UgZGlyZWN0b3J5IHBhdGguXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGRlc3RwYXRoIFRoZSBkZXN0aW5hdGlvbiBwYXRoIHdpdGhpbiB0aGUgYXJjaGl2ZS5cbiAqIEBwYXJhbSAgeyhFbnRyeURhdGF8RnVuY3Rpb24pfSBkYXRhIFNlZSBhbHNvIFtaaXBFbnRyeURhdGFde0BsaW5rIFppcEVudHJ5RGF0YX0gYW5kXG4gKiBbVGFyRW50cnlEYXRhXXtAbGluayBUYXJFbnRyeURhdGF9LlxuICogQHJldHVybiB7dGhpc31cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLmRpcmVjdG9yeSA9IGZ1bmN0aW9uKGRpcnBhdGgsIGRlc3RwYXRoLCBkYXRhKSB7XG4gIGlmICh0aGlzLl9zdGF0ZS5maW5hbGl6ZSB8fCB0aGlzLl9zdGF0ZS5hYm9ydGVkKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdRVUVVRUNMT1NFRCcpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGlycGF0aCAhPT0gJ3N0cmluZycgfHwgZGlycGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ0RJUkVDVE9SWURJUlBBVEhSRVFVSVJFRCcpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX3BlbmRpbmcrKztcblxuICBpZiAoZGVzdHBhdGggPT09IGZhbHNlKSB7XG4gICAgZGVzdHBhdGggPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVzdHBhdGggIT09ICdzdHJpbmcnKXtcbiAgICBkZXN0cGF0aCA9IGRpcnBhdGg7XG4gIH1cblxuICB2YXIgZGF0YUZ1bmN0aW9uID0gZmFsc2U7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGFGdW5jdGlvbiA9IGRhdGE7XG4gICAgZGF0YSA9IHt9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIGRhdGEgPSB7fTtcbiAgfVxuXG4gIHZhciBnbG9iT3B0aW9ucyA9IHtcbiAgICBzdGF0OiB0cnVlLFxuICAgIGRvdDogdHJ1ZVxuICB9O1xuXG4gIGZ1bmN0aW9uIG9uR2xvYkVuZCgpIHtcbiAgICB0aGlzLl9wZW5kaW5nLS07XG4gICAgdGhpcy5fbWF5YmVGaW5hbGl6ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25HbG9iRXJyb3IoZXJyKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gIH1cblxuICBmdW5jdGlvbiBvbkdsb2JNYXRjaChtYXRjaCl7XG4gICAgZ2xvYmJlci5wYXVzZSgpO1xuXG4gICAgdmFyIGlnbm9yZU1hdGNoID0gZmFsc2U7XG4gICAgdmFyIGVudHJ5RGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGEpO1xuICAgIGVudHJ5RGF0YS5uYW1lID0gbWF0Y2gucmVsYXRpdmU7XG4gICAgZW50cnlEYXRhLnByZWZpeCA9IGRlc3RwYXRoO1xuICAgIGVudHJ5RGF0YS5zdGF0cyA9IG1hdGNoLnN0YXQ7XG4gICAgZW50cnlEYXRhLmNhbGxiYWNrID0gZ2xvYmJlci5yZXN1bWUuYmluZChnbG9iYmVyKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoZGF0YUZ1bmN0aW9uKSB7XG4gICAgICAgIGVudHJ5RGF0YSA9IGRhdGFGdW5jdGlvbihlbnRyeURhdGEpO1xuXG4gICAgICAgIGlmIChlbnRyeURhdGEgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWdub3JlTWF0Y2ggPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbnRyeURhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFyY2hpdmVyRXJyb3IoJ0RJUkVDVE9SWUZVTkNUSU9OSU5WQUxJRERBVEEnLCB7IGRpcnBhdGg6IGRpcnBhdGggfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaWdub3JlTWF0Y2gpIHtcbiAgICAgIGdsb2JiZXIucmVzdW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXBwZW5kKG1hdGNoLmFic29sdXRlLCBlbnRyeURhdGEpO1xuICB9XG5cbiAgdmFyIGdsb2JiZXIgPSBnbG9iKGRpcnBhdGgsIGdsb2JPcHRpb25zKTtcbiAgZ2xvYmJlci5vbignZXJyb3InLCBvbkdsb2JFcnJvci5iaW5kKHRoaXMpKTtcbiAgZ2xvYmJlci5vbignbWF0Y2gnLCBvbkdsb2JNYXRjaC5iaW5kKHRoaXMpKTtcbiAgZ2xvYmJlci5vbignZW5kJywgb25HbG9iRW5kLmJpbmQodGhpcykpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIGEgZmlsZSBnaXZlbiBpdHMgZmlsZXBhdGggdXNpbmcgYVxuICogW2xhenlzdHJlYW1de0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9qcG9tbWVyZW5pbmcvbm9kZS1sYXp5c3RyZWFtfSB3cmFwcGVyIHRvXG4gKiBwcmV2ZW50IGlzc3VlcyB3aXRoIG9wZW4gZmlsZSBsaW1pdHMuXG4gKlxuICogV2hlbiB0aGUgaW5zdGFuY2UgaGFzIHJlY2VpdmVkLCBwcm9jZXNzZWQsIGFuZCBlbWl0dGVkIHRoZSBmaWxlLCB0aGUgYGVudHJ5YFxuICogZXZlbnQgaXMgZmlyZWQuXG4gKlxuICogQHBhcmFtICB7U3RyaW5nfSBmaWxlcGF0aCBUaGUgc291cmNlIGZpbGVwYXRoLlxuICogQHBhcmFtICB7RW50cnlEYXRhfSBkYXRhIFNlZSBhbHNvIFtaaXBFbnRyeURhdGFde0BsaW5rIFppcEVudHJ5RGF0YX0gYW5kXG4gKiBbVGFyRW50cnlEYXRhXXtAbGluayBUYXJFbnRyeURhdGF9LlxuICogQHJldHVybiB7dGhpc31cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLmZpbGUgPSBmdW5jdGlvbihmaWxlcGF0aCwgZGF0YSkge1xuICBpZiAodGhpcy5fc3RhdGUuZmluYWxpemUgfHwgdGhpcy5fc3RhdGUuYWJvcnRlZCkge1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgQXJjaGl2ZXJFcnJvcignUVVFVUVDTE9TRUQnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJyB8fCBmaWxlcGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ0ZJTEVGSUxFUEFUSFJFUVVJUkVEJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fYXBwZW5kKGZpbGVwYXRoLCBkYXRhKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQXBwZW5kcyBtdWx0aXBsZSBmaWxlcyB0aGF0IG1hdGNoIGEgZ2xvYiBwYXR0ZXJuLlxuICpcbiAqIEBwYXJhbSAge1N0cmluZ30gcGF0dGVybiBUaGUgW2dsb2IgcGF0dGVybl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9taW5pbWF0Y2h9IHRvIG1hdGNoLlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zIFNlZSBbbm9kZS1yZWFkZGlyLWdsb2Jde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS95cW5uL25vZGUtcmVhZGRpci1nbG9iI29wdGlvbnN9LlxuICogQHBhcmFtICB7RW50cnlEYXRhfSBkYXRhIFNlZSBhbHNvIFtaaXBFbnRyeURhdGFde0BsaW5rIFppcEVudHJ5RGF0YX0gYW5kXG4gKiBbVGFyRW50cnlEYXRhXXtAbGluayBUYXJFbnRyeURhdGF9LlxuICogQHJldHVybiB7dGhpc31cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLmdsb2IgPSBmdW5jdGlvbihwYXR0ZXJuLCBvcHRpb25zLCBkYXRhKSB7XG4gIHRoaXMuX3BlbmRpbmcrKztcblxuICBvcHRpb25zID0gdXRpbC5kZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgc3RhdDogdHJ1ZSxcbiAgICBwYXR0ZXJuOiBwYXR0ZXJuXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIG9uR2xvYkVuZCgpIHtcbiAgICB0aGlzLl9wZW5kaW5nLS07XG4gICAgdGhpcy5fbWF5YmVGaW5hbGl6ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25HbG9iRXJyb3IoZXJyKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gIH1cblxuICBmdW5jdGlvbiBvbkdsb2JNYXRjaChtYXRjaCl7XG4gICAgZ2xvYmJlci5wYXVzZSgpO1xuICAgIHZhciBlbnRyeURhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhKTtcbiAgICBlbnRyeURhdGEuY2FsbGJhY2sgPSBnbG9iYmVyLnJlc3VtZS5iaW5kKGdsb2JiZXIpO1xuICAgIGVudHJ5RGF0YS5zdGF0cyA9IG1hdGNoLnN0YXQ7XG4gICAgZW50cnlEYXRhLm5hbWUgPSBtYXRjaC5yZWxhdGl2ZTtcblxuICAgIHRoaXMuX2FwcGVuZChtYXRjaC5hYnNvbHV0ZSwgZW50cnlEYXRhKTtcbiAgfVxuXG4gIHZhciBnbG9iYmVyID0gZ2xvYihvcHRpb25zLmN3ZCB8fCAnLicsIG9wdGlvbnMpO1xuICBnbG9iYmVyLm9uKCdlcnJvcicsIG9uR2xvYkVycm9yLmJpbmQodGhpcykpO1xuICBnbG9iYmVyLm9uKCdtYXRjaCcsIG9uR2xvYk1hdGNoLmJpbmQodGhpcykpO1xuICBnbG9iYmVyLm9uKCdlbmQnLCBvbkdsb2JFbmQuYmluZCh0aGlzKSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEZpbmFsaXplcyB0aGUgaW5zdGFuY2UgYW5kIHByZXZlbnRzIGZ1cnRoZXIgYXBwZW5kaW5nIHRvIHRoZSBhcmNoaXZlXG4gKiBzdHJ1Y3R1cmUgKHF1ZXVlIHdpbGwgY29udGludWUgdGlsIGRyYWluZWQpLlxuICpcbiAqIFRoZSBgZW5kYCwgYGNsb3NlYCBvciBgZmluaXNoYCBldmVudHMgb24gdGhlIGRlc3RpbmF0aW9uIHN0cmVhbSBtYXkgZmlyZVxuICogcmlnaHQgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBzbyB5b3Ugc2hvdWxkIHNldCBsaXN0ZW5lcnMgYmVmb3JlaGFuZCB0b1xuICogcHJvcGVybHkgZGV0ZWN0IHN0cmVhbSBjb21wbGV0aW9uLlxuICpcbiAqIEByZXR1cm4ge1Byb21pc2V9XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fc3RhdGUuYWJvcnRlZCkge1xuICAgIHZhciBhYm9ydGVkRXJyb3IgPSBuZXcgQXJjaGl2ZXJFcnJvcignQUJPUlRFRCcpO1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBhYm9ydGVkRXJyb3IpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChhYm9ydGVkRXJyb3IpO1xuICB9XG5cbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXplKSB7XG4gICAgdmFyIGZpbmFsaXppbmdFcnJvciA9IG5ldyBBcmNoaXZlckVycm9yKCdGSU5BTElaSU5HJyk7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGZpbmFsaXppbmdFcnJvcik7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGZpbmFsaXppbmdFcnJvcik7XG4gIH1cblxuICB0aGlzLl9zdGF0ZS5maW5hbGl6ZSA9IHRydWU7XG5cbiAgaWYgKHRoaXMuX3BlbmRpbmcgPT09IDAgJiYgdGhpcy5fcXVldWUuaWRsZSgpICYmIHRoaXMuX3N0YXRRdWV1ZS5pZGxlKCkpIHtcbiAgICB0aGlzLl9maW5hbGl6ZSgpO1xuICB9XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgZXJyb3JlZDtcblxuICAgIHNlbGYuX21vZHVsZS5vbignZW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIWVycm9yZWQpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pXG5cbiAgICBzZWxmLl9tb2R1bGUub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgICBlcnJvcmVkID0gdHJ1ZTtcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH0pXG4gIH0pXG59O1xuXG4vKipcbiAqIFNldHMgdGhlIG1vZHVsZSBmb3JtYXQgbmFtZSB1c2VkIGZvciBhcmNoaXZpbmcuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0LlxuICogQHJldHVybiB7dGhpc31cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLnNldEZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCkge1xuICBpZiAodGhpcy5fZm9ybWF0KSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdGT1JNQVRTRVQnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9mb3JtYXQgPSBmb3JtYXQ7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIG1vZHVsZSB1c2VkIGZvciBhcmNoaXZpbmcuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbW9kdWxlIFRoZSBmdW5jdGlvbiBmb3IgYXJjaGl2ZXIgdG8gaW50ZXJhY3Qgd2l0aC5cbiAqIEByZXR1cm4ge3RoaXN9XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5zZXRNb2R1bGUgPSBmdW5jdGlvbihtb2R1bGUpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ0FCT1JURUQnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAodGhpcy5fc3RhdGUubW9kdWxlKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdNT0RVTEVTRVQnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9tb2R1bGUgPSBtb2R1bGU7XG4gIHRoaXMuX21vZHVsZVBpcGUoKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQXBwZW5kcyBhIHN5bWxpbmsgdG8gdGhlIGluc3RhbmNlLlxuICpcbiAqIFRoaXMgZG9lcyBOT1QgaW50ZXJhY3Qgd2l0aCBmaWxlc3lzdGVtIGFuZCBpcyB1c2VkIGZvciBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0aW5nIHN5bWxpbmtzLlxuICpcbiAqIEBwYXJhbSAge1N0cmluZ30gZmlsZXBhdGggVGhlIHN5bWxpbmsgcGF0aCAod2l0aGluIGFyY2hpdmUpLlxuICogQHBhcmFtICB7U3RyaW5nfSB0YXJnZXQgVGhlIHRhcmdldCBwYXRoICh3aXRoaW4gYXJjaGl2ZSkuXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IG1vZGUgU2V0cyB0aGUgZW50cnkgcGVybWlzc2lvbnMuXG4gKiBAcmV0dXJuIHt0aGlzfVxuICovXG5BcmNoaXZlci5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKGZpbGVwYXRoLCB0YXJnZXQsIG1vZGUpIHtcbiAgaWYgKHRoaXMuX3N0YXRlLmZpbmFsaXplIHx8IHRoaXMuX3N0YXRlLmFib3J0ZWQpIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ1FVRVVFQ0xPU0VEJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycgfHwgZmlsZXBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdTWU1MSU5LRklMRVBBVEhSRVFVSVJFRCcpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnc3RyaW5nJyB8fCB0YXJnZXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBBcmNoaXZlckVycm9yKCdTWU1MSU5LVEFSR0VUUkVRVUlSRUQnLCB7IGZpbGVwYXRoOiBmaWxlcGF0aCB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoIXRoaXMuX21vZHVsZVN1cHBvcnRzKCdzeW1saW5rJykpIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEFyY2hpdmVyRXJyb3IoJ1NZTUxJTktOT1RTVVBQT1JURUQnLCB7IGZpbGVwYXRoOiBmaWxlcGF0aCB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2YXIgZGF0YSA9IHt9O1xuICBkYXRhLnR5cGUgPSAnc3ltbGluayc7XG4gIGRhdGEubmFtZSA9IGZpbGVwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgZGF0YS5saW5rbmFtZSA9IHRhcmdldC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIGRhdGEuc291cmNlVHlwZSA9ICdidWZmZXInO1xuXG4gIGlmICh0eXBlb2YgbW9kZSA9PT0gXCJudW1iZXJcIikge1xuICAgIGRhdGEubW9kZSA9IG1vZGU7XG4gIH1cblxuICB0aGlzLl9lbnRyaWVzQ291bnQrKztcbiAgdGhpcy5fcXVldWUucHVzaCh7XG4gICAgZGF0YTogZGF0YSxcbiAgICBzb3VyY2U6IEJ1ZmZlci5jb25jYXQoW10pXG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGxlbmd0aCAoaW4gYnl0ZXMpIHRoYXQgaGFzIGJlZW4gZW1pdHRlZC5cbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKi9cbkFyY2hpdmVyLnByb3RvdHlwZS5wb2ludGVyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9wb2ludGVyO1xufTtcblxuLyoqXG4gKiBNaWRkbGV3YXJlLWxpa2UgaGVscGVyIHRoYXQgaGFzIHlldCB0byBiZSBmdWxseSBpbXBsZW1lbnRlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICB7RnVuY3Rpb259IHBsdWdpblxuICogQHJldHVybiB7dGhpc31cbiAqL1xuQXJjaGl2ZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uKHBsdWdpbikge1xuICB0aGlzLl9zdHJlYW1zLnB1c2gocGx1Z2luKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFyY2hpdmVyO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvcmVPcHRpb25zXG4gKiBAZ2xvYmFsXG4gKiBAcHJvcGVydHkge051bWJlcn0gW3N0YXRDb25jdXJyZW5jeT00XSBTZXRzIHRoZSBudW1iZXIgb2Ygd29ya2VycyB1c2VkIHRvXG4gKiBwcm9jZXNzIHRoZSBpbnRlcm5hbCBmcyBzdGF0IHF1ZXVlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVHJhbnNmb3JtT3B0aW9uc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBbYWxsb3dIYWxmT3Blbj10cnVlXSBJZiBzZXQgdG8gZmFsc2UsIHRoZW4gdGhlIHN0cmVhbVxuICogd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgcmVhZGFibGUgc2lkZSB3aGVuIHRoZSB3cml0YWJsZSBzaWRlIGVuZHMgYW5kIHZpY2VcbiAqIHZlcnNhLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBbcmVhZGFibGVPYmplY3RNb2RlPWZhbHNlXSBTZXRzIG9iamVjdE1vZGUgZm9yIHJlYWRhYmxlXG4gKiBzaWRlIG9mIHRoZSBzdHJlYW0uIEhhcyBubyBlZmZlY3QgaWYgb2JqZWN0TW9kZSBpcyB0cnVlLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBbd3JpdGFibGVPYmplY3RNb2RlPWZhbHNlXSBTZXRzIG9iamVjdE1vZGUgZm9yIHdyaXRhYmxlXG4gKiBzaWRlIG9mIHRoZSBzdHJlYW0uIEhhcyBubyBlZmZlY3QgaWYgb2JqZWN0TW9kZSBpcyB0cnVlLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBbZGVjb2RlU3RyaW5ncz10cnVlXSBXaGV0aGVyIG9yIG5vdCB0byBkZWNvZGUgc3RyaW5nc1xuICogaW50byBCdWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRoZW0gdG8gX3dyaXRlKCkuIGBXcml0YWJsZWBcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBbZW5jb2Rpbmc9TlVMTF0gSWYgc3BlY2lmaWVkLCB0aGVuIGJ1ZmZlcnMgd2lsbCBiZSBkZWNvZGVkXG4gKiB0byBzdHJpbmdzIHVzaW5nIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcuIGBSZWFkYWJsZWBcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbaGlnaFdhdGVyTWFyaz0xNmtiXSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gc3RvcmVcbiAqIGluIHRoZSBpbnRlcm5hbCBidWZmZXIgYmVmb3JlIGNlYXNpbmcgdG8gcmVhZCBmcm9tIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlLlxuICogYFJlYWRhYmxlYCBgV3JpdGFibGVgXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IFtvYmplY3RNb2RlPWZhbHNlXSBXaGV0aGVyIHRoaXMgc3RyZWFtIHNob3VsZCBiZWhhdmUgYXMgYVxuICogc3RyZWFtIG9mIG9iamVjdHMuIE1lYW5pbmcgdGhhdCBzdHJlYW0ucmVhZChuKSByZXR1cm5zIGEgc2luZ2xlIHZhbHVlIGluc3RlYWRcbiAqIG9mIGEgQnVmZmVyIG9mIHNpemUgbi4gYFJlYWRhYmxlYCBgV3JpdGFibGVgXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFbnRyeURhdGFcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFNldHMgdGhlIGVudHJ5IG5hbWUgaW5jbHVkaW5nIGludGVybmFsIHBhdGguXG4gKiBAcHJvcGVydHkgeyhTdHJpbmd8RGF0ZSl9IFtkYXRlPU5PVygpXSBTZXRzIHRoZSBlbnRyeSBkYXRlLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IFttb2RlPUQ6MDc1NS9GOjA2NDRdIFNldHMgdGhlIGVudHJ5IHBlcm1pc3Npb25zLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IFtwcmVmaXhdIFNldHMgYSBwYXRoIHByZWZpeCBmb3IgdGhlIGVudHJ5IG5hbWUuIFVzZWZ1bFxuICogd2hlbiB3b3JraW5nIHdpdGggbWV0aG9kcyBsaWtlIGBkaXJlY3RvcnlgIG9yIGBnbG9iYC5cbiAqIEBwcm9wZXJ0eSB7ZnMuU3RhdHN9IFtzdGF0c10gU2V0cyB0aGUgZnMgc3RhdCBkYXRhIGZvciB0aGlzIGVudHJ5IGFsbG93aW5nXG4gKiBmb3IgcmVkdWN0aW9uIG9mIGZzIHN0YXQgY2FsbHMgd2hlbiBzdGF0IGRhdGEgaXMgYWxyZWFkeSBrbm93bi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVycm9yRGF0YVxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2Ugb2YgdGhlIGVycm9yLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGNvZGUgVGhlIGVycm9yIGNvZGUgYXNzaWduZWQgdG8gdGhpcyBlcnJvci5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkYXRhIEFkZGl0aW9uYWwgZGF0YSBwcm92aWRlZCBmb3IgcmVwb3J0aW5nIG9yIGRlYnVnZ2luZyAod2hlcmUgYXZhaWxhYmxlKS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByb2dyZXNzRGF0YVxuICogQHByb3BlcnR5IHtPYmplY3R9IGVudHJpZXNcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBlbnRyaWVzLnRvdGFsIE51bWJlciBvZiBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGFwcGVuZGVkLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGVudHJpZXMucHJvY2Vzc2VkIE51bWJlciBvZiBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBmc1xuICogQHByb3BlcnR5IHtOdW1iZXJ9IGZzLnRvdGFsQnl0ZXMgTnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGFwcGVuZGVkLiBDYWxjdWxhdGVkIGFzeW5jaHJvbm91c2x5IGFuZCBtaWdodCBub3QgYmUgYWNjdXJhdGU6IGl0IGdyb3d0aCB3aGlsZSBlbnRyaWVzIGFyZSBhZGRlZC4gKGJhc2VkIG9uIGZzLlN0YXRzKVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGZzLnByb2Nlc3NlZEJ5dGVzIE51bWJlciBvZiBieXRlcyB0aGF0IGhhdmUgYmVlbiBwcm9jZXNzZWQuIChiYXNlZCBvbiBmcy5TdGF0cylcbiAqL1xuIiwiLyoqXG4gKiBBcmNoaXZlciBDb3JlXG4gKlxuICogQGlnbm9yZVxuICogQGxpY2Vuc2UgW01JVF17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1hcmNoaXZlci9ibG9iL21hc3Rlci9MSUNFTlNFfVxuICogQGNvcHlyaWdodCAoYykgMjAxMi0yMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gICdBQk9SVEVEJzogJ2FyY2hpdmUgd2FzIGFib3J0ZWQnLFxuICAnRElSRUNUT1JZRElSUEFUSFJFUVVJUkVEJzogJ2RpcmV0b3J5IGRpcnBhdGggYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUnLFxuICAnRElSRUNUT1JZRlVOQ1RJT05JTlZBTElEREFUQSc6ICdpbnZhbGlkIGRhdGEgcmV0dXJuZWQgYnkgZGlyZWN0b3J5IGN1c3RvbSBkYXRhIGZ1bmN0aW9uJyxcbiAgJ0VOVFJZTkFNRVJFUVVJUkVEJzogJ2VudHJ5IG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUnLFxuICAnRklMRUZJTEVQQVRIUkVRVUlSRUQnOiAnZmlsZSBmaWxlcGF0aCBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyB2YWx1ZScsXG4gICdGSU5BTElaSU5HJzogJ2FyY2hpdmUgYWxyZWFkeSBmaW5hbGl6aW5nJyxcbiAgJ1FVRVVFQ0xPU0VEJzogJ3F1ZXVlIGNsb3NlZCcsXG4gICdOT0VORE1FVEhPRCc6ICdubyBzdWl0YWJsZSBmaW5hbGl6ZS9lbmQgbWV0aG9kIGRlZmluZWQgYnkgbW9kdWxlJyxcbiAgJ0RJUkVDVE9SWU5PVFNVUFBPUlRFRCc6ICdzdXBwb3J0IGZvciBkaXJlY3RvcnkgZW50cmllcyBub3QgZGVmaW5lZCBieSBtb2R1bGUnLFxuICAnRk9STUFUU0VUJzogJ2FyY2hpdmUgZm9ybWF0IGFscmVhZHkgc2V0JyxcbiAgJ0lOUFVUU1RFQU1CVUZGRVJSRVFVSVJFRCc6ICdpbnB1dCBzb3VyY2UgbXVzdCBiZSB2YWxpZCBTdHJlYW0gb3IgQnVmZmVyIGluc3RhbmNlJyxcbiAgJ01PRFVMRVNFVCc6ICdtb2R1bGUgYWxyZWFkeSBzZXQnLFxuICAnU1lNTElOS05PVFNVUFBPUlRFRCc6ICdzdXBwb3J0IGZvciBzeW1saW5rIGVudHJpZXMgbm90IGRlZmluZWQgYnkgbW9kdWxlJyxcbiAgJ1NZTUxJTktGSUxFUEFUSFJFUVVJUkVEJzogJ3N5bWxpbmsgZmlsZXBhdGggYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUnLFxuICAnU1lNTElOS1RBUkdFVFJFUVVJUkVEJzogJ3N5bWxpbmsgdGFyZ2V0IGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlJyxcbiAgJ0VOVFJZTk9UU1VQUE9SVEVEJzogJ2VudHJ5IG5vdCBzdXBwb3J0ZWQnXG59O1xuXG5mdW5jdGlvbiBBcmNoaXZlckVycm9yKGNvZGUsIGRhdGEpIHtcbiAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIC8vdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB0aGlzLm1lc3NhZ2UgPSBFUlJPUl9DT0RFU1tjb2RlXSB8fCBjb2RlO1xuICB0aGlzLmNvZGUgPSBjb2RlO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xufVxuXG51dGlsLmluaGVyaXRzKEFyY2hpdmVyRXJyb3IsIEVycm9yKTtcblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gQXJjaGl2ZXJFcnJvcjsiLCIvKipcbiAqIEpTT04gRm9ybWF0IFBsdWdpblxuICpcbiAqIEBtb2R1bGUgcGx1Z2lucy9qc29uXG4gKiBAbGljZW5zZSBbTUlUXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWFyY2hpdmVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0V9XG4gKiBAY29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICovXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCd1dGlsJykuaW5oZXJpdHM7XG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuVHJhbnNmb3JtO1xuXG52YXIgY3JjMzIgPSByZXF1aXJlKCdidWZmZXItY3JjMzInKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnYXJjaGl2ZXItdXRpbHMnKTtcblxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7KEpzb25PcHRpb25zfFRyYW5zZm9ybU9wdGlvbnMpfSBvcHRpb25zXG4gKi9cbnZhciBKc29uID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSnNvbikpIHtcbiAgICByZXR1cm4gbmV3IEpzb24ob3B0aW9ucyk7XG4gIH1cblxuICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0gdXRpbC5kZWZhdWx0cyhvcHRpb25zLCB7fSk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5zdXBwb3J0cyA9IHtcbiAgICBkaXJlY3Rvcnk6IHRydWUsXG4gICAgc3ltbGluazogdHJ1ZVxuICB9O1xuXG4gIHRoaXMuZmlsZXMgPSBbXTtcbn07XG5cbmluaGVyaXRzKEpzb24sIFRyYW5zZm9ybSk7XG5cbi8qKlxuICogW190cmFuc2Zvcm0gZGVzY3JpcHRpb25dXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSAge0J1ZmZlcn0gICBjaHVua1xuICogQHBhcmFtICB7U3RyaW5nfSAgIGVuY29kaW5nXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5Kc29uLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhudWxsLCBjaHVuayk7XG59O1xuXG4vKipcbiAqIFtfd3JpdGVTdHJpbmdpZmllZCBkZXNjcmlwdGlvbl1cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHJldHVybiB2b2lkXG4gKi9cbkpzb24ucHJvdG90eXBlLl93cml0ZVN0cmluZ2lmaWVkID0gZnVuY3Rpb24oKSB7XG4gIHZhciBmaWxlU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5maWxlcyk7XG4gIHRoaXMud3JpdGUoZmlsZVN0cmluZyk7XG59O1xuXG4vKipcbiAqIFthcHBlbmQgZGVzY3JpcHRpb25dXG4gKlxuICogQHBhcmFtICB7KEJ1ZmZlcnxTdHJlYW0pfSAgIHNvdXJjZVxuICogQHBhcmFtICB7RW50cnlEYXRhfSAgIGRhdGFcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB2b2lkXG4gKi9cbkpzb24ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGRhdGEuY3JjMzIgPSAwO1xuXG4gIGZ1bmN0aW9uIG9uZW5kKGVyciwgc291cmNlQnVmZmVyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRhLnNpemUgPSBzb3VyY2VCdWZmZXIubGVuZ3RoIHx8IDA7XG4gICAgZGF0YS5jcmMzMiA9IGNyYzMyLnVuc2lnbmVkKHNvdXJjZUJ1ZmZlcik7XG5cbiAgICBzZWxmLmZpbGVzLnB1c2goZGF0YSk7XG5cbiAgICBjYWxsYmFjayhudWxsLCBkYXRhKTtcbiAgfVxuXG4gIGlmIChkYXRhLnNvdXJjZVR5cGUgPT09ICdidWZmZXInKSB7XG4gICAgb25lbmQobnVsbCwgc291cmNlKTtcbiAgfSBlbHNlIGlmIChkYXRhLnNvdXJjZVR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgdXRpbC5jb2xsZWN0U3RyZWFtKHNvdXJjZSwgb25lbmQpO1xuICB9XG59O1xuXG4vKipcbiAqIFtmaW5hbGl6ZSBkZXNjcmlwdGlvbl1cbiAqXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuSnNvbi5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fd3JpdGVTdHJpbmdpZmllZCgpO1xuICB0aGlzLmVuZCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBKc29uO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEpzb25PcHRpb25zXG4gKiBAZ2xvYmFsXG4gKi9cbiIsIi8qKlxuICogVEFSIEZvcm1hdCBQbHVnaW5cbiAqXG4gKiBAbW9kdWxlIHBsdWdpbnMvdGFyXG4gKiBAbGljZW5zZSBbTUlUXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWFyY2hpdmVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0V9XG4gKiBAY29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICovXG52YXIgemxpYiA9IHJlcXVpcmUoJ3psaWInKTtcblxudmFyIGVuZ2luZSA9IHJlcXVpcmUoJ3Rhci1zdHJlYW0nKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnYXJjaGl2ZXItdXRpbHMnKTtcblxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7VGFyT3B0aW9uc30gb3B0aW9uc1xuICovXG52YXIgVGFyID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVGFyKSkge1xuICAgIHJldHVybiBuZXcgVGFyKG9wdGlvbnMpO1xuICB9XG5cbiAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHV0aWwuZGVmYXVsdHMob3B0aW9ucywge1xuICAgIGd6aXA6IGZhbHNlXG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5nemlwT3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zLmd6aXBPcHRpb25zID0ge307XG4gIH1cblxuICB0aGlzLnN1cHBvcnRzID0ge1xuICAgIGRpcmVjdG9yeTogdHJ1ZSxcbiAgICBzeW1saW5rOiB0cnVlXG4gIH07XG5cbiAgdGhpcy5lbmdpbmUgPSBlbmdpbmUucGFjayhvcHRpb25zKTtcbiAgdGhpcy5jb21wcmVzc29yID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMuZ3ppcCkge1xuICAgIHRoaXMuY29tcHJlc3NvciA9IHpsaWIuY3JlYXRlR3ppcChvcHRpb25zLmd6aXBPcHRpb25zKTtcbiAgICB0aGlzLmNvbXByZXNzb3Iub24oJ2Vycm9yJywgdGhpcy5fb25Db21wcmVzc29yRXJyb3IuYmluZCh0aGlzKSk7XG4gIH1cbn07XG5cbi8qKlxuICogW19vbkNvbXByZXNzb3JFcnJvciBkZXNjcmlwdGlvbl1cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICB7RXJyb3J9IGVyclxuICogQHJldHVybiB2b2lkXG4gKi9cblRhci5wcm90b3R5cGUuX29uQ29tcHJlc3NvckVycm9yID0gZnVuY3Rpb24oZXJyKSB7XG4gIHRoaXMuZW5naW5lLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn07XG5cbi8qKlxuICogW2FwcGVuZCBkZXNjcmlwdGlvbl1cbiAqXG4gKiBAcGFyYW0gIHsoQnVmZmVyfFN0cmVhbSl9IHNvdXJjZVxuICogQHBhcmFtICB7VGFyRW50cnlEYXRhfSBkYXRhXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5UYXIucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGRhdGEubXRpbWUgPSBkYXRhLmRhdGU7XG5cbiAgZnVuY3Rpb24gYXBwZW5kKGVyciwgc291cmNlQnVmZmVyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLmVuZ2luZS5lbnRyeShkYXRhLCBzb3VyY2VCdWZmZXIsIGZ1bmN0aW9uKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyLCBkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChkYXRhLnNvdXJjZVR5cGUgPT09ICdidWZmZXInKSB7XG4gICAgYXBwZW5kKG51bGwsIHNvdXJjZSk7XG4gIH0gZWxzZSBpZiAoZGF0YS5zb3VyY2VUeXBlID09PSAnc3RyZWFtJyAmJiBkYXRhLnN0YXRzKSB7XG4gICAgZGF0YS5zaXplID0gZGF0YS5zdGF0cy5zaXplO1xuXG4gICAgdmFyIGVudHJ5ID0gc2VsZi5lbmdpbmUuZW50cnkoZGF0YSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICBjYWxsYmFjayhlcnIsIGRhdGEpO1xuICAgIH0pO1xuXG4gICAgc291cmNlLnBpcGUoZW50cnkpO1xuICB9IGVsc2UgaWYgKGRhdGEuc291cmNlVHlwZSA9PT0gJ3N0cmVhbScpIHtcbiAgICB1dGlsLmNvbGxlY3RTdHJlYW0oc291cmNlLCBhcHBlbmQpO1xuICB9XG59O1xuXG4vKipcbiAqIFtmaW5hbGl6ZSBkZXNjcmlwdGlvbl1cbiAqXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuVGFyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmVuZ2luZS5maW5hbGl6ZSgpO1xufTtcblxuLyoqXG4gKiBbb24gZGVzY3JpcHRpb25dXG4gKlxuICogQHJldHVybiB0aGlzLmVuZ2luZVxuICovXG5UYXIucHJvdG90eXBlLm9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVuZ2luZS5vbi5hcHBseSh0aGlzLmVuZ2luZSwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogW3BpcGUgZGVzY3JpcHRpb25dXG4gKlxuICogQHBhcmFtICB7U3RyaW5nfSBkZXN0aW5hdGlvblxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHRoaXMuZW5naW5lXG4gKi9cblRhci5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3RpbmF0aW9uLCBvcHRpb25zKSB7XG4gIGlmICh0aGlzLmNvbXByZXNzb3IpIHtcbiAgICByZXR1cm4gdGhpcy5lbmdpbmUucGlwZS5hcHBseSh0aGlzLmVuZ2luZSwgW3RoaXMuY29tcHJlc3Nvcl0pLnBpcGUoZGVzdGluYXRpb24sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZS5waXBlLmFwcGx5KHRoaXMuZW5naW5lLCBhcmd1bWVudHMpO1xuICB9XG59O1xuXG4vKipcbiAqIFt1bnBpcGUgZGVzY3JpcHRpb25dXG4gKlxuICogQHJldHVybiB0aGlzLmVuZ2luZVxuICovXG5UYXIucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5jb21wcmVzc29yKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcHJlc3Nvci51bnBpcGUuYXBwbHkodGhpcy5jb21wcmVzc29yLCBhcmd1bWVudHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZS51bnBpcGUuYXBwbHkodGhpcy5lbmdpbmUsIGFyZ3VtZW50cyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVGFyO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRhck9wdGlvbnNcbiAqIEBnbG9iYWxcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2d6aXA9ZmFsc2VdIENvbXByZXNzIHRoZSB0YXIgYXJjaGl2ZSB1c2luZyBnemlwLlxuICogQHByb3BlcnR5IHtPYmplY3R9IFtnemlwT3B0aW9uc10gUGFzc2VkIHRvIFt6bGliXXtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL3psaWIuaHRtbCN6bGliX2NsYXNzX29wdGlvbnN9XG4gKiB0byBjb250cm9sIGNvbXByZXNzaW9uLlxuICogQHByb3BlcnR5IHsqfSBbKl0gU2VlIFt0YXItc3RyZWFtXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3Rhci1zdHJlYW19IGRvY3VtZW50YXRpb24gZm9yIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRhckVudHJ5RGF0YVxuICogQGdsb2JhbFxuICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgU2V0cyB0aGUgZW50cnkgbmFtZSBpbmNsdWRpbmcgaW50ZXJuYWwgcGF0aC5cbiAqIEBwcm9wZXJ0eSB7KFN0cmluZ3xEYXRlKX0gW2RhdGU9Tk9XKCldIFNldHMgdGhlIGVudHJ5IGRhdGUuXG4gKiBAcHJvcGVydHkge051bWJlcn0gW21vZGU9RDowNzU1L0Y6MDY0NF0gU2V0cyB0aGUgZW50cnkgcGVybWlzc2lvbnMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gW3ByZWZpeF0gU2V0cyBhIHBhdGggcHJlZml4IGZvciB0aGUgZW50cnkgbmFtZS4gVXNlZnVsXG4gKiB3aGVuIHdvcmtpbmcgd2l0aCBtZXRob2RzIGxpa2UgYGRpcmVjdG9yeWAgb3IgYGdsb2JgLlxuICogQHByb3BlcnR5IHtmcy5TdGF0c30gW3N0YXRzXSBTZXRzIHRoZSBmcyBzdGF0IGRhdGEgZm9yIHRoaXMgZW50cnkgYWxsb3dpbmdcbiAqIGZvciByZWR1Y3Rpb24gb2YgZnMgc3RhdCBjYWxscyB3aGVuIHN0YXQgZGF0YSBpcyBhbHJlYWR5IGtub3duLlxuICovXG5cbi8qKlxuICogVGFyU3RyZWFtIE1vZHVsZVxuICogQGV4dGVybmFsIFRhclN0cmVhbVxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC90YXItc3RyZWFtfVxuICovXG4iLCIvKipcbiAqIFpJUCBGb3JtYXQgUGx1Z2luXG4gKlxuICogQG1vZHVsZSBwbHVnaW5zL3ppcFxuICogQGxpY2Vuc2UgW01JVF17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1hcmNoaXZlci9ibG9iL21hc3Rlci9MSUNFTlNFfVxuICogQGNvcHlyaWdodCAoYykgMjAxMi0yMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqL1xudmFyIGVuZ2luZSA9IHJlcXVpcmUoJ3ppcC1zdHJlYW0nKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnYXJjaGl2ZXItdXRpbHMnKTtcblxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7WmlwT3B0aW9uc30gW29wdGlvbnNdXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuY29tbWVudF0gU2V0cyB0aGUgemlwIGFyY2hpdmUgY29tbWVudC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuZm9yY2VMb2NhbFRpbWU9ZmFsc2VdIEZvcmNlcyB0aGUgYXJjaGl2ZSB0byBjb250YWluIGxvY2FsIGZpbGUgdGltZXMgaW5zdGVhZCBvZiBVVEMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmZvcmNlWmlwNjQ9ZmFsc2VdIEZvcmNlcyB0aGUgYXJjaGl2ZSB0byBjb250YWluIFpJUDY0IGhlYWRlcnMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLm5hbWVQcmVwZW5kU2xhc2g9ZmFsc2VdIFByZXBlbmRzIGEgZm9yd2FyZCBzbGFzaCB0byBhcmNoaXZlIGZpbGUgcGF0aHMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnN0b3JlPWZhbHNlXSBTZXRzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdG8gU1RPUkUuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMuemxpYl0gUGFzc2VkIHRvIFt6bGliXXtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL3psaWIuaHRtbCN6bGliX2NsYXNzX29wdGlvbnN9XG4gKi9cbnZhciBaaXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBaaXApKSB7XG4gICAgcmV0dXJuIG5ldyBaaXAob3B0aW9ucyk7XG4gIH1cblxuICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0gdXRpbC5kZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgY29tbWVudDogJycsXG4gICAgZm9yY2VVVEM6IGZhbHNlLFxuICAgIG5hbWVQcmVwZW5kU2xhc2g6IGZhbHNlLFxuICAgIHN0b3JlOiBmYWxzZVxuICB9KTtcblxuICB0aGlzLnN1cHBvcnRzID0ge1xuICAgIGRpcmVjdG9yeTogdHJ1ZSxcbiAgICBzeW1saW5rOiB0cnVlXG4gIH07XG5cbiAgdGhpcy5lbmdpbmUgPSBuZXcgZW5naW5lKG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gIHsoQnVmZmVyfFN0cmVhbSl9IHNvdXJjZVxuICogQHBhcmFtICB7WmlwRW50cnlEYXRhfSBkYXRhXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGRhdGEubmFtZSBTZXRzIHRoZSBlbnRyeSBuYW1lIGluY2x1ZGluZyBpbnRlcm5hbCBwYXRoLlxuICogQHBhcmFtICB7KFN0cmluZ3xEYXRlKX0gW2RhdGEuZGF0ZT1OT1coKV0gU2V0cyB0aGUgZW50cnkgZGF0ZS5cbiAqIEBwYXJhbSAge051bWJlcn0gW2RhdGEubW9kZT1EOjA3NTUvRjowNjQ0XSBTZXRzIHRoZSBlbnRyeSBwZXJtaXNzaW9ucy5cbiAqIEBwYXJhbSAge1N0cmluZ30gW2RhdGEucHJlZml4XSBTZXRzIGEgcGF0aCBwcmVmaXggZm9yIHRoZSBlbnRyeSBuYW1lLiBVc2VmdWxcbiAqIHdoZW4gd29ya2luZyB3aXRoIG1ldGhvZHMgbGlrZSBgZGlyZWN0b3J5YCBvciBgZ2xvYmAuXG4gKiBAcGFyYW0gIHtmcy5TdGF0c30gW2RhdGEuc3RhdHNdIFNldHMgdGhlIGZzIHN0YXQgZGF0YSBmb3IgdGhpcyBlbnRyeSBhbGxvd2luZ1xuICogZm9yIHJlZHVjdGlvbiBvZiBmcyBzdGF0IGNhbGxzIHdoZW4gc3RhdCBkYXRhIGlzIGFscmVhZHkga25vd24uXG4gKiBAcGFyYW0gIHtCb29sZWFufSBbZGF0YS5zdG9yZT1aaXBPcHRpb25zLnN0b3JlXSBTZXRzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdG8gU1RPUkUuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4gdm9pZFxuICovXG5aaXAucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdGhpcy5lbmdpbmUuZW50cnkoc291cmNlLCBkYXRhLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEByZXR1cm4gdm9pZFxuICovXG5aaXAucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuZW5naW5lLmZpbmFsaXplKCk7XG59O1xuXG4vKipcbiAqIEByZXR1cm4gdGhpcy5lbmdpbmVcbiAqL1xuWmlwLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lbmdpbmUub24uYXBwbHkodGhpcy5lbmdpbmUsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIEByZXR1cm4gdGhpcy5lbmdpbmVcbiAqL1xuWmlwLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVuZ2luZS5waXBlLmFwcGx5KHRoaXMuZW5naW5lLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBAcmV0dXJuIHRoaXMuZW5naW5lXG4gKi9cblppcC5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVuZ2luZS51bnBpcGUuYXBwbHkodGhpcy5lbmdpbmUsIGFyZ3VtZW50cyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFppcDtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBaaXBPcHRpb25zXG4gKiBAZ2xvYmFsXG4gKiBAcHJvcGVydHkge1N0cmluZ30gW2NvbW1lbnRdIFNldHMgdGhlIHppcCBhcmNoaXZlIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IFtmb3JjZUxvY2FsVGltZT1mYWxzZV0gRm9yY2VzIHRoZSBhcmNoaXZlIHRvIGNvbnRhaW4gbG9jYWwgZmlsZSB0aW1lcyBpbnN0ZWFkIG9mIFVUQy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2ZvcmNlWmlwNjQ9ZmFsc2VdIEZvcmNlcyB0aGUgYXJjaGl2ZSB0byBjb250YWluIFpJUDY0IGhlYWRlcnMuXG4gKiBAcHJwcGVydHkge0Jvb2xlYW59IFtuYW1lUHJlcGVuZFNsYXNoPWZhbHNlXSBQcmVwZW5kcyBhIGZvcndhcmQgc2xhc2ggdG8gYXJjaGl2ZSBmaWxlIHBhdGhzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBbc3RvcmU9ZmFsc2VdIFNldHMgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCB0byBTVE9SRS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBbemxpYl0gUGFzc2VkIHRvIFt6bGliXXtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL3psaWIuaHRtbCN6bGliX2NsYXNzX29wdGlvbnN9XG4gKiB0byBjb250cm9sIGNvbXByZXNzaW9uLlxuICogQHByb3BlcnR5IHsqfSBbKl0gU2VlIFt6aXAtc3RyZWFtXXtAbGluayBodHRwczovL2FyY2hpdmVyanMuY29tL3ppcC1zdHJlYW0vWmlwU3RyZWFtLmh0bWx9IGRvY3VtZW50YXRpb24gZm9yIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gWmlwRW50cnlEYXRhXG4gKiBAZ2xvYmFsXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBTZXRzIHRoZSBlbnRyeSBuYW1lIGluY2x1ZGluZyBpbnRlcm5hbCBwYXRoLlxuICogQHByb3BlcnR5IHsoU3RyaW5nfERhdGUpfSBbZGF0ZT1OT1coKV0gU2V0cyB0aGUgZW50cnkgZGF0ZS5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbbW9kZT1EOjA3NTUvRjowNjQ0XSBTZXRzIHRoZSBlbnRyeSBwZXJtaXNzaW9ucy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW25hbWVQcmVwZW5kU2xhc2g9WmlwT3B0aW9ucy5uYW1lUHJlcGVuZFNsYXNoXSBQcmVwZW5kcyBhIGZvcndhcmQgc2xhc2ggdG8gYXJjaGl2ZSBmaWxlIHBhdGhzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IFtwcmVmaXhdIFNldHMgYSBwYXRoIHByZWZpeCBmb3IgdGhlIGVudHJ5IG5hbWUuIFVzZWZ1bFxuICogd2hlbiB3b3JraW5nIHdpdGggbWV0aG9kcyBsaWtlIGBkaXJlY3RvcnlgIG9yIGBnbG9iYC5cbiAqIEBwcm9wZXJ0eSB7ZnMuU3RhdHN9IFtzdGF0c10gU2V0cyB0aGUgZnMgc3RhdCBkYXRhIGZvciB0aGlzIGVudHJ5IGFsbG93aW5nXG4gKiBmb3IgcmVkdWN0aW9uIG9mIGZzIHN0YXQgY2FsbHMgd2hlbiBzdGF0IGRhdGEgaXMgYWxyZWFkeSBrbm93bi5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3N0b3JlPVppcE9wdGlvbnMuc3RvcmVdIFNldHMgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCB0byBTVE9SRS5cbiAqL1xuXG4vKipcbiAqIFppcFN0cmVhbSBNb2R1bGVcbiAqIEBleHRlcm5hbCBaaXBTdHJlYW1cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmFyY2hpdmVyanMuY29tL3ppcC1zdHJlYW0vWmlwU3RyZWFtLmh0bWx9XG4gKi9cbiIsImltcG9ydCB7XG4gIHNjcmVlbixcbiAgQnJvd3NlcldpbmRvdyxcbiAgQnJvd3NlcldpbmRvd0NvbnN0cnVjdG9yT3B0aW9ucyxcbiAgUmVjdGFuZ2xlLFxufSBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCBTdG9yZSBmcm9tIFwiZWxlY3Ryb24tc3RvcmVcIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVdpbmRvdyA9IChcbiAgd2luZG93TmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBCcm93c2VyV2luZG93Q29uc3RydWN0b3JPcHRpb25zXG4pOiBCcm93c2VyV2luZG93ID0+IHtcbiAgY29uc3Qga2V5ID0gXCJ3aW5kb3ctc3RhdGVcIjtcbiAgY29uc3QgbmFtZSA9IGB3aW5kb3ctc3RhdGUtJHt3aW5kb3dOYW1lfWA7XG4gIGNvbnN0IHN0b3JlID0gbmV3IFN0b3JlPFJlY3RhbmdsZT4oeyBuYW1lIH0pO1xuICBjb25zdCBkZWZhdWx0U2l6ZSA9IHtcbiAgICB3aWR0aDogb3B0aW9ucy53aWR0aCxcbiAgICBoZWlnaHQ6IG9wdGlvbnMuaGVpZ2h0LFxuICB9O1xuICBsZXQgc3RhdGUgPSB7fTtcblxuICBjb25zdCByZXN0b3JlID0gKCkgPT4gc3RvcmUuZ2V0KGtleSwgZGVmYXVsdFNpemUpO1xuXG4gIGNvbnN0IGdldEN1cnJlbnRQb3NpdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHdpbi5nZXRQb3NpdGlvbigpO1xuICAgIGNvbnN0IHNpemUgPSB3aW4uZ2V0U2l6ZSgpO1xuICAgIHJldHVybiB7XG4gICAgICB4OiBwb3NpdGlvblswXSxcbiAgICAgIHk6IHBvc2l0aW9uWzFdLFxuICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICBoZWlnaHQ6IHNpemVbMV0sXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB3aW5kb3dXaXRoaW5Cb3VuZHMgPSAod2luZG93U3RhdGUsIGJvdW5kcykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB3aW5kb3dTdGF0ZS54ID49IGJvdW5kcy54ICYmXG4gICAgICB3aW5kb3dTdGF0ZS55ID49IGJvdW5kcy55ICYmXG4gICAgICB3aW5kb3dTdGF0ZS54ICsgd2luZG93U3RhdGUud2lkdGggPD0gYm91bmRzLnggKyBib3VuZHMud2lkdGggJiZcbiAgICAgIHdpbmRvd1N0YXRlLnkgKyB3aW5kb3dTdGF0ZS5oZWlnaHQgPD0gYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZXNldFRvRGVmYXVsdHMgPSAoKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gc2NyZWVuLmdldFByaW1hcnlEaXNwbGF5KCkuYm91bmRzO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U2l6ZSwge1xuICAgICAgeDogKGJvdW5kcy53aWR0aCAtIGRlZmF1bHRTaXplLndpZHRoKSAvIDIsXG4gICAgICB5OiAoYm91bmRzLmhlaWdodCAtIGRlZmF1bHRTaXplLmhlaWdodCkgLyAyLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGVuc3VyZVZpc2libGVPblNvbWVEaXNwbGF5ID0gKHdpbmRvd1N0YXRlKSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHNjcmVlbi5nZXRBbGxEaXNwbGF5cygpLnNvbWUoKGRpc3BsYXkpID0+IHtcbiAgICAgIHJldHVybiB3aW5kb3dXaXRoaW5Cb3VuZHMod2luZG93U3RhdGUsIGRpc3BsYXkuYm91bmRzKTtcbiAgICB9KTtcbiAgICBpZiAoIXZpc2libGUpIHtcbiAgICAgIC8vIFdpbmRvdyBpcyBwYXJ0aWFsbHkgb3IgZnVsbHkgbm90IHZpc2libGUgbm93LlxuICAgICAgLy8gUmVzZXQgaXQgdG8gc2FmZSBkZWZhdWx0cy5cbiAgICAgIHJldHVybiByZXNldFRvRGVmYXVsdHMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbmRvd1N0YXRlO1xuICB9O1xuXG4gIGNvbnN0IHNhdmVTdGF0ZSA9ICgpID0+IHtcbiAgICBpZiAoIXdpbi5pc01pbmltaXplZCgpICYmICF3aW4uaXNNYXhpbWl6ZWQoKSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihzdGF0ZSwgZ2V0Q3VycmVudFBvc2l0aW9uKCkpO1xuICAgIH1cbiAgICBzdG9yZS5zZXQoa2V5LCBzdGF0ZSk7XG4gIH07XG5cbiAgc3RhdGUgPSBlbnN1cmVWaXNpYmxlT25Tb21lRGlzcGxheShyZXN0b3JlKCkpO1xuXG4gIGNvbnN0IHdpbiA9IG5ldyBCcm93c2VyV2luZG93KHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5vcHRpb25zLFxuICAgIHdlYlByZWZlcmVuY2VzOiB7XG4gICAgICBub2RlSW50ZWdyYXRpb246IGZhbHNlLFxuICAgICAgY29udGV4dElzb2xhdGlvbjogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMud2ViUHJlZmVyZW5jZXMsXG4gICAgfSxcbiAgfSk7XG5cbiAgd2luLm9uKFwiY2xvc2VcIiwgc2F2ZVN0YXRlKTtcblxuICByZXR1cm4gd2luO1xufTtcbiIsIi8vIGhhbmRsZXJzLnRzXG5pbXBvcnQgeyBpcGNNYWluLCBJcGNNYWluRXZlbnQgfSBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCB7XG4gIGNyZWF0ZVByb2plY3QsXG4gIGxvYWRQcm9qZWN0LFxuICBkZWxldGVBbmltYWwsXG4gIGRlbGV0ZVByb2plY3QsXG4gIHNlbGVjdERpcmVjdG9yeSxcbiAgZ2V0QW5pbWFsRGF0YURpcmVjdG9yeSxcbiAgZGVsZXRlQW5pbWFsRGF0YURpcmVjdG9yeSxcbiAgZGVsZXRlRmlsZSxcbiAgZ2V0QW5pbWFsRGF0YSxcbiAgaW1wb3J0UHJvamVjdCxcbiAgZXhwb3J0UHJvamVjdCxcbiAgZ2V0UHJvamVjdHMsXG4gIHVwbG9hZEZpbGUsXG4gIGFkZEFuaW1hbCxcbn0gZnJvbSBcIi4vcHJvamVjdHMtdG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hbE1ldGFkYXRhIH0gZnJvbSBcIi4uL2NvbW1vbi90eXBlc1wiO1xuaW1wb3J0IHsgUHl0aG9uU2hlbGwsIFB5dGhvblNoZWxsRXJyb3IsIE9wdGlvbnMgfSBmcm9tIFwicHl0aG9uLXNoZWxsXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IG9zIGZyb20gXCJvc1wiO1xuaW50ZXJmYWNlIFB5dGhvblNjcmlwdE9wdGlvbnMge1xuICBzY3JpcHROYW1lOiBzdHJpbmc7XG4gIGFyZ3M6IHN0cmluZ1tdO1xuICByZXN1bHRFdmVudDogc3RyaW5nO1xuICBraWxsRXZlbnQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcnVuUHl0aG9uU2NyaXB0KFxuICBldmVudDogSXBjTWFpbkV2ZW50LFxuICBvcHRpb25zOiBQeXRob25TY3JpcHRPcHRpb25zLFxuICBweVNjcmlwdHNQYXRoOiBzdHJpbmdcbikge1xuICBjb25zdCB7IHNjcmlwdE5hbWUsIGFyZ3MsIHJlc3VsdEV2ZW50LCBraWxsRXZlbnQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGVudlB5dGhvblBhdGggPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCBcIi5iZWxsamFyXCIsIFwiYmVudlwiKTtcbiAgY29uc3QgcGxhdGZvcm0gPSBvcy5wbGF0Zm9ybSgpO1xuICBjb25zdCBweUNvbW1hbmQgPVxuICAgIHBsYXRmb3JtID09PSBcIndpbjMyXCJcbiAgICAgID8gYCR7ZW52UHl0aG9uUGF0aH0vU2NyaXB0cy9weXRob25gXG4gICAgICA6IGAke2VudlB5dGhvblBhdGh9L2Jpbi9weXRob25gO1xuXG4gIGNvbnN0IHNjcmlwdE9wdGlvbnM6IE9wdGlvbnMgPSB7XG4gICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgcHl0aG9uUGF0aDogcHlDb21tYW5kLFxuICAgIHNjcmlwdFBhdGg6IHB5U2NyaXB0c1BhdGgsXG4gICAgYXJncyxcbiAgfTtcblxuICBjb25zdCBweXNoZWxsID0gbmV3IFB5dGhvblNoZWxsKHNjcmlwdE5hbWUsIHNjcmlwdE9wdGlvbnMpO1xuICBsZXQgdG90YWwgPSAwO1xuICBsZXQgY3VycmVudCA9IDA7XG5cbiAgcHlzaGVsbC5vbihcInN0ZGVyclwiLCAoc3RkZXJyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKHN0ZGVycik7XG4gIH0pO1xuXG4gIHB5c2hlbGwub24oXCJtZXNzYWdlXCIsIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAodG90YWwgPT09IDApIHtcbiAgICAgIHRvdGFsID0gTnVtYmVyKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PT0gXCJEb25lIVwiKSB7XG4gICAgICBweXNoZWxsLmVuZCgoZXJyOiBQeXRob25TaGVsbEVycm9yLCBjb2RlOiBudW1iZXIsIHNpZ25hbDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHRocm93IGVycjtcbiAgICAgICAgZXZlbnQuc2VuZGVyLnNlbmQocmVzdWx0RXZlbnQpO1xuICAgICAgICBpcGNNYWluLnJlbW92ZUFsbExpc3RlbmVycyhraWxsRXZlbnQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnQrKztcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKFwidXBkYXRlTG9hZFwiLCBbXG4gICAgICAgIE1hdGgucm91bmQoKGN1cnJlbnQgLyB0b3RhbCkgKiAxMDApLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgXSk7XG4gICAgfVxuICB9KTtcblxuICBpcGNNYWluLm9uY2Uoa2lsbEV2ZW50LCAoKSA9PiB7XG4gICAgcHlzaGVsbC5raWxsKCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldHMgdXAgZXZlbnQgaGFuZGxlcnMgZm9yIHZhcmlvdXMgSVBDIGV2ZW50cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHlTY3JpcHRzUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBQeXRob24gc2NyaXB0cy5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cEhhbmRsZXJzKHB5U2NyaXB0c1BhdGg6IHN0cmluZykge1xuICBjb25zdCBob21lRGlyID0gb3MuaG9tZWRpcigpO1xuICBjb25zdCBpc1Byb2QgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCI7XG4gIGNvbnN0IHJlc291cmNlRGlyID0gaXNQcm9kXG4gICAgPyBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCBcInB5XCIpXG4gICAgOiBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL3B5XCIpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciB0aGUgXCJjcmVhdGUtcHJvamVjdFwiIGV2ZW50LlxuICAgKiBDcmVhdGVzIGEgbmV3IEJlbGwgamFyIHByb2plY3QuXG4gICAqIEBwYXJhbSB7RWxlY3Ryb24uSXBjTWFpbkludm9rZUV2ZW50fSBfZXZlbnQgLSBUaGUgZXZlbnQgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBuZXcgcHJvamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgcHJvamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nOyB9Pn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBvYmplY3QgaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUuXG4gICAqL1xuICBpcGNNYWluLmhhbmRsZShcbiAgICBcImNyZWF0ZS1wcm9qZWN0XCIsXG4gICAgYXN5bmMgKF9ldmVudCwgbmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjcmVhdGVQcm9qZWN0KG5hbWUsIGRlc2NyaXB0aW9uKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciB0aGUgXCJpbXBvcnQtcHJvamVjdFwiIGV2ZW50LlxuICAgKiAgSW1wb3J0cyBhIEJlbGwgamFyIHByb2plY3QuXG4gICAqIEBwYXJhbSB7RWxlY3Ryb24uSXBjTWFpbkludm9rZUV2ZW50fSBfZXZlbnQgLSBUaGUgZXZlbnQgb2JqZWN0LlxuICAgKlxuICAgKi9cbiAgaXBjTWFpbi5oYW5kbGUoXCJpbXBvcnQtcHJvamVjdFwiLCBhc3luYyAoX2V2ZW50KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGltcG9ydFByb2plY3QoKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgdGhlIFwiZXhwb3J0LXByb2plY3RcIiBldmVudC5cbiAgICogRXhwb3J0cyBhIHByb2plY3QgYnkgbmFtZS5cbiAgICogQHBhcmFtIHtFbGVjdHJvbi5JcGNNYWluSW52b2tlRXZlbnR9IF9ldmVudCAtIFRoZSBldmVudCBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QgdG8gZXhwb3J0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmc7IH0+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAgICovXG4gIGlwY01haW4uaGFuZGxlKFwiZXhwb3J0LXByb2plY3RcIiwgYXN5bmMgKF9ldmVudCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGV4cG9ydFByb2plY3QobmFtZSkudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciB0aGUgXCJsb2FkLXByb2plY3RcIiBldmVudC5cbiAgICogTG9hZHMgYSBwcm9qZWN0IGJ5IG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7RWxlY3Ryb24uSXBjTWFpbkludm9rZUV2ZW50fSBfZXZlbnQgLSBUaGUgZXZlbnQgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IHRvIGxvYWQuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgcHJvamVjdD86IFByb2plY3RNZXRhZGF0YTsgfT59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHByb2plY3Qgb2JqZWN0LlxuICAgKi9cbiAgaXBjTWFpbi5oYW5kbGUoXCJsb2FkLXByb2plY3RcIiwgYXN5bmMgKF9ldmVudCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2plY3QgPSBsb2FkUHJvamVjdChuYW1lKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHByb2plY3QgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgdGhlIFwiZGVsZXRlLXByb2plY3RcIiBldmVudC5cbiAgICogRGVsZXRlcyBhIHByb2plY3QgYnkgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHtFbGVjdHJvbi5JcGNNYWluSW52b2tlRXZlbnR9IF9ldmVudCAtIFRoZSBldmVudCBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QgdG8gZGVsZXRlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmc7IH0+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgYWxvbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgaXBjTWFpbi5oYW5kbGUoXCJkZWxldGUtcHJvamVjdFwiLCBhc3luYyAoX2V2ZW50LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgZGVsZXRlUHJvamVjdChuYW1lKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgdXBsb2FkaW5nIGZpbGVzIHRvIGEgcHJvamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtJcGNNYWluRXZlbnR9IF9ldmVudCAtIFRoZSBJUEMgZXZlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9qZWN0TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW5pbWFsTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhbmltYWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhVHlwZSAtIFRoZSB0eXBlIG9mIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGZpbGVQYXRocyAtIFRoZSBwYXRocyBvZiB0aGUgZmlsZXMgdG8gdXBsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW4sIGVycm9yPzogc3RyaW5nIH0+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAgICovXG4gIGlwY01haW4uaGFuZGxlKFxuICAgIFwidXBsb2FkLWZpbGVzXCIsXG4gICAgYXN5bmMgKFxuICAgICAgX2V2ZW50LFxuICAgICAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgICAgIGFuaW1hbE5hbWU6IHN0cmluZyxcbiAgICAgIGRhdGFUeXBlOiBzdHJpbmcsXG4gICAgICBmaWxlUGF0aHM6IFtzdHJpbmddXG4gICAgKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB1cGxvYWRGaWxlKHByb2plY3ROYW1lLCBhbmltYWxOYW1lLCBkYXRhVHlwZSwgZmlsZVBhdGhzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciBnZXR0aW5nIGFuaW1hbCBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge0lwY01haW5FdmVudH0gX2V2ZW50IC0gVGhlIElQQyBldmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbmltYWxOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGFuaW1hbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8eyBzdWNjZXNzOiBib29sZWFuLCBkYXRhPzogQW5pbWFsRGF0YSwgZXJyb3I/OiBzdHJpbmcgfT59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIGFuaW1hbCBkYXRhIG9iamVjdC5cbiAgICovXG4gIGlwY01haW4uaGFuZGxlKFxuICAgIFwiZ2V0LWFuaW1hbC1kYXRhXCIsXG4gICAgYXN5bmMgKF9ldmVudCwgcHJvamVjdE5hbWU6IHN0cmluZywgYW5pbWFsTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhbmltYWxEYXRhID0gZ2V0QW5pbWFsRGF0YShwcm9qZWN0TmFtZSwgYW5pbWFsTmFtZSk7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IGFuaW1hbERhdGEgfTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IubWVzc2FnZSB9O1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgZGVsZXRpbmcgYW4gYW5pbWFsLlxuICAgKlxuICAgKiBAcGFyYW0ge0lwY01haW5FdmVudH0gX2V2ZW50IC0gVGhlIElQQyBldmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbmltYWxOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGFuaW1hbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8eyBzdWNjZXNzOiBib29sZWFuLCBlcnJvcj86IHN0cmluZyB9Pn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBvYmplY3QgaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUuXG4gICAqL1xuICBpcGNNYWluLmhhbmRsZShcbiAgICBcImRlbGV0ZS1hbmltYWxcIixcbiAgICBhc3luYyAoX2V2ZW50LCBwcm9qZWN0TmFtZTogc3RyaW5nLCBhbmltYWxOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlbGV0ZUFuaW1hbChwcm9qZWN0TmFtZSwgYW5pbWFsTmFtZSk7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IubWVzc2FnZSB9O1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgZGVsZXRpbmcgYSBmaWxlLlxuICAgKiBAcGFyYW0ge0lwY01haW5FdmVudH0gX2V2ZW50IC0gVGhlIElQQyBldmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbmltYWxOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGFuaW1hbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFUeXBlIC0gVGhlIHR5cGUgb2YgZGF0YS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVQYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZGVsZXRlLlxuICAgKi9cbiAgaXBjTWFpbi5oYW5kbGUoXG4gICAgXCJkZWxldGUtZmlsZVwiLFxuICAgIGFzeW5jIChcbiAgICAgIF9ldmVudCxcbiAgICAgIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gICAgICBhbmltYWxOYW1lOiBzdHJpbmcsXG4gICAgICBkYXRhVHlwZTogc3RyaW5nLFxuICAgICAgZmlsZU5hbWU6IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGVsZXRlRmlsZShwcm9qZWN0TmFtZSwgYW5pbWFsTmFtZSwgZGF0YVR5cGUsIGZpbGVOYW1lKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciBhZGRpbmcgYW4gYW5pbWFsLlxuICAgKiBAcGFyYW0ge0lwY01haW5FdmVudH0gX2V2ZW50IC0gVGhlIElQQyBldmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb2plY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbmltYWxOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGFuaW1hbC5cbiAgICogQHBhcmFtIHtBbmltYWxNZXRhZGF0YX0gYW5pbWFsRGF0YSAtIFRoZSBtZXRhZGF0YSBvZiB0aGUgYW5pbWFsLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW4sIGVycm9yPzogc3RyaW5nIH0+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAgICovXG4gIGlwY01haW4uaGFuZGxlKFxuICAgIFwiYWRkLWFuaW1hbFwiLFxuICAgIGFzeW5jIChcbiAgICAgIF9ldmVudCxcbiAgICAgIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gICAgICBhbmltYWxOYW1lOiBzdHJpbmcsXG4gICAgICBhbmltYWxEYXRhOiBBbmltYWxNZXRhZGF0YVxuICAgICkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWRkQW5pbWFsKHByb2plY3ROYW1lLCBhbmltYWxOYW1lLCBhbmltYWxEYXRhKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciBnZXR0aW5nIHByb2plY3QgZGF0YS5cbiAgICogQHBhcmFtIHtJcGNNYWluRXZlbnR9IF9ldmVudCAtIFRoZSBJUEMgZXZlbnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbiwgcHJvamVjdHM/OiBQcm9qZWN0RGF0YSwgZXJyb3I/OiBzdHJpbmcgfT59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHByb2plY3QgZGF0YSBvYmplY3QuXG4gICAqL1xuICBpcGNNYWluLmhhbmRsZShcImdldC1wcm9qZWN0c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2plY3RzID0gZ2V0UHJvamVjdHMoKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHByb2plY3RzOiBwcm9qZWN0cyB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH0pO1xuXG4gIGlwY01haW4uaGFuZGxlKFxuICAgIFwiZ2V0LWFuaW1hbC1kYXRhLWRpcmVjdG9yeVwiLFxuICAgIGFzeW5jIChcbiAgICAgIF9ldmVudDogSXBjTWFpbkV2ZW50LFxuICAgICAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgICAgIGFuaW1hbE5hbWU6IHN0cmluZyxcbiAgICAgIGRhdGFUeXBlOiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEdldHMgYSBzeW1saW5rZWQgdGVtcCBkaXIgdG8gdGhlIGFuaW1hbCBiYWNrZ3JvdW5kIGRhdGFcbiAgICAgICAgY29uc3QgdGVtcERpciA9IGF3YWl0IGdldEFuaW1hbERhdGFEaXJlY3RvcnkoXG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgYW5pbWFsTmFtZSxcbiAgICAgICAgICBkYXRhVHlwZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkaXJlY3Rvcnk6IHRlbXBEaXIgfTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IubWVzc2FnZSB9O1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBpcGNNYWluLmhhbmRsZShcbiAgICBcImRlbGV0ZS1hbmltYWwtZGF0YS1kaXJlY3RvcnlcIixcbiAgICBhc3luYyAoXG4gICAgICBldmVudDogSXBjTWFpbkV2ZW50LFxuICAgICAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgICAgIGFuaW1hbE5hbWU6IHN0cmluZyxcbiAgICAgIGRpcmVjdG9yeTogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBkZWxldGVBbmltYWxEYXRhRGlyZWN0b3J5KHByb2plY3ROYW1lLCBhbmltYWxOYW1lLCBkaXJlY3RvcnkpO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgaXBjTWFpbi5oYW5kbGUoXCJnZXQtZGlyZWN0b3J5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZERpcmVjdG9yeSA9IHNlbGVjdERpcmVjdG9yeSgpO1xuICAgIGlmICghc2VsZWN0ZWREaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogXCJObyBkaXJlY3Rvcnkgc2VsZWN0ZWRcIiB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkaXJlY3Rvcnk6IHNlbGVjdGVkRGlyZWN0b3J5IH07XG4gIH0pO1xuXG4gIGlwY01haW4ub24oXCJydW5NYXhcIiwgKGV2ZW50OiBJcGNNYWluRXZlbnQsIGRhdGE6IGFueVtdKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIGAtbyAke2RhdGFbMV19YCxcbiAgICAgIGAtaSAke2RhdGFbMF19YCxcbiAgICAgIGAtZCAke2RhdGFbMl19YCxcbiAgICAgIGAtdCAke2RhdGFbM119YCxcbiAgICAgIFwiLWcgRmFsc2VcIixcbiAgICBdO1xuXG4gICAgcnVuUHl0aG9uU2NyaXB0KFxuICAgICAgZXZlbnQsXG4gICAgICB7XG4gICAgICAgIHNjcmlwdE5hbWU6IFwibWF4LnB5XCIsXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIHJlc3VsdEV2ZW50OiBcIm1heFJlc3VsdFwiLFxuICAgICAgICBraWxsRXZlbnQ6IFwia2lsbE1heFwiLFxuICAgICAgfSxcbiAgICAgIHB5U2NyaXB0c1BhdGhcbiAgICApO1xuICB9KTtcblxuICBpcGNNYWluLm9uKFwicnVuQWRqdXN0XCIsIChldmVudDogSXBjTWFpbkV2ZW50LCBkYXRhOiBhbnlbXSkgPT4ge1xuICAgIGNvbnN0IHN0cnVjdFBhdGggPSBwYXRoLmpvaW4ocmVzb3VyY2VEaXIsIFwiY3N2L3N0cnVjdHVyZV9tYXAucGtsXCIpO1xuICAgIGNvbnN0IGFyZ3MgPSBbYC1pICR7ZGF0YVswXX1gLCBgLXMgJHtzdHJ1Y3RQYXRofWAsIGAtYSAke2RhdGFbMV19YF07XG5cbiAgICBydW5QeXRob25TY3JpcHQoXG4gICAgICBldmVudCxcbiAgICAgIHtcbiAgICAgICAgc2NyaXB0TmFtZTogXCJhZGp1c3QucHlcIixcbiAgICAgICAgYXJncyxcbiAgICAgICAgcmVzdWx0RXZlbnQ6IFwiYWRqdXN0UmVzdWx0XCIsXG4gICAgICAgIGtpbGxFdmVudDogXCJraWxsQWRqdXN0XCIsXG4gICAgICB9LFxuICAgICAgcHlTY3JpcHRzUGF0aFxuICAgICk7XG4gIH0pO1xuXG4gIGlwY01haW4uaGFuZGxlKFwicnVuQWxpZ25cIiwgKGV2ZW50OiBJcGNNYWluRXZlbnQsIGRhdGE6IGFueVtdKSA9PiB7XG4gICAgY29uc3QgbW9kZWxQYXRoID0gcGF0aC5qb2luKGhvbWVEaXIsIFwiLmJlbGxqYXJcIiwgXCJtb2RlbHMvcHJlZGljdG9yLnB0XCIpO1xuICAgIGNvbnN0IG5ycmRQYXRoID0gcGF0aC5qb2luKGhvbWVEaXIsIFwiLmJlbGxqYXJcIiwgXCJucnJkXCIpO1xuICAgIGNvbnN0IG1hcFBhdGggPSBwYXRoLmpvaW4ocmVzb3VyY2VEaXIsIFwiY3N2L3N0cnVjdHVyZV9tYXAucGtsXCIpO1xuICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICBgLW8gJHtkYXRhWzFdfWAsXG4gICAgICBgLWkgJHtkYXRhWzBdfWAsXG4gICAgICBgLXcgJHtkYXRhWzJdfWAsXG4gICAgICBgLWEgJHtkYXRhWzNdfWAsXG4gICAgICBgLW0gJHttb2RlbFBhdGh9YCxcbiAgICAgIGAtbiAke25ycmRQYXRofWAsXG4gICAgICBgLWMgJHttYXBQYXRofWAsXG4gICAgICBgLWwgJHtkYXRhWzRdfWAsXG4gICAgXTtcblxuICAgIHJ1blB5dGhvblNjcmlwdChcbiAgICAgIGV2ZW50LFxuICAgICAge1xuICAgICAgICBzY3JpcHROYW1lOiBcIm1hcC5weVwiLFxuICAgICAgICBhcmdzLFxuICAgICAgICByZXN1bHRFdmVudDogXCJhbGlnblJlc3VsdFwiLFxuICAgICAgICBraWxsRXZlbnQ6IFwia2lsbEFsaWduXCIsXG4gICAgICB9LFxuICAgICAgcHlTY3JpcHRzUGF0aFxuICAgICk7XG4gIH0pO1xuXG4gIGlwY01haW4ub24oXCJydW5JbnRlbnNpdHlcIiwgKGV2ZW50OiBJcGNNYWluRXZlbnQsIGRhdGE6IGFueVtdKSA9PiB7XG4gICAgY29uc3Qgc3RydWN0UGF0aCA9IHBhdGguam9pbihyZXNvdXJjZURpciwgXCJjc3Yvc3RydWN0dXJlX21hcC5wa2xcIik7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIGAtaSAke2RhdGFbMF19YCxcbiAgICAgIGAtbyAke2RhdGFbMV19YCxcbiAgICAgIGAtYSAke2RhdGFbMl19YCxcbiAgICAgIGAtdyAke2RhdGFbM119YCxcbiAgICAgIGAtbSAke3N0cnVjdFBhdGh9YCxcbiAgICBdO1xuXG4gICAgcnVuUHl0aG9uU2NyaXB0KFxuICAgICAgZXZlbnQsXG4gICAgICB7XG4gICAgICAgIHNjcmlwdE5hbWU6IFwicmVnaW9uLnB5XCIsXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIHJlc3VsdEV2ZW50OiBcImludGVuc2l0eVJlc3VsdFwiLFxuICAgICAgICBraWxsRXZlbnQ6IFwia2lsbEludGVuc2l0eVwiLFxuICAgICAgfSxcbiAgICAgIHB5U2NyaXB0c1BhdGhcbiAgICApO1xuICB9KTtcblxuICBpcGNNYWluLm9uKFwicnVuQ291bnRcIiwgKGV2ZW50OiBJcGNNYWluRXZlbnQsIGRhdGE6IGFueVtdKSA9PiB7XG4gICAgY29uc3Qgc3RydWN0UGF0aCA9IHBhdGguam9pbihyZXNvdXJjZURpciwgXCJjc3Yvc3RydWN0dXJlX21hcC5wa2xcIik7XG4gICAgY29uc3QgY3VzdG9tQXJncyA9IFtcbiAgICAgIGAtcCAke2RhdGFbMF19YCxcbiAgICAgIGAtYSAke2RhdGFbMV19YCxcbiAgICAgIGAtbyAke2RhdGFbMl19YCxcbiAgICAgIGAtbSAke3N0cnVjdFBhdGh9YCxcbiAgICBdO1xuICAgIGlmIChkYXRhWzNdKSB7XG4gICAgICBjdXN0b21BcmdzLnB1c2goYC0tbGF5ZXJzYCk7XG4gICAgfVxuXG4gICAgcnVuUHl0aG9uU2NyaXB0KFxuICAgICAgZXZlbnQsXG4gICAgICB7XG4gICAgICAgIHNjcmlwdE5hbWU6IFwiY291bnQucHlcIixcbiAgICAgICAgYXJnczogY3VzdG9tQXJncyxcbiAgICAgICAgcmVzdWx0RXZlbnQ6IFwiY291bnRSZXN1bHRcIixcbiAgICAgICAga2lsbEV2ZW50OiBcImtpbGxDb3VudFwiLFxuICAgICAgfSxcbiAgICAgIHB5U2NyaXB0c1BhdGhcbiAgICApO1xuICB9KTtcblxuICBpcGNNYWluLm9uKFwicnVuQ29sbGF0ZVwiLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGF0YTogYW55W10pID0+IHtcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgYC1vICR7ZGF0YVsxXX1gLFxuICAgICAgYC1pICR7ZGF0YVswXX1gLFxuICAgICAgYC1yICR7ZGF0YVsyXX1gLFxuICAgICAgYC1zICR7cGF0aC5qb2luKHJlc291cmNlRGlyLCBcImNzdi9zdHJ1Y3R1cmVfbWFwLnBrbFwiKX1gLFxuICAgICAgXCItZyBGYWxzZVwiLFxuICAgIF07XG5cbiAgICBydW5QeXRob25TY3JpcHQoXG4gICAgICBldmVudCxcbiAgICAgIHtcbiAgICAgICAgc2NyaXB0TmFtZTogXCJjb2xsYXRlLnB5XCIsXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIHJlc3VsdEV2ZW50OiBcImNvbGxhdGVSZXN1bHRcIixcbiAgICAgICAga2lsbEV2ZW50OiBcImtpbGxDb2xsYXRlXCIsXG4gICAgICB9LFxuICAgICAgcHlTY3JpcHRzUGF0aFxuICAgICk7XG4gIH0pO1xuXG4gIGlwY01haW4ub24oXCJydW5TaGFycGVuXCIsIChldmVudDogSXBjTWFpbkV2ZW50LCBkYXRhOiBhbnlbXSkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUFyZ3MgPSBbXG4gICAgICBgLW8gJHtkYXRhWzFdfWAsXG4gICAgICBgLWkgJHtkYXRhWzBdfWAsXG4gICAgICBgLXIgJHtkYXRhWzJdfWAsXG4gICAgICBgLWEgJHtkYXRhWzNdfWAsXG4gICAgXTtcbiAgICBpZiAoZGF0YVs0XSkge1xuICAgICAgY3VzdG9tQXJncy5wdXNoKGAtLWVxdWFsaXplYCk7XG4gICAgfVxuXG4gICAgcnVuUHl0aG9uU2NyaXB0KFxuICAgICAgZXZlbnQsXG4gICAgICB7XG4gICAgICAgIHNjcmlwdE5hbWU6IFwic2hhcnBlbi5weVwiLFxuICAgICAgICBhcmdzOiBjdXN0b21BcmdzLFxuICAgICAgICByZXN1bHRFdmVudDogXCJzaGFycGVuUmVzdWx0XCIsXG4gICAgICAgIGtpbGxFdmVudDogXCJraWxsU2hhcnBlblwiLFxuICAgICAgfSxcbiAgICAgIHB5U2NyaXB0c1BhdGhcbiAgICApO1xuICB9KTtcblxuICBpcGNNYWluLm9uKFwicnVuRGV0ZWN0aW9uXCIsIChldmVudDogSXBjTWFpbkV2ZW50LCBkYXRhOiBhbnlbXSkgPT4ge1xuICAgIGNvbnN0IG1vZGVsczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIHNvbWF0YTogXCJtb2RlbHMvY2hhb3NkcnVpZC5wdFwiLFxuICAgICAgbnVjbGVpOiBcIm1vZGVscy9hbmtvdS5wdFwiLFxuICAgIH07XG5cbiAgICBsZXQgbW9kZWxQYXRoID0gcGF0aC5qb2luKGhvbWVEaXIsIG1vZGVsc1tkYXRhWzZdXSk7XG4gICAgaWYgKGRhdGFbNF0ubGVuZ3RoID4gMCkge1xuICAgICAgbW9kZWxQYXRoID0gZGF0YVs0XTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b21BcmdzID0gW1xuICAgICAgYC1pICR7ZGF0YVswXX1gLFxuICAgICAgYC1vICR7ZGF0YVsxXX1gLFxuICAgICAgYC1jICR7ZGF0YVsyXX1gLFxuICAgICAgYC10ICR7ZGF0YVszXX1gLFxuICAgICAgYC1hICR7ZGF0YVs3XX1gLFxuICAgICAgYC1tICR7bW9kZWxQYXRofWAsXG4gICAgXTtcbiAgICBpZiAoZGF0YVs1XSkge1xuICAgICAgY3VzdG9tQXJncy5wdXNoKGAtLW11bHRpY2hhbm5lbGApO1xuICAgIH1cblxuICAgIHJ1blB5dGhvblNjcmlwdChcbiAgICAgIGV2ZW50LFxuICAgICAge1xuICAgICAgICBzY3JpcHROYW1lOiBcImZpbmRfbmV1cm9ucy5weVwiLFxuICAgICAgICBhcmdzOiBjdXN0b21BcmdzLFxuICAgICAgICByZXN1bHRFdmVudDogXCJkZXRlY3RSZXN1bHRcIixcbiAgICAgICAga2lsbEV2ZW50OiBcImtpbGxEZXRlY3RcIixcbiAgICAgIH0sXG4gICAgICBweVNjcmlwdHNQYXRoXG4gICAgKTtcbiAgfSk7XG59XG4iLCJleHBvcnQgKiBmcm9tIFwiLi9jcmVhdGUtd2luZG93XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wZXJmb3JtLXNldHVwXCI7XG4iLCJpbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgQnJvd3NlcldpbmRvdywgaXBjTWFpbiB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgZXh0cmFjdCwgciB9IGZyb20gXCJ0YXJcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCB7IFB5dGhvblNoZWxsLCBPcHRpb25zIH0gZnJvbSBcInB5dGhvbi1zaGVsbFwiO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG4vLyBVc2VyIGZvbGRlclxuY29uc3QgaG9tZUZvbGRlciA9IG9zLmhvbWVkaXIoKTtcbi8vIEJlbGwgSmFyIGZvbGRlclxuY29uc3QgYmVsbGphckZvbGRlciA9IGAke2hvbWVGb2xkZXJ9Ly5iZWxsamFyYDtcbi8vIEdvb2dsZSBDbG91ZCBTdG9yYWdlIGJ1Y2tldFxuY29uc3QgYnVja2V0ID0gXCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYmVsbGphcl91cGRhdGVzXCI7XG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgb2JqZWN0IHBhdGhcbmNvbnN0IG9iamVjdFBhdGggPSAoaXRlbTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpID0+XG4gIGAke2J1Y2tldH0vJHtpdGVtfS0ke3ZlcnNpb259LnRhci5nemA7XG4vLyBNYW5pZmVzdCBmaWxlXG5cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkRmlsZShcbiAgdXJsOiBzdHJpbmcsXG4gIHBhdGg6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlID0gYXdhaXQgYXhpb3Moe1xuICAgIHVybCxcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgcmVzcG9uc2VUeXBlOiBcInN0cmVhbVwiLFxuICB9KTtcblxuICBjb25zdCB0b3RhbExlbmd0aDogbnVtYmVyID0gcGFyc2VJbnQocmVzcG9uc2UuaGVhZGVyc1tcImNvbnRlbnQtbGVuZ3RoXCJdLCAxMCk7XG4gIGxldCBkb3dubG9hZGVkTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0IHdyaXRlciA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGAke3BhdGh9LyR7ZmlsZW5hbWV9YCk7XG5cbiAgcmVzcG9uc2UuZGF0YS5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICBkb3dubG9hZGVkTGVuZ3RoICs9IGNodW5rLmxlbmd0aDtcbiAgICBjb25zdCBwcm9ncmVzcyA9IChkb3dubG9hZGVkTGVuZ3RoIC8gdG90YWxMZW5ndGgpICogMTAwO1xuICAgIGlwY01haW4uZW1pdChcImRvd25sb2FkLXByb2dyZXNzXCIsIHByb2dyZXNzKTtcbiAgfSk7XG5cbiAgcmVzcG9uc2UuZGF0YS5waXBlKHdyaXRlcik7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB3cml0ZXIub24oXCJmaW5pc2hcIiwgcmVzb2x2ZSk7XG4gICAgd3JpdGVyLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgfSk7XG59XG5cbmNvbnN0IE1BTklGRVNUID0ge1xuICBtb2RlbHM6IFwidjk1MlwiLFxuICBucnJkOiBcInY5MVwiLFxufTtcblxuZnVuY3Rpb24gY2hlY2tNYW5pZmVzdChkaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgbWFuaWZlc3RQYXRoID0gYCR7ZGlyZWN0b3J5UGF0aH0vbWFuaWZlc3QuanNvbmA7XG5cbiAgICAvLyBjaGVjayBpZiBtYW51ZmVzdCBmaWxlIGV4aXN0c1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgICAvLyBJZiBub3QsIGFsbCBmaWxlcyBhcmUgb3V0ZGF0ZWQsIGFuZCBjcmVhdGUgdGhlIG1hbmlmZXN0IGZpbGVcbiAgICAgIGZzLndyaXRlRmlsZShtYW5pZmVzdFBhdGgsIEpTT04uc3RyaW5naWZ5KE1BTklGRVNUKSwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3cml0aW5nIG1hbmlmZXN0IGZpbGU6XCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXNvbHZlKE9iamVjdC5rZXlzKE1BTklGRVNUKSk7XG4gICAgfVxuXG4gICAgZnMucmVhZEZpbGUobWFuaWZlc3RQYXRoLCBcInV0ZjhcIiwgKGVycm9yLCBkYXRhKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgLy8gSGFuZGxlIGVycm9yIHJlYWRpbmcgbWFuaWZlc3QgZmlsZVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVhZGluZyBtYW5pZmVzdCBmaWxlOlwiLCBlcnJvcik7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hbmlmZXN0RGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICBjb25zdCBvdXRkYXRlZEl0ZW1zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBPYmplY3Qua2V5cyhNQU5JRkVTVCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gTUFOSUZFU1RbaXRlbV07XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYCR7ZGlyZWN0b3J5UGF0aH0vJHtpdGVtfWApKSB7XG4gICAgICAgICAgb3V0ZGF0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdmVyc2lvbiBpcyBvdXRkYXRlZFxuICAgICAgICBpZiAobWFuaWZlc3REYXRhW2l0ZW1dICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgICAgb3V0ZGF0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gb3ZlcndyaXRlIG1hbmlmZXN0IGZpbGVcbiAgICAgIGZzLndyaXRlRmlsZShtYW5pZmVzdFBhdGgsIEpTT04uc3RyaW5naWZ5KE1BTklGRVNUKSwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3cml0aW5nIG1hbmlmZXN0IGZpbGU6XCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXNvbHZlKG91dGRhdGVkSXRlbXMpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRGcm9tTWFuaWZlc3QoZGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0ZGF0ZWRJdGVtcyA9IGF3YWl0IGNoZWNrTWFuaWZlc3QoZGlyZWN0b3J5UGF0aCk7XG5cbiAgICBjb25zdCBkb3dubG9hZFByb21pc2VzID0gb3V0ZGF0ZWRJdGVtcy5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSBNQU5JRkVTVFtpdGVtXTtcblxuICAgICAgLy8gRG93bmxvYWQgdGhlIGZpbGVcbiAgICAgIGNvbnN0IHVybCA9IG9iamVjdFBhdGgoaXRlbSwgdmVyc2lvbik7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IGAke2l0ZW19LnRhci5nemA7XG4gICAgICBhd2FpdCBkb3dubG9hZEZpbGUodXJsLCBkaXJlY3RvcnlQYXRoLCBmaWxlbmFtZSk7XG5cbiAgICAgIC8vIEV4dHJhY3QgdGhlIHRhcmJhbGxcbiAgICAgIGNvbnN0IHRhcmJhbGxQYXRoID0gYCR7ZGlyZWN0b3J5UGF0aH0vJHtmaWxlbmFtZX1gO1xuICAgICAgYXdhaXQgZXh0cmFjdFRhcmJhbGwodGFyYmFsbFBhdGgsIGRpcmVjdG9yeVBhdGgpO1xuXG4gICAgICAvLyBEZWxldGUgdGhlIHRhcmJhbGxcbiAgICAgIGF3YWl0IGRlbGV0ZUZpbGUodGFyYmFsbFBhdGgpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZG93bmxvYWRQcm9taXNlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIGRvd25sb2FkaW5nIGZyb20gbWFuaWZlc3Q6XCIsIGVycm9yKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmcy51bmxpbmsoZmlsZVBhdGgsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0VGFyYmFsbChcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGVzdGluYXRpb25QYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGV4dHJhY3Qoe1xuICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICBjd2Q6IGRlc3RpbmF0aW9uUGF0aCxcbiAgICB9KVxuICAgICAgLnRoZW4ocmVzb2x2ZSlcbiAgICAgIC5jYXRjaChyZWplY3QpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlyZWN0b3J5SW5Ib21lRm9sZGVyKFxuICBkaXJlY3RvcnlOYW1lOiBzdHJpbmcsXG4gIHN1YmRpcnM6IHN0cmluZ1tdXG4pOiB2b2lkIHtcbiAgY29uc3QgZGlyZWN0b3J5UGF0aCA9IGAke2hvbWVGb2xkZXJ9LyR7ZGlyZWN0b3J5TmFtZX1gO1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJlY3RvcnlQYXRoKSkge1xuICAgIGZzLm1rZGlyU3luYyhkaXJlY3RvcnlQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHN1YmRpcnMuZm9yRWFjaCgoc3ViZGlyKSA9PiB7XG4gICAgbGV0IGxvY2FsUGF0aCA9IGAke2RpcmVjdG9yeVBhdGh9LyR7c3ViZGlyfWA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGxvY2FsUGF0aCkpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhsb2NhbFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IHB5dGhvblZlcnNpb25zID0ge1xuICB3aW4zMjogYCR7YnVja2V0fS9jcHl0aG9uLTMuMTAuMTMlMkIyMDIzMDgyNi14ODZfNjQtcGMtd2luZG93cy1tc3ZjLXNoYXJlZC1pbnN0YWxsX29ubHkudGFyLmd6YCxcbiAgZGFyd2luOiBgJHtidWNrZXR9L2NweXRob24tMy4xMC4xMyUyQjIwMjMwODI2LXg4Nl82NC1hcHBsZS1kYXJ3aW4taW5zdGFsbF9vbmx5LnRhci5nemAsXG4gIFwiZGFyd2luLWFybTY0XCI6IGAke2J1Y2tldH0vY3B5dGhvbi0zLjEwLjEzJTJCMjAyMzA4MjYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4taW5zdGFsbF9vbmx5LnRhci5nemAsXG4gIGxpbnV4OiBgJHtidWNrZXR9L2NweXRob24tMy4xMC4xMyUyQjIwMjMwODI2LXg4Nl82NC11bmtub3duLWxpbnV4LWdudS1pbnN0YWxsX29ubHkudGFyLmd6YCxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwUHl0aG9uKFxuICB3aW5kb3c6IEJyb3dzZXJXaW5kb3csXG4gIHB5dGhvblNjcmlwdHNQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHBsYXRmb3JtID0gb3MucGxhdGZvcm0oKTtcbiAgICBjb25zdCBhcmNoaXRlY3R1cmUgPSBvcy5hcmNoKCk7XG4gICAgbGV0IHB5dGhvblZlcnNpb24gPSBweXRob25WZXJzaW9uc1twbGF0Zm9ybV07XG5cbiAgICBpZiAocGxhdGZvcm0gPT09IFwiZGFyd2luXCIgJiYgYXJjaGl0ZWN0dXJlID09PSBcImFybTY0XCIpIHtcbiAgICAgIHB5dGhvblZlcnNpb24gPSBweXRob25WZXJzaW9uc1tcImRhcndpbi1hcm02NFwiXTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBweXRob24gZm9sZGVyIGV4aXN0c1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGAke2JlbGxqYXJGb2xkZXJ9L2JlbnZgKSkge1xuICAgICAgLy8gdHJ5IGFuZCBpbnN0YWxsIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgYWxsIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWRcbiAgICAgIHdpbmRvdy53ZWJDb250ZW50cy5zZW5kKFwic2V0dXAtcHJvZ3Jlc3NcIiwgXCJVcGRhdGluZyBQeXRob24gcGFja2FnZXMuLi5cIik7XG4gICAgICBjb25zdCByZXF1aXJlbWVudHNQYXRoID0gYCR7cHl0aG9uU2NyaXB0c1BhdGh9L3JlcXVpcmVtZW50cy50eHRgO1xuICAgICAgY29uc3QgZW52UHlDb21tYW5kID1cbiAgICAgICAgcGxhdGZvcm0gPT09IFwid2luMzJcIlxuICAgICAgICAgID8gYCR7YmVsbGphckZvbGRlcn0vYmVudi9TY3JpcHRzL3B5dGhvbmBcbiAgICAgICAgICA6IGAke2JlbGxqYXJGb2xkZXJ9L2JlbnYvYmluL3B5dGhvbmA7XG4gICAgICBleGVjKGAke2VudlB5Q29tbWFuZH0gLW0gcGlwIGluc3RhbGwgLXIgJHtyZXF1aXJlbWVudHNQYXRofWAsIChlcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXM6XCIsIGVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERvd25sb2FkIFB5dGhvbiB0YXJiYWxsXG4gICAgY29uc3QgcHl0aG9uVGFyYmFsbFBhdGggPSBgJHtiZWxsamFyRm9sZGVyfS9weXRob24udGFyLmd6YDtcbiAgICBkb3dubG9hZEZpbGUocHl0aG9uVmVyc2lvbiwgYmVsbGphckZvbGRlciwgXCJweXRob24udGFyLmd6XCIpLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gRXh0cmFjdCBQeXRob24gdGFyYmFsbFxuICAgICAgd2luZG93LndlYkNvbnRlbnRzLnNlbmQoXCJzZXR1cC1wcm9ncmVzc1wiLCBcIkV4dHJhY3RpbmcgUHl0aG9uIHRhcmJhbGwuLi5cIik7XG4gICAgICBleHRyYWN0VGFyYmFsbChweXRob25UYXJiYWxsUGF0aCwgYmVsbGphckZvbGRlcikudGhlbigoKSA9PiB7XG4gICAgICAgIC8vIERlbGV0ZSBQeXRob24gdGFyYmFsbFxuICAgICAgICBkZWxldGVGaWxlKHB5dGhvblRhcmJhbGxQYXRoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB3aW5kb3cud2ViQ29udGVudHMuc2VuZChcbiAgICAgICAgICAgIFwic2V0dXAtcHJvZ3Jlc3NcIixcbiAgICAgICAgICAgIFwiQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudC4uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBDcmVhdGUgUHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnRcbiAgICAgICAgICBjb25zdCBweUNvbW1hbmQgPSBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJweXRob25cIiA6IFwicHl0aG9uM1wiO1xuICAgICAgICAgIGV4ZWMoYCR7cHlDb21tYW5kfSAtbSB2ZW52ICR7YmVsbGphckZvbGRlcn0vYmVudmAsIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgXCJFcnJvciBjcmVhdGluZyBQeXRob24gdmlydHVhbCBlbnZpcm9ubWVudDpcIixcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSW5zdGFsbCBQeXRob24gcGFja2FnZXNcbiAgICAgICAgICAgICAgd2luZG93LndlYkNvbnRlbnRzLnNlbmQoXG4gICAgICAgICAgICAgICAgXCJzZXR1cC1wcm9ncmVzc1wiLFxuICAgICAgICAgICAgICAgIFwiSW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMuLi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCByZXF1aXJlbWVudHNQYXRoID0gYCR7cHl0aG9uU2NyaXB0c1BhdGh9L3JlcXVpcmVtZW50cy50eHRgO1xuICAgICAgICAgICAgICBjb25zdCBlbnZQeUNvbW1hbmQgPVxuICAgICAgICAgICAgICAgIHBsYXRmb3JtID09PSBcIndpbjMyXCJcbiAgICAgICAgICAgICAgICAgID8gYCR7YmVsbGphckZvbGRlcn0vYmVudi9TY3JpcHRzL3B5dGhvbmBcbiAgICAgICAgICAgICAgICAgIDogYCR7YmVsbGphckZvbGRlcn0vYmVudi9iaW4vcHl0aG9uYDtcbiAgICAgICAgICAgICAgZXhlYyhcbiAgICAgICAgICAgICAgICBgJHtlbnZQeUNvbW1hbmR9IC1tIHBpcCBpbnN0YWxsIC1yICR7cmVxdWlyZW1lbnRzUGF0aH1gLFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlczpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJmb3JtU2V0dXAoXG4gIHdpbmRvdzogQnJvd3NlcldpbmRvdyxcbiAgcHl0aG9uU2NyaXB0c1BhdGg6IHN0cmluZ1xuKTogdm9pZCB7XG4gIC8vIENyZWF0ZSBCZWxsIEphciBmb2xkZXJcbiAgc2V0dXBQeXRob24od2luZG93LCBweXRob25TY3JpcHRzUGF0aCkudGhlbigoKSA9PiB7XG4gICAgZG93bmxvYWRGcm9tTWFuaWZlc3QoYmVsbGphckZvbGRlcilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgd2luZG93LndlYkNvbnRlbnRzLnNlbmQoXCJzZXR1cC1wcm9ncmVzc1wiLCBcIlNldHVwIGNvbXBsZXRlIVwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwZXJmb3JtaW5nIHNldHVwOlwiLCBlcnJvcik7XG4gICAgICB9KTtcbiAgfSk7XG59XG4iLCIvLyBwcm9qZWN0cy50c1xuXG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgUHJvamVjdE1ldGFkYXRhLCBBbmltYWxNZXRhZGF0YSB9IGZyb20gXCIuLi9jb21tb24vdHlwZXNcIjtcbmltcG9ydCB7IGRpYWxvZyB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IGFyY2hpdmVyIGZyb20gXCJhcmNoaXZlclwiO1xuaW1wb3J0IGV4dHJhY3QgZnJvbSBcImV4dHJhY3QtemlwXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmNvbnN0IGJlbGxKYXJGb2xkZXIgPSByZXF1aXJlKFwib3NcIikuaG9tZWRpcigpICsgXCIvLmJlbGxqYXJcIjtcbmNvbnN0IHByb2plY3RzUGF0aCA9IHBhdGguam9pbihiZWxsSmFyRm9sZGVyLCBcInByb2plY3RzXCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RGaWxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGFkZGVkQXQ6IHN0cmluZztcbn1cbi8vIEVuc3VyZSB0aGUgcHJvamVjdHMgZGlyZWN0b3J5IGV4aXN0c1xuaWYgKCFmcy5leGlzdHNTeW5jKHByb2plY3RzUGF0aCkpIHtcbiAgZnMubWtkaXJTeW5jKHByb2plY3RzUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9qZWN0KG5hbWU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwcm9qZWN0RGlyID0gcGF0aC5qb2luKHByb2plY3RzUGF0aCwgbmFtZSk7XG4gIGlmIChmcy5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvamVjdCBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgfVxuICBmcy5ta2RpclN5bmMocHJvamVjdERpcik7XG4gIGNvbnN0IG1ldGFkYXRhOiBQcm9qZWN0TWV0YWRhdGEgPSB7XG4gICAgbmFtZSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBsYXN0TW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBhbmltYWxzOiB7fSxcbiAgfTtcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBwYXRoLmpvaW4ocHJvamVjdERpciwgXCJtZXRhZGF0YS5qc29uXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG1ldGFkYXRhLCBudWxsLCAyKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUFzRGlhbG9nKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc3VsdCA9IGRpYWxvZy5zaG93U2F2ZURpYWxvZ1N5bmMoe1xuICAgIHRpdGxlOiBcIkV4cG9ydCBQcm9qZWN0XCIsXG4gICAgZGVmYXVsdFBhdGg6IGAke25hbWV9LnppcGAsXG4gICAgZmlsdGVyczogW3sgbmFtZTogXCJaaXAgRmlsZXNcIiwgZXh0ZW5zaW9uczogW1wiemlwXCJdIH1dLFxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5GaWxlKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzdWx0ID0gZGlhbG9nLnNob3dPcGVuRGlhbG9nU3luYyh7XG4gICAgcHJvcGVydGllczogW1wib3BlbkZpbGVcIl0sXG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3QobmFtZTogc3RyaW5nKTogUHJvamVjdE1ldGFkYXRhIHtcbiAgY29uc3QgcHJvamVjdERpciA9IHBhdGguam9pbihwcm9qZWN0c1BhdGgsIG5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuICByZXR1cm4gSlNPTi5wYXJzZShcbiAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2plY3REaXIsIFwibWV0YWRhdGEuanNvblwiKSkudG9TdHJpbmcoKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcHJvamVjdERpciA9IHBhdGguam9pbihwcm9qZWN0c1BhdGgsIG5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuICBmcy5ybVN5bmMocHJvamVjdERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0UHJvamVjdCgpOiB2b2lkIHtcbiAgY29uc3QgcmVzdWx0ID0gZGlhbG9nLnNob3dPcGVuRGlhbG9nU3luYyh7XG4gICAgdGl0bGU6IFwiSW1wb3J0IFByb2plY3RcIixcbiAgICBwcm9wZXJ0aWVzOiBbXCJvcGVuRmlsZVwiXSxcbiAgICBmaWx0ZXJzOiBbeyBuYW1lOiBcIlppcCBGaWxlc1wiLCBleHRlbnNpb25zOiBbXCJ6aXBcIl0gfV0sXG4gIH0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgY29uc3QgaW1wb3J0UGF0aCA9IHJlc3VsdFswXTtcbiAgICBjb25zdCBpbXBvcnROYW1lID0gcGF0aC5iYXNlbmFtZShpbXBvcnRQYXRoLCBcIi56aXBcIik7XG4gICAgY29uc3QgcHJvamVjdERpciA9IHBhdGguam9pbihwcm9qZWN0c1BhdGgsIGltcG9ydE5hbWUpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIH1cbiAgICAvLyBtYWtlIGRpclxuICAgIGZzLm1rZGlyU3luYyhwcm9qZWN0RGlyKTtcbiAgICBleHRyYWN0KGltcG9ydFBhdGgsIHsgZGlyOiBwcm9qZWN0RGlyIH0pO1xuICAgIC8vIGNoZWNrIGlmIG1ldGFkYXRhLmpzb24gZXhpc3RzIGlmIG5vdCB0aHJvdyBlcnJvciwgbm90IGEgdmFsaWQgcHJvamVjdFxuICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4ocHJvamVjdERpciwgXCJtZXRhZGF0YS5qc29uXCIpKSkge1xuICAgICAgZnMucm1TeW5jKHByb2plY3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcHJvamVjdFwiKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydFByb2plY3QobmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIGNvbXByZXNzIGFuZCBleHBvcnQgdGhlIHByb2plY3QgZGlyZWN0b3J5XG4gIGNvbnN0IHByb2plY3REaXIgPSBwYXRoLmpvaW4ocHJvamVjdHNQYXRoLCBuYW1lKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvamVjdCBub3QgZm91bmRcIik7XG4gIH1cbiAgY29uc3QgZXhwb3J0UGF0aCA9IHNhdmVBc0RpYWxvZyhuYW1lKTtcbiAgaWYgKCFleHBvcnRQYXRoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGV4cG9ydFBhdGgpO1xuICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoXCJ6aXBcIiwgeyB6bGliOiB7IGxldmVsOiA5IH0gfSk7XG4gIG91dHB1dC5vbihcImNsb3NlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZyhhcmNoaXZlLnBvaW50ZXIoKSArIFwiIHRvdGFsIGJ5dGVzXCIpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgXCJhcmNoaXZlciBoYXMgYmVlbiBmaW5hbGl6ZWQgYW5kIHRoZSBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yIGhhcyBjbG9zZWQuXCJcbiAgICApO1xuICB9KTtcbiAgYXJjaGl2ZS5vbihcIndhcm5pbmdcIiwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChlcnIuY29kZSA9PT0gXCJFTk9FTlRcIikge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfSk7XG4gIGFyY2hpdmUub24oXCJlcnJvclwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgdGhyb3cgZXJyO1xuICB9KTtcbiAgYXJjaGl2ZS5waXBlKG91dHB1dCk7XG4gIGFyY2hpdmUuZGlyZWN0b3J5KHByb2plY3REaXIsIGZhbHNlKTtcbiAgY29uc29sZS5sb2coYEZpbGVzIGluICR7cHJvamVjdERpcn1gLCBmcy5yZWFkZGlyU3luYyhwcm9qZWN0RGlyKSk7XG4gIGF3YWl0IGFyY2hpdmUuZmluYWxpemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZpbGUoXG4gIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gIGFuaW1hbE5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IHN0cmluZyxcbiAgZmlsZU5hbWU6IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IHByb2plY3REaXIgPSBwYXRoLmpvaW4ocHJvamVjdHNQYXRoLCBwcm9qZWN0TmFtZSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhwcm9qZWN0RGlyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlByb2plY3Qgbm90IGZvdW5kXCIpO1xuICB9XG4gIC8vIHJlbW92ZSBtZXRhXG4gIGZzLnJtU3luYyhwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSwgZGF0YVR5cGUsIGZpbGVOYW1lICsgXCIuanNvblwiKSk7XG4gIC8vIHJlbW92ZSBmaWxlXG4gIGZzLnJtU3luYyhwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSwgZGF0YVR5cGUsIGZpbGVOYW1lKSk7XG4gIC8vIFVwZGF0ZSBtZXRhZGF0YVxuICBjb25zdCBtZXRhZGF0YVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdERpciwgXCJtZXRhZGF0YS5qc29uXCIpO1xuICBjb25zdCBtZXRhZGF0YTogUHJvamVjdE1ldGFkYXRhID0gSlNPTi5wYXJzZShcbiAgICBmcy5yZWFkRmlsZVN5bmMobWV0YWRhdGFQYXRoKS50b1N0cmluZygpXG4gICk7XG4gIG1ldGFkYXRhLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgaWYgKFxuICAgIGZzLnJlYWRkaXJTeW5jKHBhdGguam9pbihwcm9qZWN0RGlyLCBhbmltYWxOYW1lLCBkYXRhVHlwZSkpLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICAvLyBTZXQgdGhlIGRhdGEgZmxhZyB0byBmYWxzZVxuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgIGNhc2UgXCJCYWNrZ3JvdW5kXCI6XG4gICAgICAgIG1ldGFkYXRhLmFuaW1hbHNbYW5pbWFsTmFtZV0uaGFzQWxpZ25tZW50RGF0YSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJTaWduYWxcIjpcbiAgICAgICAgbWV0YWRhdGEuYW5pbWFsc1thbmltYWxOYW1lXS5oYXNDZWxsRGV0ZWN0aW9uRGF0YSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgZnMud3JpdGVGaWxlU3luYyhtZXRhZGF0YVBhdGgsIEpTT04uc3RyaW5naWZ5KG1ldGFkYXRhLCBudWxsLCAyKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWRGaWxlKFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICBhbmltYWxOYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBzdHJpbmcsXG4gIGZpbGVQYXRoczogW3N0cmluZ11cbik6IHZvaWQge1xuICBjb25zdCBwcm9qZWN0RGlyID0gcGF0aC5qb2luKHByb2plY3RzUGF0aCwgcHJvamVjdE5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuICBmaWxlUGF0aHMuZm9yRWFjaCgoZmlsZVBhdGgpID0+IHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpO1xuICAgIGNvbnN0IGZpbGVNZXRhZGF0YTogUHJvamVjdEZpbGUgPSB7XG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgYWRkZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgZGF0YVR5cGVEaXIgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSwgZGF0YVR5cGUpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkYXRhVHlwZURpcikpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhkYXRhVHlwZURpcik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oZGF0YVR5cGVEaXIsIGZpbGVOYW1lICsgXCIuanNvblwiKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KGZpbGVNZXRhZGF0YSwgbnVsbCwgMilcbiAgICApO1xuICAgIC8vIE1ha2UgYSBzeW1saW5rIHRvIHRoZSBmaWxlIGZvciBhbmFseXNpc1xuICAgIGZzLnN5bWxpbmtTeW5jKGZpbGVQYXRoLCBwYXRoLmpvaW4oZGF0YVR5cGVEaXIsIGZpbGVOYW1lKSk7XG4gIH0pO1xuXG4gIC8vIFVwZGF0ZSBtZXRhZGF0YVxuICBjb25zdCBtZXRhZGF0YVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdERpciwgXCJtZXRhZGF0YS5qc29uXCIpO1xuICBjb25zdCBtZXRhZGF0YTogUHJvamVjdE1ldGFkYXRhID0gSlNPTi5wYXJzZShcbiAgICBmcy5yZWFkRmlsZVN5bmMobWV0YWRhdGFQYXRoKS50b1N0cmluZygpXG4gICk7XG4gIG1ldGFkYXRhLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgc3dpdGNoIChkYXRhVHlwZSkge1xuICAgIGNhc2UgXCJCYWNrZ3JvdW5kXCI6XG4gICAgICBtZXRhZGF0YS5hbmltYWxzW2FuaW1hbE5hbWVdLmhhc0FsaWdubWVudERhdGEgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIlNpZ25hbFwiOlxuICAgICAgbWV0YWRhdGEuYW5pbWFsc1thbmltYWxOYW1lXS5oYXNDZWxsRGV0ZWN0aW9uRGF0YSA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBmcy53cml0ZUZpbGVTeW5jKG1ldGFkYXRhUGF0aCwgSlNPTi5zdHJpbmdpZnkobWV0YWRhdGEsIG51bGwsIDIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuaW1hbERhdGEoXG4gIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gIGFuaW1hbE5hbWU6IHN0cmluZ1xuKTogQXJyYXk8e1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpbGVzOiBQcm9qZWN0RmlsZVtdO1xufT4ge1xuICBjb25zdCBwcm9qZWN0RGlyID0gcGF0aC5qb2luKHByb2plY3RzUGF0aCwgcHJvamVjdE5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuICBjb25zdCBhbmltYWxEaXIgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhhbmltYWxEaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQW5pbWFsIG5vdCBmb3VuZFwiKTtcbiAgfVxuICBjb25zdCBhbmltYWxEYXRhRmlsZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmlsZXM6IFByb2plY3RGaWxlW107XG4gIH0+ID0gW107XG4gIC8vIGdldCBhbGwgc3ViIGRpcmVjdG9yaWVzIGluIHRoZSBhbmltYWwgZGlyZWN0b3J5XG4gIGNvbnN0IGRhdGFUeXBlcyA9IGZzXG4gICAgLnJlYWRkaXJTeW5jKGFuaW1hbERpcilcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmcy5zdGF0U3luYyhwYXRoLmpvaW4oYW5pbWFsRGlyLCBmaWxlKSkuaXNEaXJlY3RvcnkoKSk7XG4gIGRhdGFUeXBlcy5mb3JFYWNoKChkYXRhVHlwZSkgPT4ge1xuICAgIGNvbnN0IGRhdGFUeXBlRGlyID0gcGF0aC5qb2luKGFuaW1hbERpciwgZGF0YVR5cGUpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkYXRhVHlwZURpcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhkYXRhVHlwZURpcik7XG4gICAgY29uc3QgYW5pbWFsRGF0YUZpbGVzSW5EYXRhVHlwZURpcjogUHJvamVjdEZpbGVbXSA9IGZpbGVzXG4gICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmVuZHNXaXRoKFwiLmpzb25cIikpXG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFUeXBlRGlyLCBmaWxlKTtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgICAgfSk7XG4gICAgYW5pbWFsRGF0YUZpbGVzLnB1c2goe1xuICAgICAgbmFtZTogZGF0YVR5cGUsXG4gICAgICBmaWxlczogYW5pbWFsRGF0YUZpbGVzSW5EYXRhVHlwZURpcixcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBhbmltYWxEYXRhRmlsZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gYWRkQW5pbWFsKFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICBhbmltYWxOYW1lOiBzdHJpbmcsXG4gIGFuaW1hbERhdGE6IEFuaW1hbE1ldGFkYXRhXG4pOiB2b2lkIHtcbiAgY29uc3QgcHJvamVjdERpciA9IHBhdGguam9pbihwcm9qZWN0c1BhdGgsIHByb2plY3ROYW1lKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvamVjdCBub3QgZm91bmRcIik7XG4gIH1cbiAgY29uc3QgbWV0YWRhdGFQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXIsIFwibWV0YWRhdGEuanNvblwiKTtcbiAgY29uc3QgbWV0YWRhdGE6IFByb2plY3RNZXRhZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgZnMucmVhZEZpbGVTeW5jKG1ldGFkYXRhUGF0aCkudG9TdHJpbmcoKVxuICApO1xuXG4gIG1ldGFkYXRhLmFuaW1hbHNbYW5pbWFsTmFtZV0gPSBhbmltYWxEYXRhO1xuICBtZXRhZGF0YS5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgZnMud3JpdGVGaWxlU3luYyhtZXRhZGF0YVBhdGgsIEpTT04uc3RyaW5naWZ5KG1ldGFkYXRhLCBudWxsLCAyKSk7XG4gIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlQW5pbWFsKHByb2plY3ROYW1lOiBzdHJpbmcsIGFuaW1hbE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwcm9qZWN0RGlyID0gcGF0aC5qb2luKHByb2plY3RzUGF0aCwgcHJvamVjdE5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuXG4gIGNvbnN0IG1ldGFkYXRhUGF0aCA9IHBhdGguam9pbihwcm9qZWN0RGlyLCBcIm1ldGFkYXRhLmpzb25cIik7XG4gIGNvbnN0IG1ldGFkYXRhOiBQcm9qZWN0TWV0YWRhdGEgPSBKU09OLnBhcnNlKFxuICAgIGZzLnJlYWRGaWxlU3luYyhtZXRhZGF0YVBhdGgpLnRvU3RyaW5nKClcbiAgKTtcblxuICBkZWxldGUgbWV0YWRhdGEuYW5pbWFsc1thbmltYWxOYW1lXTtcbiAgbWV0YWRhdGEubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMobWV0YWRhdGFQYXRoLCBKU09OLnN0cmluZ2lmeShtZXRhZGF0YSwgbnVsbCwgMikpO1xuXG4gIC8vIERlbGV0ZSB0aGUgYW5pbWFsIGZvbGRlclxuICBmcy5ybVN5bmMocGF0aC5qb2luKHByb2plY3REaXIsIGFuaW1hbE5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2plY3RzKCk6IHN0cmluZ1tdIHtcbiAgLy8gR2V0IGFsbCBkaXJlY3RvcmllcyBpbiB0aGUgcHJvamVjdHMgZm9sZGVyXG4gIHJldHVybiBmcy5yZWFkZGlyU3luYyhwcm9qZWN0c1BhdGgpLmZpbHRlcigoZmlsZSkgPT4ge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhwYXRoLmpvaW4ocHJvamVjdHNQYXRoLCBmaWxlKSkuaXNEaXJlY3RvcnkoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3REaXJlY3RvcnkoKTogc3RyaW5nIHtcbiAgLy8gU2VsZWN0IGEgZGlyZWN0b3J5IG9uIHRoZSBsb2NhbCBtYWNoaW5lIHdpdGggYSBkaWFsb2dcbiAgY29uc3QgZmlsZVBhdGhzID0gZGlhbG9nLnNob3dPcGVuRGlhbG9nU3luYyh7XG4gICAgcHJvcGVydGllczogW1wib3BlbkRpcmVjdG9yeVwiXSxcbiAgICB0aXRsZTogXCJTZWxlY3QgYSBkaXJlY3RvcnlcIixcbiAgfSk7XG4gIHJldHVybiBmaWxlUGF0aHNbMF07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN5bWxpbmsgZm9yIHRoZSBnaXZlbiB0YXJnZXQgcGF0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRQYXRoIC0gVGhlIHRhcmdldCBmaWxlIHBhdGguXG4gKiBAcGFyYW0ge3N0cmluZ30gc3ltbGlua1BhdGggLSBUaGUgc3ltbGluayBwYXRoLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN5bWxpbmsodGFyZ2V0UGF0aCwgc3ltbGlua1BhdGgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmcy5zeW1saW5rKHRhcmdldFBhdGgsIHN5bWxpbmtQYXRoLCAoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTtcbiAgICAgIGVsc2UgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUFuaW1hbERhdGFEaXJlY3RvcnkoXG4gIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gIGFuaW1hbE5hbWU6IHN0cmluZyxcbiAgZGlybmFtZTogc3RyaW5nXG4pOiB2b2lkIHtcbiAgY29uc3QgcHJvamVjdERpciA9IHBhdGguam9pbihwcm9qZWN0c1BhdGgsIHByb2plY3ROYW1lKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvamVjdCBub3QgZm91bmRcIik7XG4gIH1cbiAgLy8gQ2hlY2sgaWYgZGlybmFtZSBpcyBhIGZ1bGwgcGF0aFxuICBpZiAoIWRpcm5hbWUuc3RhcnRzV2l0aChwcm9qZWN0RGlyKSkge1xuICAgIC8vIHVzZSBiYXNlbmFtZVxuICAgIGRpcm5hbWUgPSBwYXRoLmJhc2VuYW1lKGRpcm5hbWUpO1xuICB9XG4gIGZzLnJtU3luYyhwYXRoLmpvaW4ocHJvamVjdERpciwgYW5pbWFsTmFtZSwgZGlybmFtZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QW5pbWFsRGF0YURpcmVjdG9yeShcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgYW5pbWFsTmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwcm9qZWN0RGlyID0gcGF0aC5qb2luKHByb2plY3RzUGF0aCwgcHJvamVjdE5hbWUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvamVjdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm9qZWN0IG5vdCBmb3VuZFwiKTtcbiAgfVxuICAvLyBHZXQgYWxsIGZpbGUgb2Jqc1xuICByZXR1cm4gcGF0aC5qb2luKHByb2plY3REaXIsIGFuaW1hbE5hbWUsIGRhdGFUeXBlKTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gYmFsYW5jZWQ7XG5mdW5jdGlvbiBiYWxhbmNlZChhLCBiLCBzdHIpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBSZWdFeHApIGEgPSBtYXliZU1hdGNoKGEsIHN0cik7XG4gIGlmIChiIGluc3RhbmNlb2YgUmVnRXhwKSBiID0gbWF5YmVNYXRjaChiLCBzdHIpO1xuXG4gIHZhciByID0gcmFuZ2UoYSwgYiwgc3RyKTtcblxuICByZXR1cm4gciAmJiB7XG4gICAgc3RhcnQ6IHJbMF0sXG4gICAgZW5kOiByWzFdLFxuICAgIHByZTogc3RyLnNsaWNlKDAsIHJbMF0pLFxuICAgIGJvZHk6IHN0ci5zbGljZShyWzBdICsgYS5sZW5ndGgsIHJbMV0pLFxuICAgIHBvc3Q6IHN0ci5zbGljZShyWzFdICsgYi5sZW5ndGgpXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1heWJlTWF0Y2gocmVnLCBzdHIpIHtcbiAgdmFyIG0gPSBzdHIubWF0Y2gocmVnKTtcbiAgcmV0dXJuIG0gPyBtWzBdIDogbnVsbDtcbn1cblxuYmFsYW5jZWQucmFuZ2UgPSByYW5nZTtcbmZ1bmN0aW9uIHJhbmdlKGEsIGIsIHN0cikge1xuICB2YXIgYmVncywgYmVnLCBsZWZ0LCByaWdodCwgcmVzdWx0O1xuICB2YXIgYWkgPSBzdHIuaW5kZXhPZihhKTtcbiAgdmFyIGJpID0gc3RyLmluZGV4T2YoYiwgYWkgKyAxKTtcbiAgdmFyIGkgPSBhaTtcblxuICBpZiAoYWkgPj0gMCAmJiBiaSA+IDApIHtcbiAgICBpZihhPT09Yikge1xuICAgICAgcmV0dXJuIFthaSwgYmldO1xuICAgIH1cbiAgICBiZWdzID0gW107XG4gICAgbGVmdCA9IHN0ci5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaSA+PSAwICYmICFyZXN1bHQpIHtcbiAgICAgIGlmIChpID09IGFpKSB7XG4gICAgICAgIGJlZ3MucHVzaChpKTtcbiAgICAgICAgYWkgPSBzdHIuaW5kZXhPZihhLCBpICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKGJlZ3MubGVuZ3RoID09IDEpIHtcbiAgICAgICAgcmVzdWx0ID0gWyBiZWdzLnBvcCgpLCBiaSBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmVnID0gYmVncy5wb3AoKTtcbiAgICAgICAgaWYgKGJlZyA8IGxlZnQpIHtcbiAgICAgICAgICBsZWZ0ID0gYmVnO1xuICAgICAgICAgIHJpZ2h0ID0gYmk7XG4gICAgICAgIH1cblxuICAgICAgICBiaSA9IHN0ci5pbmRleE9mKGIsIGkgKyAxKTtcbiAgICAgIH1cblxuICAgICAgaSA9IGFpIDwgYmkgJiYgYWkgPj0gMCA/IGFpIDogYmk7XG4gICAgfVxuXG4gICAgaWYgKGJlZ3MubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBbIGxlZnQsIHJpZ2h0IF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IEJ1ZmZlciB9ID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHN5bWJvbCA9IFN5bWJvbC5mb3IoJ0J1ZmZlckxpc3QnKVxuXG5mdW5jdGlvbiBCdWZmZXJMaXN0IChidWYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlckxpc3QpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXJMaXN0KGJ1ZilcbiAgfVxuXG4gIEJ1ZmZlckxpc3QuX2luaXQuY2FsbCh0aGlzLCBidWYpXG59XG5cbkJ1ZmZlckxpc3QuX2luaXQgPSBmdW5jdGlvbiBfaW5pdCAoYnVmKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBzeW1ib2wsIHsgdmFsdWU6IHRydWUgfSlcblxuICB0aGlzLl9idWZzID0gW11cbiAgdGhpcy5sZW5ndGggPSAwXG5cbiAgaWYgKGJ1Zikge1xuICAgIHRoaXMuYXBwZW5kKGJ1ZilcbiAgfVxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5fbmV3ID0gZnVuY3Rpb24gX25ldyAoYnVmKSB7XG4gIHJldHVybiBuZXcgQnVmZmVyTGlzdChidWYpXG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLl9vZmZzZXQgPSBmdW5jdGlvbiBfb2Zmc2V0IChvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgIHJldHVybiBbMCwgMF1cbiAgfVxuXG4gIGxldCB0b3QgPSAwXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9idWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgX3QgPSB0b3QgKyB0aGlzLl9idWZzW2ldLmxlbmd0aFxuICAgIGlmIChvZmZzZXQgPCBfdCB8fCBpID09PSB0aGlzLl9idWZzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiBbaSwgb2Zmc2V0IC0gdG90XVxuICAgIH1cbiAgICB0b3QgPSBfdFxuICB9XG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLl9yZXZlcnNlT2Zmc2V0ID0gZnVuY3Rpb24gKGJsT2Zmc2V0KSB7XG4gIGNvbnN0IGJ1ZmZlcklkID0gYmxPZmZzZXRbMF1cbiAgbGV0IG9mZnNldCA9IGJsT2Zmc2V0WzFdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJJZDsgaSsrKSB7XG4gICAgb2Zmc2V0ICs9IHRoaXMuX2J1ZnNbaV0ubGVuZ3RoXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0XG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAoaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4gdGhpcy5sZW5ndGggfHwgaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0KGluZGV4KVxuXG4gIHJldHVybiB0aGlzLl9idWZzW29mZnNldFswXV1bb2Zmc2V0WzFdXVxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdudW1iZXInICYmIHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAodHlwZW9mIGVuZCA9PT0gJ251bWJlcicgJiYgZW5kIDwgMCkge1xuICAgIGVuZCArPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoaXMuY29weShudWxsLCAwLCBzdGFydCwgZW5kKVxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZHN0LCBkc3RTdGFydCwgc3JjU3RhcnQsIHNyY0VuZCkge1xuICBpZiAodHlwZW9mIHNyY1N0YXJ0ICE9PSAnbnVtYmVyJyB8fCBzcmNTdGFydCA8IDApIHtcbiAgICBzcmNTdGFydCA9IDBcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3JjRW5kICE9PSAnbnVtYmVyJyB8fCBzcmNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHNyY0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3JjU3RhcnQgPj0gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZHN0IHx8IEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgaWYgKHNyY0VuZCA8PSAwKSB7XG4gICAgcmV0dXJuIGRzdCB8fCBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIGNvbnN0IGNvcHkgPSAhIWRzdFxuICBjb25zdCBvZmYgPSB0aGlzLl9vZmZzZXQoc3JjU3RhcnQpXG4gIGNvbnN0IGxlbiA9IHNyY0VuZCAtIHNyY1N0YXJ0XG4gIGxldCBieXRlcyA9IGxlblxuICBsZXQgYnVmb2ZmID0gKGNvcHkgJiYgZHN0U3RhcnQpIHx8IDBcbiAgbGV0IHN0YXJ0ID0gb2ZmWzFdXG5cbiAgLy8gY29weS9zbGljZSBldmVyeXRoaW5nXG4gIGlmIChzcmNTdGFydCA9PT0gMCAmJiBzcmNFbmQgPT09IHRoaXMubGVuZ3RoKSB7XG4gICAgaWYgKCFjb3B5KSB7XG4gICAgICAvLyBzbGljZSwgYnV0IGZ1bGwgY29uY2F0IGlmIG11bHRpcGxlIGJ1ZmZlcnNcbiAgICAgIHJldHVybiB0aGlzLl9idWZzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IHRoaXMuX2J1ZnNbMF1cbiAgICAgICAgOiBCdWZmZXIuY29uY2F0KHRoaXMuX2J1ZnMsIHRoaXMubGVuZ3RoKVxuICAgIH1cblxuICAgIC8vIGNvcHksIG5lZWQgdG8gY29weSBpbmRpdmlkdWFsIGJ1ZmZlcnNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2J1ZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuX2J1ZnNbaV0uY29weShkc3QsIGJ1Zm9mZilcbiAgICAgIGJ1Zm9mZiArPSB0aGlzLl9idWZzW2ldLmxlbmd0aFxuICAgIH1cblxuICAgIHJldHVybiBkc3RcbiAgfVxuXG4gIC8vIGVhc3ksIGNoZWFwIGNhc2Ugd2hlcmUgaXQncyBhIHN1YnNldCBvZiBvbmUgb2YgdGhlIGJ1ZmZlcnNcbiAgaWYgKGJ5dGVzIDw9IHRoaXMuX2J1ZnNbb2ZmWzBdXS5sZW5ndGggLSBzdGFydCkge1xuICAgIHJldHVybiBjb3B5XG4gICAgICA/IHRoaXMuX2J1ZnNbb2ZmWzBdXS5jb3B5KGRzdCwgZHN0U3RhcnQsIHN0YXJ0LCBzdGFydCArIGJ5dGVzKVxuICAgICAgOiB0aGlzLl9idWZzW29mZlswXV0uc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgYnl0ZXMpXG4gIH1cblxuICBpZiAoIWNvcHkpIHtcbiAgICAvLyBhIHNsaWNlLCB3ZSBuZWVkIHNvbWV0aGluZyB0byBjb3B5IGluIHRvXG4gICAgZHN0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBvZmZbMF07IGkgPCB0aGlzLl9idWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbCA9IHRoaXMuX2J1ZnNbaV0ubGVuZ3RoIC0gc3RhcnRcblxuICAgIGlmIChieXRlcyA+IGwpIHtcbiAgICAgIHRoaXMuX2J1ZnNbaV0uY29weShkc3QsIGJ1Zm9mZiwgc3RhcnQpXG4gICAgICBidWZvZmYgKz0gbFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9idWZzW2ldLmNvcHkoZHN0LCBidWZvZmYsIHN0YXJ0LCBzdGFydCArIGJ5dGVzKVxuICAgICAgYnVmb2ZmICs9IGxcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnl0ZXMgLT0gbFxuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBzdGFydCA9IDBcbiAgICB9XG4gIH1cblxuICAvLyBzYWZlZ3VhcmQgc28gdGhhdCB3ZSBkb24ndCByZXR1cm4gdW5pbml0aWFsaXplZCBtZW1vcnlcbiAgaWYgKGRzdC5sZW5ndGggPiBidWZvZmYpIHJldHVybiBkc3Quc2xpY2UoMCwgYnVmb2ZmKVxuXG4gIHJldHVybiBkc3Rcbn1cblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hhbGxvd1NsaWNlID0gZnVuY3Rpb24gc2hhbGxvd1NsaWNlIChzdGFydCwgZW5kKSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMFxuICBlbmQgPSB0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyA/IHRoaXMubGVuZ3RoIDogZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICByZXR1cm4gdGhpcy5fbmV3KClcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gdGhpcy5fb2Zmc2V0KHN0YXJ0KVxuICBjb25zdCBlbmRPZmZzZXQgPSB0aGlzLl9vZmZzZXQoZW5kKVxuICBjb25zdCBidWZmZXJzID0gdGhpcy5fYnVmcy5zbGljZShzdGFydE9mZnNldFswXSwgZW5kT2Zmc2V0WzBdICsgMSlcblxuICBpZiAoZW5kT2Zmc2V0WzFdID09PSAwKSB7XG4gICAgYnVmZmVycy5wb3AoKVxuICB9IGVsc2Uge1xuICAgIGJ1ZmZlcnNbYnVmZmVycy5sZW5ndGggLSAxXSA9IGJ1ZmZlcnNbYnVmZmVycy5sZW5ndGggLSAxXS5zbGljZSgwLCBlbmRPZmZzZXRbMV0pXG4gIH1cblxuICBpZiAoc3RhcnRPZmZzZXRbMV0gIT09IDApIHtcbiAgICBidWZmZXJzWzBdID0gYnVmZmVyc1swXS5zbGljZShzdGFydE9mZnNldFsxXSlcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9uZXcoYnVmZmVycylcbn1cblxuQnVmZmVyTGlzdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCkudG9TdHJpbmcoZW5jb2RpbmcpXG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmNvbnN1bWUgPSBmdW5jdGlvbiBjb25zdW1lIChieXRlcykge1xuICAvLyBmaXJzdCwgbm9ybWFsaXplIHRoZSBhcmd1bWVudCwgaW4gYWNjb3JkYW5jZSB3aXRoIGhvdyBCdWZmZXIgZG9lcyBpdFxuICBieXRlcyA9IE1hdGgudHJ1bmMoYnl0ZXMpXG4gIC8vIGRvIG5vdGhpbmcgaWYgbm90IGEgcG9zaXRpdmUgbnVtYmVyXG4gIGlmIChOdW1iZXIuaXNOYU4oYnl0ZXMpIHx8IGJ5dGVzIDw9IDApIHJldHVybiB0aGlzXG5cbiAgd2hpbGUgKHRoaXMuX2J1ZnMubGVuZ3RoKSB7XG4gICAgaWYgKGJ5dGVzID49IHRoaXMuX2J1ZnNbMF0ubGVuZ3RoKSB7XG4gICAgICBieXRlcyAtPSB0aGlzLl9idWZzWzBdLmxlbmd0aFxuICAgICAgdGhpcy5sZW5ndGggLT0gdGhpcy5fYnVmc1swXS5sZW5ndGhcbiAgICAgIHRoaXMuX2J1ZnMuc2hpZnQoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9idWZzWzBdID0gdGhpcy5fYnVmc1swXS5zbGljZShieXRlcylcbiAgICAgIHRoaXMubGVuZ3RoIC09IGJ5dGVzXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmR1cGxpY2F0ZSA9IGZ1bmN0aW9uIGR1cGxpY2F0ZSAoKSB7XG4gIGNvbnN0IGNvcHkgPSB0aGlzLl9uZXcoKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fYnVmcy5sZW5ndGg7IGkrKykge1xuICAgIGNvcHkuYXBwZW5kKHRoaXMuX2J1ZnNbaV0pXG4gIH1cblxuICByZXR1cm4gY29weVxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQgKGJ1Zikge1xuICBpZiAoYnVmID09IG51bGwpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgaWYgKGJ1Zi5idWZmZXIpIHtcbiAgICAvLyBhcHBlbmQgYSB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIEFycmF5QnVmZmVyXG4gICAgdGhpcy5fYXBwZW5kQnVmZmVyKEJ1ZmZlci5mcm9tKGJ1Zi5idWZmZXIsIGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZUxlbmd0aCkpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShidWYpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXBwZW5kKGJ1ZltpXSlcbiAgICB9XG4gIH0gZWxzZSBpZiAodGhpcy5faXNCdWZmZXJMaXN0KGJ1ZikpIHtcbiAgICAvLyB1bndyYXAgYXJndW1lbnQgaW50byBpbmRpdmlkdWFsIEJ1ZmZlckxpc3RzXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWYuX2J1ZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXBwZW5kKGJ1Zi5fYnVmc1tpXSlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gY29lcmNlIG51bWJlciBhcmd1bWVudHMgdG8gc3RyaW5ncywgc2luY2UgQnVmZmVyKG51bWJlcikgZG9lc1xuICAgIC8vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25cbiAgICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ251bWJlcicpIHtcbiAgICAgIGJ1ZiA9IGJ1Zi50b1N0cmluZygpXG4gICAgfVxuXG4gICAgdGhpcy5fYXBwZW5kQnVmZmVyKEJ1ZmZlci5mcm9tKGJ1ZikpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5fYXBwZW5kQnVmZmVyID0gZnVuY3Rpb24gYXBwZW5kQnVmZmVyIChidWYpIHtcbiAgdGhpcy5fYnVmcy5wdXNoKGJ1ZilcbiAgdGhpcy5sZW5ndGggKz0gYnVmLmxlbmd0aFxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHNlYXJjaCwgb2Zmc2V0LCBlbmNvZGluZykge1xuICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAodHlwZW9mIHNlYXJjaCA9PT0gJ2Z1bmN0aW9uJyB8fCBBcnJheS5pc0FycmF5KHNlYXJjaCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEJ1ZmZlckxpc3QsIG9yIFVpbnQ4QXJyYXkuJylcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc2VhcmNoID09PSAnbnVtYmVyJykge1xuICAgIHNlYXJjaCA9IEJ1ZmZlci5mcm9tKFtzZWFyY2hdKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnKSB7XG4gICAgc2VhcmNoID0gQnVmZmVyLmZyb20oc2VhcmNoLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmICh0aGlzLl9pc0J1ZmZlckxpc3Qoc2VhcmNoKSkge1xuICAgIHNlYXJjaCA9IHNlYXJjaC5zbGljZSgpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzZWFyY2guYnVmZmVyKSkge1xuICAgIHNlYXJjaCA9IEJ1ZmZlci5mcm9tKHNlYXJjaC5idWZmZXIsIHNlYXJjaC5ieXRlT2Zmc2V0LCBzZWFyY2guYnl0ZUxlbmd0aClcbiAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKHNlYXJjaCkpIHtcbiAgICBzZWFyY2ggPSBCdWZmZXIuZnJvbShzZWFyY2gpXG4gIH1cblxuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0IHx8IDApXG5cbiAgaWYgKGlzTmFOKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSAwXG4gIH1cblxuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIG9mZnNldCA9IHRoaXMubGVuZ3RoICsgb2Zmc2V0XG4gIH1cblxuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIG9mZnNldCA9IDBcbiAgfVxuXG4gIGlmIChzZWFyY2gubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG9mZnNldCA+IHRoaXMubGVuZ3RoID8gdGhpcy5sZW5ndGggOiBvZmZzZXRcbiAgfVxuXG4gIGNvbnN0IGJsT2Zmc2V0ID0gdGhpcy5fb2Zmc2V0KG9mZnNldClcbiAgbGV0IGJsSW5kZXggPSBibE9mZnNldFswXSAvLyBpbmRleCBvZiB3aGljaCBpbnRlcm5hbCBidWZmZXIgd2UncmUgd29ya2luZyBvblxuICBsZXQgYnVmZk9mZnNldCA9IGJsT2Zmc2V0WzFdIC8vIG9mZnNldCBvZiB0aGUgaW50ZXJuYWwgYnVmZmVyIHdlJ3JlIHdvcmtpbmcgb25cblxuICAvLyBzY2FuIG92ZXIgZWFjaCBidWZmZXJcbiAgZm9yICg7IGJsSW5kZXggPCB0aGlzLl9idWZzLmxlbmd0aDsgYmxJbmRleCsrKSB7XG4gICAgY29uc3QgYnVmZiA9IHRoaXMuX2J1ZnNbYmxJbmRleF1cblxuICAgIHdoaWxlIChidWZmT2Zmc2V0IDwgYnVmZi5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVdpbmRvdyA9IGJ1ZmYubGVuZ3RoIC0gYnVmZk9mZnNldFxuXG4gICAgICBpZiAoYXZhaWxhYmxlV2luZG93ID49IHNlYXJjaC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmF0aXZlU2VhcmNoUmVzdWx0ID0gYnVmZi5pbmRleE9mKHNlYXJjaCwgYnVmZk9mZnNldClcblxuICAgICAgICBpZiAobmF0aXZlU2VhcmNoUmVzdWx0ICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9yZXZlcnNlT2Zmc2V0KFtibEluZGV4LCBuYXRpdmVTZWFyY2hSZXN1bHRdKVxuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk9mZnNldCA9IGJ1ZmYubGVuZ3RoIC0gc2VhcmNoLmxlbmd0aCArIDEgLy8gZW5kIG9mIG5hdGl2ZSBzZWFyY2ggd2luZG93XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXZPZmZzZXQgPSB0aGlzLl9yZXZlcnNlT2Zmc2V0KFtibEluZGV4LCBidWZmT2Zmc2V0XSlcblxuICAgICAgICBpZiAodGhpcy5fbWF0Y2gocmV2T2Zmc2V0LCBzZWFyY2gpKSB7XG4gICAgICAgICAgcmV0dXJuIHJldk9mZnNldFxuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk9mZnNldCsrXG4gICAgICB9XG4gICAgfVxuXG4gICAgYnVmZk9mZnNldCA9IDBcbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5fbWF0Y2ggPSBmdW5jdGlvbiAob2Zmc2V0LCBzZWFyY2gpIHtcbiAgaWYgKHRoaXMubGVuZ3RoIC0gb2Zmc2V0IDwgc2VhcmNoLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZm9yIChsZXQgc2VhcmNoT2Zmc2V0ID0gMDsgc2VhcmNoT2Zmc2V0IDwgc2VhcmNoLmxlbmd0aDsgc2VhcmNoT2Zmc2V0KyspIHtcbiAgICBpZiAodGhpcy5nZXQob2Zmc2V0ICsgc2VhcmNoT2Zmc2V0KSAhPT0gc2VhcmNoW3NlYXJjaE9mZnNldF0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG47KGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgbWV0aG9kcyA9IHtcbiAgICByZWFkRG91YmxlQkU6IDgsXG4gICAgcmVhZERvdWJsZUxFOiA4LFxuICAgIHJlYWRGbG9hdEJFOiA0LFxuICAgIHJlYWRGbG9hdExFOiA0LFxuICAgIHJlYWRJbnQzMkJFOiA0LFxuICAgIHJlYWRJbnQzMkxFOiA0LFxuICAgIHJlYWRVSW50MzJCRTogNCxcbiAgICByZWFkVUludDMyTEU6IDQsXG4gICAgcmVhZEludDE2QkU6IDIsXG4gICAgcmVhZEludDE2TEU6IDIsXG4gICAgcmVhZFVJbnQxNkJFOiAyLFxuICAgIHJlYWRVSW50MTZMRTogMixcbiAgICByZWFkSW50ODogMSxcbiAgICByZWFkVUludDg6IDEsXG4gICAgcmVhZEludEJFOiBudWxsLFxuICAgIHJlYWRJbnRMRTogbnVsbCxcbiAgICByZWFkVUludEJFOiBudWxsLFxuICAgIHJlYWRVSW50TEU6IG51bGxcbiAgfVxuXG4gIGZvciAoY29uc3QgbSBpbiBtZXRob2RzKSB7XG4gICAgKGZ1bmN0aW9uIChtKSB7XG4gICAgICBpZiAobWV0aG9kc1ttXSA9PT0gbnVsbCkge1xuICAgICAgICBCdWZmZXJMaXN0LnByb3RvdHlwZVttXSA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpW21dKDAsIGJ5dGVMZW5ndGgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEJ1ZmZlckxpc3QucHJvdG90eXBlW21dID0gZnVuY3Rpb24gKG9mZnNldCA9IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zbGljZShvZmZzZXQsIG9mZnNldCArIG1ldGhvZHNbbV0pW21dKDApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KG0pKVxuICB9XG59KCkpXG5cbi8vIFVzZWQgaW50ZXJuYWxseSBieSB0aGUgY2xhc3MgYW5kIGFsc28gYXMgYW4gaW5kaWNhdG9yIG9mIHRoaXMgb2JqZWN0IGJlaW5nXG4vLyBhIGBCdWZmZXJMaXN0YC4gSXQncyBub3QgcG9zc2libGUgdG8gdXNlIGBpbnN0YW5jZW9mIEJ1ZmZlckxpc3RgIGluIGEgYnJvd3NlclxuLy8gZW52aXJvbm1lbnQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgY29waWVzIG9mIHRoZVxuLy8gQnVmZmVyTGlzdCBjbGFzcyBhbmQgc29tZSBgQnVmZmVyTGlzdGBzIG1pZ2h0IGJlIGBCdWZmZXJMaXN0YHMuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5faXNCdWZmZXJMaXN0ID0gZnVuY3Rpb24gX2lzQnVmZmVyTGlzdCAoYikge1xuICByZXR1cm4gYiBpbnN0YW5jZW9mIEJ1ZmZlckxpc3QgfHwgQnVmZmVyTGlzdC5pc0J1ZmZlckxpc3QoYilcbn1cblxuQnVmZmVyTGlzdC5pc0J1ZmZlckxpc3QgPSBmdW5jdGlvbiBpc0J1ZmZlckxpc3QgKGIpIHtcbiAgcmV0dXJuIGIgIT0gbnVsbCAmJiBiW3N5bWJvbF1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCdWZmZXJMaXN0XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgRHVwbGV4U3RyZWFtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuRHVwbGV4XG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbmNvbnN0IEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL0J1ZmZlckxpc3QnKVxuXG5mdW5jdGlvbiBCdWZmZXJMaXN0U3RyZWFtIChjYWxsYmFjaykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyTGlzdFN0cmVhbSkpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlckxpc3RTdHJlYW0oY2FsbGJhY2spXG4gIH1cblxuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFja1xuXG4gICAgY29uc3QgcGlwZXIgPSBmdW5jdGlvbiBwaXBlciAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2soZXJyKVxuICAgICAgICB0aGlzLl9jYWxsYmFjayA9IG51bGxcbiAgICAgIH1cbiAgICB9LmJpbmQodGhpcylcblxuICAgIHRoaXMub24oJ3BpcGUnLCBmdW5jdGlvbiBvblBpcGUgKHNyYykge1xuICAgICAgc3JjLm9uKCdlcnJvcicsIHBpcGVyKVxuICAgIH0pXG4gICAgdGhpcy5vbigndW5waXBlJywgZnVuY3Rpb24gb25VbnBpcGUgKHNyYykge1xuICAgICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIHBpcGVyKVxuICAgIH0pXG5cbiAgICBjYWxsYmFjayA9IG51bGxcbiAgfVxuXG4gIEJ1ZmZlckxpc3QuX2luaXQuY2FsbCh0aGlzLCBjYWxsYmFjaylcbiAgRHVwbGV4U3RyZWFtLmNhbGwodGhpcylcbn1cblxuaW5oZXJpdHMoQnVmZmVyTGlzdFN0cmVhbSwgRHVwbGV4U3RyZWFtKVxuT2JqZWN0LmFzc2lnbihCdWZmZXJMaXN0U3RyZWFtLnByb3RvdHlwZSwgQnVmZmVyTGlzdC5wcm90b3R5cGUpXG5cbkJ1ZmZlckxpc3RTdHJlYW0ucHJvdG90eXBlLl9uZXcgPSBmdW5jdGlvbiBfbmV3IChjYWxsYmFjaykge1xuICByZXR1cm4gbmV3IEJ1ZmZlckxpc3RTdHJlYW0oY2FsbGJhY2spXG59XG5cbkJ1ZmZlckxpc3RTdHJlYW0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIF93cml0ZSAoYnVmLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgdGhpcy5fYXBwZW5kQnVmZmVyKGJ1ZilcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2soKVxuICB9XG59XG5cbkJ1ZmZlckxpc3RTdHJlYW0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gX3JlYWQgKHNpemUpIHtcbiAgaWYgKCF0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnB1c2gobnVsbClcbiAgfVxuXG4gIHNpemUgPSBNYXRoLm1pbihzaXplLCB0aGlzLmxlbmd0aClcbiAgdGhpcy5wdXNoKHRoaXMuc2xpY2UoMCwgc2l6ZSkpXG4gIHRoaXMuY29uc3VtZShzaXplKVxufVxuXG5CdWZmZXJMaXN0U3RyZWFtLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiBlbmQgKGNodW5rKSB7XG4gIER1cGxleFN0cmVhbS5wcm90b3R5cGUuZW5kLmNhbGwodGhpcywgY2h1bmspXG5cbiAgaWYgKHRoaXMuX2NhbGxiYWNrKSB7XG4gICAgdGhpcy5fY2FsbGJhY2sobnVsbCwgdGhpcy5zbGljZSgpKVxuICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbFxuICB9XG59XG5cbkJ1ZmZlckxpc3RTdHJlYW0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gX2Rlc3Ryb3kgKGVyciwgY2IpIHtcbiAgdGhpcy5fYnVmcy5sZW5ndGggPSAwXG4gIHRoaXMubGVuZ3RoID0gMFxuICBjYihlcnIpXG59XG5cbkJ1ZmZlckxpc3RTdHJlYW0ucHJvdG90eXBlLl9pc0J1ZmZlckxpc3QgPSBmdW5jdGlvbiBfaXNCdWZmZXJMaXN0IChiKSB7XG4gIHJldHVybiBiIGluc3RhbmNlb2YgQnVmZmVyTGlzdFN0cmVhbSB8fCBiIGluc3RhbmNlb2YgQnVmZmVyTGlzdCB8fCBCdWZmZXJMaXN0U3RyZWFtLmlzQnVmZmVyTGlzdChiKVxufVxuXG5CdWZmZXJMaXN0U3RyZWFtLmlzQnVmZmVyTGlzdCA9IEJ1ZmZlckxpc3QuaXNCdWZmZXJMaXN0XG5cbm1vZHVsZS5leHBvcnRzID0gQnVmZmVyTGlzdFN0cmVhbVxubW9kdWxlLmV4cG9ydHMuQnVmZmVyTGlzdFN0cmVhbSA9IEJ1ZmZlckxpc3RTdHJlYW1cbm1vZHVsZS5leHBvcnRzLkJ1ZmZlckxpc3QgPSBCdWZmZXJMaXN0XG4iLCJ2YXIgYmFsYW5jZWQgPSByZXF1aXJlKCdiYWxhbmNlZC1tYXRjaCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cGFuZFRvcDtcblxudmFyIGVzY1NsYXNoID0gJ1xcMFNMQVNIJytNYXRoLnJhbmRvbSgpKydcXDAnO1xudmFyIGVzY09wZW4gPSAnXFwwT1BFTicrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NDbG9zZSA9ICdcXDBDTE9TRScrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NDb21tYSA9ICdcXDBDT01NQScrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NQZXJpb2QgPSAnXFwwUEVSSU9EJytNYXRoLnJhbmRvbSgpKydcXDAnO1xuXG5mdW5jdGlvbiBudW1lcmljKHN0cikge1xuICByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCkgPT0gc3RyXG4gICAgPyBwYXJzZUludChzdHIsIDEwKVxuICAgIDogc3RyLmNoYXJDb2RlQXQoMCk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUJyYWNlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5zcGxpdCgnXFxcXFxcXFwnKS5qb2luKGVzY1NsYXNoKVxuICAgICAgICAgICAgLnNwbGl0KCdcXFxceycpLmpvaW4oZXNjT3BlbilcbiAgICAgICAgICAgIC5zcGxpdCgnXFxcXH0nKS5qb2luKGVzY0Nsb3NlKVxuICAgICAgICAgICAgLnNwbGl0KCdcXFxcLCcpLmpvaW4oZXNjQ29tbWEpXG4gICAgICAgICAgICAuc3BsaXQoJ1xcXFwuJykuam9pbihlc2NQZXJpb2QpO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZUJyYWNlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5zcGxpdChlc2NTbGFzaCkuam9pbignXFxcXCcpXG4gICAgICAgICAgICAuc3BsaXQoZXNjT3Blbikuam9pbigneycpXG4gICAgICAgICAgICAuc3BsaXQoZXNjQ2xvc2UpLmpvaW4oJ30nKVxuICAgICAgICAgICAgLnNwbGl0KGVzY0NvbW1hKS5qb2luKCcsJylcbiAgICAgICAgICAgIC5zcGxpdChlc2NQZXJpb2QpLmpvaW4oJy4nKTtcbn1cblxuXG4vLyBCYXNpY2FsbHkganVzdCBzdHIuc3BsaXQoXCIsXCIpLCBidXQgaGFuZGxpbmcgY2FzZXNcbi8vIHdoZXJlIHdlIGhhdmUgbmVzdGVkIGJyYWNlZCBzZWN0aW9ucywgd2hpY2ggc2hvdWxkIGJlXG4vLyB0cmVhdGVkIGFzIGluZGl2aWR1YWwgbWVtYmVycywgbGlrZSB7YSx7YixjfSxkfVxuZnVuY3Rpb24gcGFyc2VDb21tYVBhcnRzKHN0cikge1xuICBpZiAoIXN0cilcbiAgICByZXR1cm4gWycnXTtcblxuICB2YXIgcGFydHMgPSBbXTtcbiAgdmFyIG0gPSBiYWxhbmNlZCgneycsICd9Jywgc3RyKTtcblxuICBpZiAoIW0pXG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnLCcpO1xuXG4gIHZhciBwcmUgPSBtLnByZTtcbiAgdmFyIGJvZHkgPSBtLmJvZHk7XG4gIHZhciBwb3N0ID0gbS5wb3N0O1xuICB2YXIgcCA9IHByZS5zcGxpdCgnLCcpO1xuXG4gIHBbcC5sZW5ndGgtMV0gKz0gJ3snICsgYm9keSArICd9JztcbiAgdmFyIHBvc3RQYXJ0cyA9IHBhcnNlQ29tbWFQYXJ0cyhwb3N0KTtcbiAgaWYgKHBvc3QubGVuZ3RoKSB7XG4gICAgcFtwLmxlbmd0aC0xXSArPSBwb3N0UGFydHMuc2hpZnQoKTtcbiAgICBwLnB1c2guYXBwbHkocCwgcG9zdFBhcnRzKTtcbiAgfVxuXG4gIHBhcnRzLnB1c2guYXBwbHkocGFydHMsIHApO1xuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuZnVuY3Rpb24gZXhwYW5kVG9wKHN0cikge1xuICBpZiAoIXN0cilcbiAgICByZXR1cm4gW107XG5cbiAgLy8gSSBkb24ndCBrbm93IHdoeSBCYXNoIDQuMyBkb2VzIHRoaXMsIGJ1dCBpdCBkb2VzLlxuICAvLyBBbnl0aGluZyBzdGFydGluZyB3aXRoIHt9IHdpbGwgaGF2ZSB0aGUgZmlyc3QgdHdvIGJ5dGVzIHByZXNlcnZlZFxuICAvLyBidXQgKm9ubHkqIGF0IHRoZSB0b3AgbGV2ZWwsIHNvIHt9LGF9YiB3aWxsIG5vdCBleHBhbmQgdG8gYW55dGhpbmcsXG4gIC8vIGJ1dCBhe30sYn1jIHdpbGwgYmUgZXhwYW5kZWQgdG8gW2F9YyxhYmNdLlxuICAvLyBPbmUgY291bGQgYXJndWUgdGhhdCB0aGlzIGlzIGEgYnVnIGluIEJhc2gsIGJ1dCBzaW5jZSB0aGUgZ29hbCBvZlxuICAvLyB0aGlzIG1vZHVsZSBpcyB0byBtYXRjaCBCYXNoJ3MgcnVsZXMsIHdlIGVzY2FwZSBhIGxlYWRpbmcge31cbiAgaWYgKHN0ci5zdWJzdHIoMCwgMikgPT09ICd7fScpIHtcbiAgICBzdHIgPSAnXFxcXHtcXFxcfScgKyBzdHIuc3Vic3RyKDIpO1xuICB9XG5cbiAgcmV0dXJuIGV4cGFuZChlc2NhcGVCcmFjZXMoc3RyKSwgdHJ1ZSkubWFwKHVuZXNjYXBlQnJhY2VzKTtcbn1cblxuZnVuY3Rpb24gZW1icmFjZShzdHIpIHtcbiAgcmV0dXJuICd7JyArIHN0ciArICd9Jztcbn1cbmZ1bmN0aW9uIGlzUGFkZGVkKGVsKSB7XG4gIHJldHVybiAvXi0/MFxcZC8udGVzdChlbCk7XG59XG5cbmZ1bmN0aW9uIGx0ZShpLCB5KSB7XG4gIHJldHVybiBpIDw9IHk7XG59XG5mdW5jdGlvbiBndGUoaSwgeSkge1xuICByZXR1cm4gaSA+PSB5O1xufVxuXG5mdW5jdGlvbiBleHBhbmQoc3RyLCBpc1RvcCkge1xuICB2YXIgZXhwYW5zaW9ucyA9IFtdO1xuXG4gIHZhciBtID0gYmFsYW5jZWQoJ3snLCAnfScsIHN0cik7XG4gIGlmICghbSkgcmV0dXJuIFtzdHJdO1xuXG4gIC8vIG5vIG5lZWQgdG8gZXhwYW5kIHByZSwgc2luY2UgaXQgaXMgZ3VhcmFudGVlZCB0byBiZSBmcmVlIG9mIGJyYWNlLXNldHNcbiAgdmFyIHByZSA9IG0ucHJlO1xuICB2YXIgcG9zdCA9IG0ucG9zdC5sZW5ndGhcbiAgICA/IGV4cGFuZChtLnBvc3QsIGZhbHNlKVxuICAgIDogWycnXTtcblxuICBpZiAoL1xcJCQvLnRlc3QobS5wcmUpKSB7ICAgIFxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcG9zdC5sZW5ndGg7IGsrKykge1xuICAgICAgdmFyIGV4cGFuc2lvbiA9IHByZSsgJ3snICsgbS5ib2R5ICsgJ30nICsgcG9zdFtrXTtcbiAgICAgIGV4cGFuc2lvbnMucHVzaChleHBhbnNpb24pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgaXNOdW1lcmljU2VxdWVuY2UgPSAvXi0/XFxkK1xcLlxcLi0/XFxkKyg/OlxcLlxcLi0/XFxkKyk/JC8udGVzdChtLmJvZHkpO1xuICAgIHZhciBpc0FscGhhU2VxdWVuY2UgPSAvXlthLXpBLVpdXFwuXFwuW2EtekEtWl0oPzpcXC5cXC4tP1xcZCspPyQvLnRlc3QobS5ib2R5KTtcbiAgICB2YXIgaXNTZXF1ZW5jZSA9IGlzTnVtZXJpY1NlcXVlbmNlIHx8IGlzQWxwaGFTZXF1ZW5jZTtcbiAgICB2YXIgaXNPcHRpb25zID0gbS5ib2R5LmluZGV4T2YoJywnKSA+PSAwO1xuICAgIGlmICghaXNTZXF1ZW5jZSAmJiAhaXNPcHRpb25zKSB7XG4gICAgICAvLyB7YX0sYn1cbiAgICAgIGlmIChtLnBvc3QubWF0Y2goLywuKlxcfS8pKSB7XG4gICAgICAgIHN0ciA9IG0ucHJlICsgJ3snICsgbS5ib2R5ICsgZXNjQ2xvc2UgKyBtLnBvc3Q7XG4gICAgICAgIHJldHVybiBleHBhbmQoc3RyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbc3RyXTtcbiAgICB9XG5cbiAgICB2YXIgbjtcbiAgICBpZiAoaXNTZXF1ZW5jZSkge1xuICAgICAgbiA9IG0uYm9keS5zcGxpdCgvXFwuXFwuLyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG4gPSBwYXJzZUNvbW1hUGFydHMobS5ib2R5KTtcbiAgICAgIGlmIChuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAvLyB4e3thLGJ9fXkgPT0+IHh7YX15IHh7Yn15XG4gICAgICAgIG4gPSBleHBhbmQoblswXSwgZmFsc2UpLm1hcChlbWJyYWNlKTtcbiAgICAgICAgaWYgKG4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHBvc3QubWFwKGZ1bmN0aW9uKHApIHtcbiAgICAgICAgICAgIHJldHVybiBtLnByZSArIG5bMF0gKyBwO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgbiBpcyB0aGUgcGFydHMsIGFuZCB3ZSBrbm93IGl0J3Mgbm90IGEgY29tbWEgc2V0XG4gICAgLy8gd2l0aCBhIHNpbmdsZSBlbnRyeS5cbiAgICB2YXIgTjtcblxuICAgIGlmIChpc1NlcXVlbmNlKSB7XG4gICAgICB2YXIgeCA9IG51bWVyaWMoblswXSk7XG4gICAgICB2YXIgeSA9IG51bWVyaWMoblsxXSk7XG4gICAgICB2YXIgd2lkdGggPSBNYXRoLm1heChuWzBdLmxlbmd0aCwgblsxXS5sZW5ndGgpXG4gICAgICB2YXIgaW5jciA9IG4ubGVuZ3RoID09IDNcbiAgICAgICAgPyBNYXRoLmFicyhudW1lcmljKG5bMl0pKVxuICAgICAgICA6IDE7XG4gICAgICB2YXIgdGVzdCA9IGx0ZTtcbiAgICAgIHZhciByZXZlcnNlID0geSA8IHg7XG4gICAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBpbmNyICo9IC0xO1xuICAgICAgICB0ZXN0ID0gZ3RlO1xuICAgICAgfVxuICAgICAgdmFyIHBhZCA9IG4uc29tZShpc1BhZGRlZCk7XG5cbiAgICAgIE4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IHg7IHRlc3QoaSwgeSk7IGkgKz0gaW5jcikge1xuICAgICAgICB2YXIgYztcbiAgICAgICAgaWYgKGlzQWxwaGFTZXF1ZW5jZSkge1xuICAgICAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpO1xuICAgICAgICAgIGlmIChjID09PSAnXFxcXCcpXG4gICAgICAgICAgICBjID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYyA9IFN0cmluZyhpKTtcbiAgICAgICAgICBpZiAocGFkKSB7XG4gICAgICAgICAgICB2YXIgbmVlZCA9IHdpZHRoIC0gYy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAobmVlZCA+IDApIHtcbiAgICAgICAgICAgICAgdmFyIHogPSBuZXcgQXJyYXkobmVlZCArIDEpLmpvaW4oJzAnKTtcbiAgICAgICAgICAgICAgaWYgKGkgPCAwKVxuICAgICAgICAgICAgICAgIGMgPSAnLScgKyB6ICsgYy5zbGljZSgxKTtcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGMgPSB6ICsgYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgTi5wdXNoKGMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBOID0gW107XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbi5sZW5ndGg7IGorKykge1xuICAgICAgICBOLnB1c2guYXBwbHkoTiwgZXhwYW5kKG5bal0sIGZhbHNlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBOLmxlbmd0aDsgaisrKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHBvc3QubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGV4cGFuc2lvbiA9IHByZSArIE5bal0gKyBwb3N0W2tdO1xuICAgICAgICBpZiAoIWlzVG9wIHx8IGlzU2VxdWVuY2UgfHwgZXhwYW5zaW9uKVxuICAgICAgICAgIGV4cGFuc2lvbnMucHVzaChleHBhbnNpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBhbnNpb25zO1xufVxuXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgQ1JDX1RBQkxFID0gW1xuICAweDAwMDAwMDAwLCAweDc3MDczMDk2LCAweGVlMGU2MTJjLCAweDk5MDk1MWJhLCAweDA3NmRjNDE5LFxuICAweDcwNmFmNDhmLCAweGU5NjNhNTM1LCAweDllNjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0LFxuICAweGUwZDVlOTFlLCAweDk3ZDJkOTg4LCAweDA5YjY0YzJiLCAweDdlYjE3Y2JkLCAweGU3YjgyZDA3LFxuICAweDkwYmYxZDkxLCAweDFkYjcxMDY0LCAweDZhYjAyMGYyLCAweGYzYjk3MTQ4LCAweDg0YmU0MWRlLFxuICAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgzZDM4NWM3LCAweDEzNmM5ODU2LFxuICAweDY0NmJhOGMwLCAweGZkNjJmOTdhLCAweDhhNjVjOWVjLCAweDE0MDE1YzRmLCAweDYzMDY2Y2Q5LFxuICAweGZhMGYzZDYzLCAweDhkMDgwZGY1LCAweDNiNmUyMGM4LCAweDRjNjkxMDVlLCAweGQ1NjA0MWU0LFxuICAweGEyNjc3MTcyLCAweDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1MGFiNTZiLFxuICAweDM1YjVhOGZhLCAweDQyYjI5ODZjLCAweGRiYmJjOWQ2LCAweGFjYmNmOTQwLCAweDMyZDg2Y2UzLFxuICAweDQ1ZGY1Yzc1LCAweGRjZDYwZGNmLCAweGFiZDEzZDU5LCAweDI2ZDkzMGFjLCAweDUxZGUwMDNhLFxuICAweGM4ZDc1MTgwLCAweGJmZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2YjNjNDIzLCAweGNmYmE5NTk5LFxuICAweGI4YmRhNTBmLCAweDI4MDJiODllLCAweDVmMDU4ODA4LCAweGM2MGNkOWIyLCAweGIxMGJlOTI0LFxuICAweDJmNmY3Yzg3LCAweDU4Njg0YzExLCAweGMxNjExZGFiLCAweGI2NjYyZDNkLCAweDc2ZGM0MTkwLFxuICAweDAxZGI3MTA2LCAweDk4ZDIyMGJjLCAweGVmZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFmLFxuICAweDlmYmZlNGE1LCAweGU4YjhkNDMzLCAweDc4MDdjOWEyLCAweDBmMDBmOTM0LCAweDk2MDlhODhlLFxuICAweGUxMGU5ODE4LCAweDdmNmEwZGJiLCAweDA4NmQzZDJkLCAweDkxNjQ2Yzk3LCAweGU2NjM1YzAxLFxuICAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYyNjIwMDRlLCAweDZjMDY5NWVkLFxuICAweDFiMDFhNTdiLCAweDgyMDhmNGMxLCAweGY1MGZjNDU3LCAweDY1YjBkOWM2LCAweDEyYjdlOTUwLFxuICAweDhiYmViOGVhLCAweGZjYjk4ODdjLCAweDYyZGQxZGRmLCAweDE1ZGEyZDQ5LCAweDhjZDM3Y2YzLFxuICAweGZiZDQ0YzY1LCAweDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0YmIzMGUyLFxuICAweDRhZGZhNTQxLCAweDNkZDg5NWQ3LCAweGE0ZDFjNDZkLCAweGQzZDZmNGZiLCAweDQzNjllOTZhLFxuICAweDM0NmVkOWZjLCAweGFkNjc4ODQ2LCAweGRhNjBiOGQwLCAweDQ0MDQyZDczLCAweDMzMDMxZGU1LFxuICAweGFhMGE0YzVmLCAweGRkMGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3MDI0MWFhLCAweGJlMGIxMDEwLFxuICAweGM5MGMyMDg2LCAweDU3NjhiNTI1LCAweDIwNmY4NWIzLCAweGI5NjZkNDA5LCAweGNlNjFlNDlmLFxuICAweDVlZGVmOTBlLCAweDI5ZDljOTk4LCAweGIwZDA5ODIyLCAweGM3ZDdhOGI0LCAweDU5YjMzZDE3LFxuICAweDJlYjQwZDgxLCAweGI3YmQ1YzNiLCAweGMwYmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2LFxuICAweDAzYjZlMjBjLCAweDc0YjFkMjlhLCAweGVhZDU0NzM5LCAweDlkZDI3N2FmLCAweDA0ZGIyNjE1LFxuICAweDczZGMxNjgzLCAweGUzNjMwYjEyLCAweDk0NjQzYjg0LCAweDBkNmQ2YTNlLCAweDdhNmE1YWE4LFxuICAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdkMDc5ZWIxLCAweGYwMGY5MzQ0LFxuICAweDg3MDhhM2QyLCAweDFlMDFmMjY4LCAweDY5MDZjMmZlLCAweGY3NjI1NzVkLCAweDgwNjU2N2NiLFxuICAweDE5NmMzNjcxLCAweDZlNmIwNmU3LCAweGZlZDQxYjc2LCAweDg5ZDMyYmUwLCAweDEwZGE3YTVhLFxuICAweDY3ZGQ0YWNjLCAweGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYwYjA4ZWQ1LFxuICAweGQ2ZDZhM2U4LCAweGExZDE5MzdlLCAweDM4ZDhjMmM0LCAweDRmZGZmMjUyLCAweGQxYmI2N2YxLFxuICAweGE2YmM1NzY3LCAweDNmYjUwNmRkLCAweDQ4YjIzNjRiLCAweGQ4MGQyYmRhLCAweGFmMGExYjRjLFxuICAweDM2MDM0YWY2LCAweDQxMDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4NjdkZjU1LCAweDMxNmU4ZWVmLFxuICAweDQ2NjliZTc5LCAweGNiNjFiMzhjLCAweGJjNjY4MzFhLCAweDI1NmZkMmEwLCAweDUyNjhlMjM2LFxuICAweGNjMGM3Nzk1LCAweGJiMGI0NzAzLCAweDIyMDIxNmI5LCAweDU1MDUyNjJmLCAweGM1YmEzYmJlLFxuICAweGIyYmQwYjI4LCAweDJiYjQ1YTkyLCAweDVjYjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMxLFxuICAweDJjZDk5ZThiLCAweDViZGVhZTFkLCAweDliNjRjMmIwLCAweGVjNjNmMjI2LCAweDc1NmFhMzljLFxuICAweDAyNmQ5MzBhLCAweDljMDkwNmE5LCAweGViMGUzNjNmLCAweDcyMDc2Nzg1LCAweDA1MDA1NzEzLFxuICAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBjYjYxYjM4LCAweDkyZDI4ZTliLFxuICAweGU1ZDViZTBkLCAweDdjZGNlZmI3LCAweDBiZGJkZjIxLCAweDg2ZDNkMmQ0LCAweGYxZDRlMjQyLFxuICAweDY4ZGRiM2Y4LCAweDFmZGE4MzZlLCAweDgxYmUxNmNkLCAweGY2YjkyNjViLCAweDZmYjA3N2UxLFxuICAweDE4Yjc0Nzc3LCAweDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDExMDEwYjVjLFxuICAweDhmNjU5ZWZmLCAweGY4NjJhZTY5LCAweDYxNmJmZmQzLCAweDE2NmNjZjQ1LCAweGEwMGFlMjc4LFxuICAweGQ3MGRkMmVlLCAweDRlMDQ4MzU0LCAweDM5MDNiM2MyLCAweGE3NjcyNjYxLCAweGQwNjAxNmY3LFxuICAweDQ5Njk0NzRkLCAweDNlNmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5ZDY1YWRjLCAweDQwZGYwYjY2LFxuICAweDM3ZDgzYmYwLCAweGE5YmNhZTUzLCAweGRlYmI5ZWM1LCAweDQ3YjJjZjdmLCAweDMwYjVmZmU5LFxuICAweGJkYmRmMjFjLCAweGNhYmFjMjhhLCAweDUzYjM5MzMwLCAweDI0YjRhM2E2LCAweGJhZDAzNjA1LFxuICAweGNkZDcwNjkzLCAweDU0ZGU1NzI5LCAweDIzZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4LFxuICAweDVkNjgxYjAyLCAweDJhNmYyYjk0LCAweGI0MGJiZTM3LCAweGMzMGM4ZWExLCAweDVhMDVkZjFiLFxuICAweDJkMDJlZjhkXG5dO1xuXG5pZiAodHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gIENSQ19UQUJMRSA9IG5ldyBJbnQzMkFycmF5KENSQ19UQUJMRSk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUJ1ZmZlcihpbnB1dCkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIHZhciBoYXNOZXdCdWZmZXJBUEkgPVxuICAgICAgdHlwZW9mIEJ1ZmZlci5hbGxvYyA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgICB0eXBlb2YgQnVmZmVyLmZyb20gPT09IFwiZnVuY3Rpb25cIjtcblxuICBpZiAodHlwZW9mIGlucHV0ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIGhhc05ld0J1ZmZlckFQSSA/IEJ1ZmZlci5hbGxvYyhpbnB1dCkgOiBuZXcgQnVmZmVyKGlucHV0KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gaGFzTmV3QnVmZmVyQVBJID8gQnVmZmVyLmZyb20oaW5wdXQpIDogbmV3IEJ1ZmZlcihpbnB1dCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgbXVzdCBiZSBidWZmZXIsIG51bWJlciwgb3Igc3RyaW5nLCByZWNlaXZlZCBcIiArXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbnB1dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVmZmVyaXplSW50KG51bSkge1xuICB2YXIgdG1wID0gZW5zdXJlQnVmZmVyKDQpO1xuICB0bXAud3JpdGVJbnQzMkJFKG51bSwgMCk7XG4gIHJldHVybiB0bXA7XG59XG5cbmZ1bmN0aW9uIF9jcmMzMihidWYsIHByZXZpb3VzKSB7XG4gIGJ1ZiA9IGVuc3VyZUJ1ZmZlcihidWYpO1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHByZXZpb3VzKSkge1xuICAgIHByZXZpb3VzID0gcHJldmlvdXMucmVhZFVJbnQzMkJFKDApO1xuICB9XG4gIHZhciBjcmMgPSB+fnByZXZpb3VzIF4gLTE7XG4gIGZvciAodmFyIG4gPSAwOyBuIDwgYnVmLmxlbmd0aDsgbisrKSB7XG4gICAgY3JjID0gQ1JDX1RBQkxFWyhjcmMgXiBidWZbbl0pICYgMHhmZl0gXiAoY3JjID4+PiA4KTtcbiAgfVxuICByZXR1cm4gKGNyYyBeIC0xKTtcbn1cblxuZnVuY3Rpb24gY3JjMzIoKSB7XG4gIHJldHVybiBidWZmZXJpemVJbnQoX2NyYzMyLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xufVxuY3JjMzIuc2lnbmVkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyYzMyLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59O1xuY3JjMzIudW5zaWduZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JjMzIuYXBwbHkobnVsbCwgYXJndW1lbnRzKSA+Pj4gMDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JjMzI7XG4iLCIvKipcbiAqIG5vZGUtY29tcHJlc3MtY29tbW9uc1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWNvbXByZXNzLWNvbW1vbnMvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVRcbiAqL1xudmFyIEFyY2hpdmVFbnRyeSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7fTtcblxuQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7fTtcblxuQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRTaXplID0gZnVuY3Rpb24oKSB7fTtcblxuQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRMYXN0TW9kaWZpZWREYXRlID0gZnVuY3Rpb24oKSB7fTtcblxuQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5pc0RpcmVjdG9yeSA9IGZ1bmN0aW9uKCkge307IiwiLyoqXG4gKiBub2RlLWNvbXByZXNzLWNvbW1vbnNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1jb21wcmVzcy1jb21tb25zL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ3V0aWwnKS5pbmhlcml0cztcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKS5UcmFuc2Zvcm07XG5cbnZhciBBcmNoaXZlRW50cnkgPSByZXF1aXJlKCcuL2FyY2hpdmUtZW50cnknKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG52YXIgQXJjaGl2ZU91dHB1dFN0cmVhbSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQXJjaGl2ZU91dHB1dFN0cmVhbSkpIHtcbiAgICByZXR1cm4gbmV3IEFyY2hpdmVPdXRwdXRTdHJlYW0ob3B0aW9ucyk7XG4gIH1cblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMuX2FyY2hpdmUgPSB7XG4gICAgZmluaXNoOiBmYWxzZSxcbiAgICBmaW5pc2hlZDogZmFsc2UsXG4gICAgcHJvY2Vzc2luZzogZmFsc2VcbiAgfTtcbn07XG5cbmluaGVyaXRzKEFyY2hpdmVPdXRwdXRTdHJlYW0sIFRyYW5zZm9ybSk7XG5cbkFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLl9hcHBlbmRCdWZmZXIgPSBmdW5jdGlvbih6YWUsIHNvdXJjZSwgY2FsbGJhY2spIHtcbiAgLy8gc2NhZmZvbGQgb25seVxufTtcblxuQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX2FwcGVuZFN0cmVhbSA9IGZ1bmN0aW9uKHphZSwgc291cmNlLCBjYWxsYmFjaykge1xuICAvLyBzY2FmZm9sZCBvbmx5XG59O1xuXG5BcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fZW1pdEVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnIpIHtcbiAgaWYgKGVycikge1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuICB9XG59O1xuXG5BcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fZmluaXNoID0gZnVuY3Rpb24oYWUpIHtcbiAgLy8gc2NhZmZvbGQgb25seVxufTtcblxuQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX25vcm1hbGl6ZUVudHJ5ID0gZnVuY3Rpb24oYWUpIHtcbiAgLy8gc2NhZmZvbGQgb25seVxufTtcblxuQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sobnVsbCwgY2h1bmspO1xufTtcblxuQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuZW50cnkgPSBmdW5jdGlvbihhZSwgc291cmNlLCBjYWxsYmFjaykge1xuICBzb3VyY2UgPSBzb3VyY2UgfHwgbnVsbDtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSB0aGlzLl9lbWl0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpO1xuICB9XG5cbiAgaWYgKCEoYWUgaW5zdGFuY2VvZiBBcmNoaXZlRW50cnkpKSB7XG4gICAgY2FsbGJhY2sobmV3IEVycm9yKCdub3QgYSB2YWxpZCBpbnN0YW5jZSBvZiBBcmNoaXZlRW50cnknKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRoaXMuX2FyY2hpdmUuZmluaXNoIHx8IHRoaXMuX2FyY2hpdmUuZmluaXNoZWQpIHtcbiAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ3VuYWNjZXB0YWJsZSBlbnRyeSBhZnRlciBmaW5pc2gnKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRoaXMuX2FyY2hpdmUucHJvY2Vzc2luZykge1xuICAgIGNhbGxiYWNrKG5ldyBFcnJvcignYWxyZWFkeSBwcm9jZXNzaW5nIGFuIGVudHJ5JykpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuX2FyY2hpdmUucHJvY2Vzc2luZyA9IHRydWU7XG4gIHRoaXMuX25vcm1hbGl6ZUVudHJ5KGFlKTtcbiAgdGhpcy5fZW50cnkgPSBhZTtcblxuICBzb3VyY2UgPSB1dGlsLm5vcm1hbGl6ZUlucHV0U291cmNlKHNvdXJjZSk7XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzb3VyY2UpKSB7XG4gICAgdGhpcy5fYXBwZW5kQnVmZmVyKGFlLCBzb3VyY2UsIGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh1dGlsLmlzU3RyZWFtKHNvdXJjZSkpIHtcbiAgICB0aGlzLl9hcHBlbmRTdHJlYW0oYWUsIHNvdXJjZSwgY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX2FyY2hpdmUucHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIGNhbGxiYWNrKG5ldyBFcnJvcignaW5wdXQgc291cmNlIG11c3QgYmUgdmFsaWQgU3RyZWFtIG9yIEJ1ZmZlciBpbnN0YW5jZScpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmZpbmlzaCA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fYXJjaGl2ZS5wcm9jZXNzaW5nKSB7XG4gICAgdGhpcy5fYXJjaGl2ZS5maW5pc2ggPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuX2ZpbmlzaCgpO1xufTtcblxuQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuZ2V0Qnl0ZXNXcml0dGVuID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldDtcbn07XG5cbkFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oY2h1bmssIGNiKSB7XG4gIGlmIChjaHVuaykge1xuICAgIHRoaXMub2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBUcmFuc2Zvcm0ucHJvdG90eXBlLndyaXRlLmNhbGwodGhpcywgY2h1bmssIGNiKTtcbn07IiwiLyoqXG4gKiBub2RlLWNvbXByZXNzLWNvbW1vbnNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1jb21wcmVzcy1jb21tb25zL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cbm1vZHVsZS5leHBvcnRzID0ge1xuICBXT1JEOiA0LFxuICBEV09SRDogOCxcbiAgRU1QVFk6IEJ1ZmZlci5hbGxvYygwKSxcblxuICBTSE9SVDogMixcbiAgU0hPUlRfTUFTSzogMHhmZmZmLFxuICBTSE9SVF9TSElGVDogMTYsXG4gIFNIT1JUX1pFUk86IEJ1ZmZlci5mcm9tKEFycmF5KDIpKSxcbiAgTE9ORzogNCxcbiAgTE9OR19aRVJPOiBCdWZmZXIuZnJvbShBcnJheSg0KSksXG5cbiAgTUlOX1ZFUlNJT05fSU5JVElBTDogMTAsXG4gIE1JTl9WRVJTSU9OX0RBVEFfREVTQ1JJUFRPUjogMjAsXG4gIE1JTl9WRVJTSU9OX1pJUDY0OiA0NSxcbiAgVkVSU0lPTl9NQURFQlk6IDQ1LFxuXG4gIE1FVEhPRF9TVE9SRUQ6IDAsXG4gIE1FVEhPRF9ERUZMQVRFRDogOCxcblxuICBQTEFURk9STV9VTklYOiAzLFxuICBQTEFURk9STV9GQVQ6IDAsXG5cbiAgU0lHX0xGSDogMHgwNDAzNGI1MCxcbiAgU0lHX0REOiAweDA4MDc0YjUwLFxuICBTSUdfQ0ZIOiAweDAyMDE0YjUwLFxuICBTSUdfRU9DRDogMHgwNjA1NGI1MCxcbiAgU0lHX1pJUDY0X0VPQ0Q6IDB4MDYwNjRCNTAsXG4gIFNJR19aSVA2NF9FT0NEX0xPQzogMHgwNzA2NEI1MCxcblxuICBaSVA2NF9NQUdJQ19TSE9SVDogMHhmZmZmLFxuICBaSVA2NF9NQUdJQzogMHhmZmZmZmZmZixcbiAgWklQNjRfRVhUUkFfSUQ6IDB4MDAwMSxcblxuICBaTElCX05PX0NPTVBSRVNTSU9OOiAwLFxuICBaTElCX0JFU1RfU1BFRUQ6IDEsXG4gIFpMSUJfQkVTVF9DT01QUkVTU0lPTjogOSxcbiAgWkxJQl9ERUZBVUxUX0NPTVBSRVNTSU9OOiAtMSxcblxuICBNT0RFX01BU0s6IDB4RkZGLFxuICBERUZBVUxUX0ZJTEVfTU9ERTogMzMxODgsIC8vIDAxMDY0NCA9IC1ydy1yLS1yLS0gPSBTX0lGUkVHIHwgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lSR1JQIHwgU19JUk9USFxuICBERUZBVUxUX0RJUl9NT0RFOiAxNjg3NywgIC8vIDA0MDc1NSA9IGRyd3hyLXhyLXggPSBTX0lGRElSIHwgU19JUldYVSB8IFNfSVJHUlAgfCBTX0lYR1JQIHwgU19JUk9USCB8IFNfSVhPVEhcblxuICBFWFRfRklMRV9BVFRSX0RJUjogMTEwNjA1MTA4OCwgIC8vIDAxMDE3MzIwMDAyMCA9IGRyd3hyLXhyLXggPSAoKChTX0lGRElSIHwgMDc1NSkgPDwgMTYpIHwgU19ET1NfRClcbiAgRVhUX0ZJTEVfQVRUUl9GSUxFOiAyMTc1MDA4ODAwLCAvLyAwMjAxNTEwMDAwNDAgPSAtcnctci0tci0tID0gKCgoU19JRlJFRyB8IDA2NDQpIDw8IDE2KSB8IFNfRE9TX0EpID4+PiAwXG5cbiAgLy8gVW5peCBmaWxlIHR5cGVzXG4gIFNfSUZNVDogNjE0NDAsICAgLy8gMDE3MDAwMCB0eXBlIG9mIGZpbGUgbWFza1xuICBTX0lGSUZPOiA0MDk2LCAgIC8vIDAxMDAwMCBuYW1lZCBwaXBlIChmaWZvKVxuICBTX0lGQ0hSOiA4MTkyLCAgIC8vIDAyMDAwMCBjaGFyYWN0ZXIgc3BlY2lhbFxuICBTX0lGRElSOiAxNjM4NCwgIC8vIDA0MDAwMCBkaXJlY3RvcnlcbiAgU19JRkJMSzogMjQ1NzYsICAvLyAwNjAwMDAgYmxvY2sgc3BlY2lhbFxuICBTX0lGUkVHOiAzMjc2OCwgIC8vIDAxMDAwMDAgcmVndWxhclxuICBTX0lGTE5LOiA0MDk2MCwgIC8vIDAxMjAwMDAgc3ltYm9saWMgbGlua1xuICBTX0lGU09DSzogNDkxNTIsIC8vIDAxNDAwMDAgc29ja2V0XG5cbiAgLy8gRE9TIGZpbGUgdHlwZSBmbGFnc1xuICBTX0RPU19BOiAzMiwgLy8gMDQwIEFyY2hpdmVcbiAgU19ET1NfRDogMTYsIC8vIDAyMCBEaXJlY3RvcnlcbiAgU19ET1NfVjogOCwgIC8vIDAxMCBWb2x1bWVcbiAgU19ET1NfUzogNCwgIC8vIDA0IFN5c3RlbVxuICBTX0RPU19IOiAyLCAgLy8gMDIgSGlkZGVuXG4gIFNfRE9TX1I6IDEgICAvLyAwMSBSZWFkIE9ubHlcbn07XG4iLCIvKipcbiAqIG5vZGUtY29tcHJlc3MtY29tbW9uc1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWNvbXByZXNzLWNvbW1vbnMvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVRcbiAqL1xudmFyIHppcFV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxudmFyIERBVEFfREVTQ1JJUFRPUl9GTEFHID0gMSA8PCAzO1xudmFyIEVOQ1JZUFRJT05fRkxBRyA9IDEgPDwgMDtcbnZhciBOVU1CRVJfT0ZfU0hBTk5PTl9GQU5PX1RSRUVTX0ZMQUcgPSAxIDw8IDI7XG52YXIgU0xJRElOR19ESUNUSU9OQVJZX1NJWkVfRkxBRyA9IDEgPDwgMTtcbnZhciBTVFJPTkdfRU5DUllQVElPTl9GTEFHID0gMSA8PCA2O1xudmFyIFVGVDhfTkFNRVNfRkxBRyA9IDEgPDwgMTE7XG5cbnZhciBHZW5lcmFsUHVycG9zZUJpdCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmFsUHVycG9zZUJpdCkpIHtcbiAgICByZXR1cm4gbmV3IEdlbmVyYWxQdXJwb3NlQml0KCk7XG4gIH1cblxuICB0aGlzLmRlc2NyaXB0b3IgPSBmYWxzZTtcbiAgdGhpcy5lbmNyeXB0aW9uID0gZmFsc2U7XG4gIHRoaXMudXRmOCA9IGZhbHNlO1xuICB0aGlzLm51bWJlck9mU2hhbm5vbkZhbm9UcmVlcyA9IDA7XG4gIHRoaXMuc3Ryb25nRW5jcnlwdGlvbiA9IGZhbHNlO1xuICB0aGlzLnNsaWRpbmdEaWN0aW9uYXJ5U2l6ZSA9IDA7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB6aXBVdGlsLmdldFNob3J0Qnl0ZXMoXG4gICAgKHRoaXMuZGVzY3JpcHRvciA/IERBVEFfREVTQ1JJUFRPUl9GTEFHIDogMCkgfFxuICAgICh0aGlzLnV0ZjggPyBVRlQ4X05BTUVTX0ZMQUcgOiAwKSB8XG4gICAgKHRoaXMuZW5jcnlwdGlvbiA/IEVOQ1JZUFRJT05fRkxBRyA6IDApIHxcbiAgICAodGhpcy5zdHJvbmdFbmNyeXB0aW9uID8gU1RST05HX0VOQ1JZUFRJT05fRkxBRyA6IDApXG4gICk7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbihidWYsIG9mZnNldCkge1xuICB2YXIgZmxhZyA9IHppcFV0aWwuZ2V0U2hvcnRCeXRlc1ZhbHVlKGJ1Ziwgb2Zmc2V0KTtcbiAgdmFyIGdicCA9IG5ldyBHZW5lcmFsUHVycG9zZUJpdCgpO1xuXG4gIGdicC51c2VEYXRhRGVzY3JpcHRvcigoZmxhZyAmIERBVEFfREVTQ1JJUFRPUl9GTEFHKSAhPT0gMCk7XG4gIGdicC51c2VVVEY4Rm9yTmFtZXMoKGZsYWcgJiBVRlQ4X05BTUVTX0ZMQUcpICE9PSAwKTtcbiAgZ2JwLnVzZVN0cm9uZ0VuY3J5cHRpb24oKGZsYWcgJiBTVFJPTkdfRU5DUllQVElPTl9GTEFHKSAhPT0gMCk7XG4gIGdicC51c2VFbmNyeXB0aW9uKChmbGFnICYgRU5DUllQVElPTl9GTEFHKSAhPT0gMCk7XG4gIGdicC5zZXRTbGlkaW5nRGljdGlvbmFyeVNpemUoKGZsYWcgJiBTTElESU5HX0RJQ1RJT05BUllfU0laRV9GTEFHKSAhPT0gMCA/IDgxOTIgOiA0MDk2KTtcbiAgZ2JwLnNldE51bWJlck9mU2hhbm5vbkZhbm9UcmVlcygoZmxhZyAmIE5VTUJFUl9PRl9TSEFOTk9OX0ZBTk9fVFJFRVNfRkxBRykgIT09IDAgPyAzIDogMik7XG5cbiAgcmV0dXJuIGdicDtcbn07XG5cbkdlbmVyYWxQdXJwb3NlQml0LnByb3RvdHlwZS5zZXROdW1iZXJPZlNoYW5ub25GYW5vVHJlZXMgPSBmdW5jdGlvbihuKSB7XG4gIHRoaXMubnVtYmVyT2ZTaGFubm9uRmFub1RyZWVzID0gbjtcbn07XG5cbkdlbmVyYWxQdXJwb3NlQml0LnByb3RvdHlwZS5nZXROdW1iZXJPZlNoYW5ub25GYW5vVHJlZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMubnVtYmVyT2ZTaGFubm9uRmFub1RyZWVzO1xufTtcblxuR2VuZXJhbFB1cnBvc2VCaXQucHJvdG90eXBlLnNldFNsaWRpbmdEaWN0aW9uYXJ5U2l6ZSA9IGZ1bmN0aW9uKG4pIHtcbiAgdGhpcy5zbGlkaW5nRGljdGlvbmFyeVNpemUgPSBuO1xufTtcblxuR2VuZXJhbFB1cnBvc2VCaXQucHJvdG90eXBlLmdldFNsaWRpbmdEaWN0aW9uYXJ5U2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zbGlkaW5nRGljdGlvbmFyeVNpemU7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUudXNlRGF0YURlc2NyaXB0b3IgPSBmdW5jdGlvbihiKSB7XG4gIHRoaXMuZGVzY3JpcHRvciA9IGI7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUudXNlc0RhdGFEZXNjcmlwdG9yID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmRlc2NyaXB0b3I7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUudXNlRW5jcnlwdGlvbiA9IGZ1bmN0aW9uKGIpIHtcbiAgdGhpcy5lbmNyeXB0aW9uID0gYjtcbn07XG5cbkdlbmVyYWxQdXJwb3NlQml0LnByb3RvdHlwZS51c2VzRW5jcnlwdGlvbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lbmNyeXB0aW9uO1xufTtcblxuR2VuZXJhbFB1cnBvc2VCaXQucHJvdG90eXBlLnVzZVN0cm9uZ0VuY3J5cHRpb24gPSBmdW5jdGlvbihiKSB7XG4gIHRoaXMuc3Ryb25nRW5jcnlwdGlvbiA9IGI7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUudXNlc1N0cm9uZ0VuY3J5cHRpb24gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc3Ryb25nRW5jcnlwdGlvbjtcbn07XG5cbkdlbmVyYWxQdXJwb3NlQml0LnByb3RvdHlwZS51c2VVVEY4Rm9yTmFtZXMgPSBmdW5jdGlvbihiKSB7XG4gIHRoaXMudXRmOCA9IGI7XG59O1xuXG5HZW5lcmFsUHVycG9zZUJpdC5wcm90b3R5cGUudXNlc1VURjhGb3JOYW1lcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy51dGY4O1xufTsiLCIvKipcbiAqIG5vZGUtY29tcHJlc3MtY29tbW9uc1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWNvbXByZXNzLWNvbW1vbnMvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgLyoqXG4gICAgICogQml0cyB1c2VkIGZvciBwZXJtaXNzaW9ucyAoYW5kIHN0aWNreSBiaXQpXG4gICAgICovXG4gICAgUEVSTV9NQVNLOiA0MDk1LCAvLyAwNzc3N1xuXG4gICAgLyoqXG4gICAgICogQml0cyB1c2VkIHRvIGluZGljYXRlIHRoZSBmaWxlc3lzdGVtIG9iamVjdCB0eXBlLlxuICAgICAqL1xuICAgIEZJTEVfVFlQRV9GTEFHOiA2MTQ0MCwgLy8gMDE3MDAwMFxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHN5bWJvbGljIGxpbmtzLlxuICAgICAqL1xuICAgIExJTktfRkxBRzogNDA5NjAsIC8vIDAxMjAwMDBcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBwbGFpbiBmaWxlcy5cbiAgICAgKi9cbiAgICBGSUxFX0ZMQUc6IDMyNzY4LCAvLyAwMTAwMDAwXG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgZGlyZWN0b3JpZXMuXG4gICAgICovXG4gICAgRElSX0ZMQUc6IDE2Mzg0LCAvLyAwNDAwMDBcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBzb21ld2hhdCBhcmJpdHJhcnkgY2hvaWNlcyB0aGF0IGFyZSBxdWl0ZSBjb21tb24gZm9yIHNoYXJlZFxuICAgIC8vIGluc3RhbGxhdGlvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBwZXJtaXNzaW9ucyBmb3Igc3ltYm9saWMgbGlua3MuXG4gICAgICovXG4gICAgREVGQVVMVF9MSU5LX1BFUk06IDUxMSwgLy8gMDc3N1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgZGlyZWN0b3JpZXMuXG4gICAgICovXG4gICAgREVGQVVMVF9ESVJfUEVSTTogNDkzLCAvLyAwNzU1XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHBlcm1pc3Npb25zIGZvciBwbGFpbiBmaWxlcy5cbiAgICAgKi9cbiAgICBERUZBVUxUX0ZJTEVfUEVSTTogNDIwIC8vIDA2NDRcbn07IiwiLyoqXG4gKiBub2RlLWNvbXByZXNzLWNvbW1vbnNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1jb21wcmVzcy1jb21tb25zL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cbnZhciB1dGlsID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxudXRpbC5kYXRlVG9Eb3MgPSBmdW5jdGlvbihkLCBmb3JjZUxvY2FsVGltZSkge1xuICBmb3JjZUxvY2FsVGltZSA9IGZvcmNlTG9jYWxUaW1lIHx8IGZhbHNlO1xuXG4gIHZhciB5ZWFyID0gZm9yY2VMb2NhbFRpbWUgPyBkLmdldEZ1bGxZZWFyKCkgOiBkLmdldFVUQ0Z1bGxZZWFyKCk7XG5cbiAgaWYgKHllYXIgPCAxOTgwKSB7XG4gICAgcmV0dXJuIDIxNjI2ODg7IC8vIDE5ODAtMS0xIDAwOjAwOjAwXG4gIH0gZWxzZSBpZiAoeWVhciA+PSAyMDQ0KSB7XG4gICAgcmV0dXJuIDIxNDExNzU2Nzc7IC8vIDIwNDMtMTItMzEgMjM6NTk6NThcbiAgfVxuXG4gIHZhciB2YWwgPSB7XG4gICAgeWVhcjogeWVhcixcbiAgICBtb250aDogZm9yY2VMb2NhbFRpbWUgPyBkLmdldE1vbnRoKCkgOiBkLmdldFVUQ01vbnRoKCksXG4gICAgZGF0ZTogZm9yY2VMb2NhbFRpbWUgPyBkLmdldERhdGUoKSA6IGQuZ2V0VVRDRGF0ZSgpLFxuICAgIGhvdXJzOiBmb3JjZUxvY2FsVGltZSA/IGQuZ2V0SG91cnMoKSA6IGQuZ2V0VVRDSG91cnMoKSxcbiAgICBtaW51dGVzOiBmb3JjZUxvY2FsVGltZSA/IGQuZ2V0TWludXRlcygpIDogZC5nZXRVVENNaW51dGVzKCksXG4gICAgc2Vjb25kczogZm9yY2VMb2NhbFRpbWUgPyBkLmdldFNlY29uZHMoKSA6IGQuZ2V0VVRDU2Vjb25kcygpXG4gIH07XG5cbiAgcmV0dXJuICgodmFsLnllYXIgLSAxOTgwKSA8PCAyNSkgfCAoKHZhbC5tb250aCArIDEpIDw8IDIxKSB8ICh2YWwuZGF0ZSA8PCAxNikgfFxuICAgICh2YWwuaG91cnMgPDwgMTEpIHwgKHZhbC5taW51dGVzIDw8IDUpIHwgKHZhbC5zZWNvbmRzIC8gMik7XG59O1xuXG51dGlsLmRvc1RvRGF0ZSA9IGZ1bmN0aW9uKGRvcykge1xuICByZXR1cm4gbmV3IERhdGUoKChkb3MgPj4gMjUpICYgMHg3ZikgKyAxOTgwLCAoKGRvcyA+PiAyMSkgJiAweDBmKSAtIDEsIChkb3MgPj4gMTYpICYgMHgxZiwgKGRvcyA+PiAxMSkgJiAweDFmLCAoZG9zID4+IDUpICYgMHgzZiwgKGRvcyAmIDB4MWYpIDw8IDEpO1xufTtcblxudXRpbC5mcm9tRG9zVGltZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICByZXR1cm4gdXRpbC5kb3NUb0RhdGUoYnVmLnJlYWRVSW50MzJMRSgwKSk7XG59O1xuXG51dGlsLmdldEVpZ2h0Qnl0ZXMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2MoOCk7XG4gIGJ1Zi53cml0ZVVJbnQzMkxFKHYgJSAweDAxMDAwMDAwMDAsIDApO1xuICBidWYud3JpdGVVSW50MzJMRSgodiAvIDB4MDEwMDAwMDAwMCkgfCAwLCA0KTtcblxuICByZXR1cm4gYnVmO1xufTtcblxudXRpbC5nZXRTaG9ydEJ5dGVzID0gZnVuY3Rpb24odikge1xuICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jKDIpO1xuICBidWYud3JpdGVVSW50MTZMRSgodiAmIDB4RkZGRikgPj4+IDAsIDApO1xuXG4gIHJldHVybiBidWY7XG59O1xuXG51dGlsLmdldFNob3J0Qnl0ZXNWYWx1ZSA9IGZ1bmN0aW9uKGJ1Ziwgb2Zmc2V0KSB7XG4gIHJldHVybiBidWYucmVhZFVJbnQxNkxFKG9mZnNldCk7XG59O1xuXG51dGlsLmdldExvbmdCeXRlcyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgYnVmLndyaXRlVUludDMyTEUoKHYgJiAweEZGRkZGRkZGKSA+Pj4gMCwgMCk7XG5cbiAgcmV0dXJuIGJ1Zjtcbn07XG5cbnV0aWwuZ2V0TG9uZ0J5dGVzVmFsdWUgPSBmdW5jdGlvbihidWYsIG9mZnNldCkge1xuICByZXR1cm4gYnVmLnJlYWRVSW50MzJMRShvZmZzZXQpO1xufTtcblxudXRpbC50b0Rvc1RpbWUgPSBmdW5jdGlvbihkKSB7XG4gIHJldHVybiB1dGlsLmdldExvbmdCeXRlcyh1dGlsLmRhdGVUb0RvcyhkKSk7XG59OyIsIi8qKlxuICogbm9kZS1jb21wcmVzcy1jb21tb25zXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtY29tcHJlc3MtY29tbW9ucy9ibG9iL21hc3Rlci9MSUNFTlNFLU1JVFxuICovXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCd1dGlsJykuaW5oZXJpdHM7XG52YXIgbm9ybWFsaXplUGF0aCA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1wYXRoJyk7XG5cbnZhciBBcmNoaXZlRW50cnkgPSByZXF1aXJlKCcuLi9hcmNoaXZlLWVudHJ5Jyk7XG52YXIgR2VuZXJhbFB1cnBvc2VCaXQgPSByZXF1aXJlKCcuL2dlbmVyYWwtcHVycG9zZS1iaXQnKTtcbnZhciBVbml4U3RhdCA9IHJlcXVpcmUoJy4vdW5peC1zdGF0Jyk7XG5cbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xudmFyIHppcFV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxudmFyIFppcEFyY2hpdmVFbnRyeSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgWmlwQXJjaGl2ZUVudHJ5KSkge1xuICAgIHJldHVybiBuZXcgWmlwQXJjaGl2ZUVudHJ5KG5hbWUpO1xuICB9XG5cbiAgQXJjaGl2ZUVudHJ5LmNhbGwodGhpcyk7XG5cbiAgdGhpcy5wbGF0Zm9ybSA9IGNvbnN0YW50cy5QTEFURk9STV9GQVQ7XG4gIHRoaXMubWV0aG9kID0gLTE7XG5cbiAgdGhpcy5uYW1lID0gbnVsbDtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5jc2l6ZSA9IDA7XG4gIHRoaXMuZ3BiID0gbmV3IEdlbmVyYWxQdXJwb3NlQml0KCk7XG4gIHRoaXMuY3JjID0gMDtcbiAgdGhpcy50aW1lID0gLTE7XG5cbiAgdGhpcy5taW52ZXIgPSBjb25zdGFudHMuTUlOX1ZFUlNJT05fSU5JVElBTDtcbiAgdGhpcy5tb2RlID0gLTE7XG4gIHRoaXMuZXh0cmEgPSBudWxsO1xuICB0aGlzLmV4YXR0ciA9IDA7XG4gIHRoaXMuaW5hdHRyID0gMDtcbiAgdGhpcy5jb21tZW50ID0gbnVsbDtcblxuICBpZiAobmFtZSkge1xuICAgIHRoaXMuc2V0TmFtZShuYW1lKTtcbiAgfVxufTtcblxuaW5oZXJpdHMoWmlwQXJjaGl2ZUVudHJ5LCBBcmNoaXZlRW50cnkpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGV4dHJhIGZpZWxkcyByZWxhdGVkIHRvIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldENlbnRyYWxEaXJlY3RvcnlFeHRyYSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5nZXRFeHRyYSgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21tZW50IHNldCBmb3IgdGhlIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuZ2V0Q29tbWVudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5jb21tZW50ICE9PSBudWxsID8gdGhpcy5jb21tZW50IDogJyc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRDb21wcmVzc2VkU2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5jc2l6ZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgQ1JDMzIgZGlnZXN0IGZvciB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRDcmMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuY3JjO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBleHRlcm5hbCBmaWxlIGF0dHJpYnV0ZXMgZm9yIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldEV4dGVybmFsQXR0cmlidXRlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5leGF0dHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGV4dHJhIGZpZWxkcyByZWxhdGVkIHRvIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldEV4dHJhID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmV4dHJhICE9PSBudWxsID8gdGhpcy5leHRyYSA6IGNvbnN0YW50cy5FTVBUWTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJpdHMgcmVsYXRlZCB0byB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge0dlbmVyYWxQdXJwb3NlQml0fVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldEdlbmVyYWxQdXJwb3NlQml0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmdwYjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW50ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRJbnRlcm5hbEF0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuaW5hdHRyO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsYXN0IG1vZGlmaWVkIGRhdGUgb2YgdGhlIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuZ2V0TGFzdE1vZGlmaWVkRGF0ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5nZXRUaW1lKCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGV4dHJhIGZpZWxkcyByZWxhdGVkIHRvIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldExvY2FsRmlsZURhdGFFeHRyYSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5nZXRFeHRyYSgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdXNlZCBvbiB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRNZXRob2QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMubWV0aG9kO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm5hbWU7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIHRoZSBlbnRyeSB3YXMgbWFkZS5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldFBsYXRmb3JtID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnBsYXRmb3JtO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLmdldFNpemUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2l6ZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIGRhdGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbGFzdCBtb2RpZmllZCBkYXRlIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfERhdGV9XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuZ2V0VGltZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy50aW1lICE9PSAtMSA/IHppcFV0aWwuZG9zVG9EYXRlKHRoaXMudGltZSkgOiAtMTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgRE9TIHRpbWVzdGFtcCBmb3IgdGhlIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuZ2V0VGltZURvcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy50aW1lICE9PSAtMSA/IHRoaXMudGltZSA6IDA7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIFVOSVggZmlsZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuZ2V0VW5peE1vZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucGxhdGZvcm0gIT09IGNvbnN0YW50cy5QTEFURk9STV9VTklYID8gMCA6ICgodGhpcy5nZXRFeHRlcm5hbEF0dHJpYnV0ZXMoKSA+PiBjb25zdGFudHMuU0hPUlRfU0hJRlQpICYgY29uc3RhbnRzLlNIT1JUX01BU0spO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIFpJUCBuZWVkZWQgdG8gZXh0cmFjdCB0aGUgZW50cnkuXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5nZXRWZXJzaW9uTmVlZGVkVG9FeHRyYWN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm1pbnZlcjtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgY29tbWVudCBvZiB0aGUgZW50cnkuXG4gKlxuICogQHBhcmFtIGNvbW1lbnRcbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5zZXRDb21tZW50ID0gZnVuY3Rpb24oY29tbWVudCkge1xuICBpZiAoQnVmZmVyLmJ5dGVMZW5ndGgoY29tbWVudCkgIT09IGNvbW1lbnQubGVuZ3RoKSB7XG4gICAgdGhpcy5nZXRHZW5lcmFsUHVycG9zZUJpdCgpLnVzZVVURjhGb3JOYW1lcyh0cnVlKTtcbiAgfVxuXG4gIHRoaXMuY29tbWVudCA9IGNvbW1lbnQ7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgZW50cnkuXG4gKlxuICogQHBhcmFtIHNpemVcbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5zZXRDb21wcmVzc2VkU2l6ZSA9IGZ1bmN0aW9uKHNpemUpIHtcbiAgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGVudHJ5IGNvbXByZXNzZWQgc2l6ZScpO1xuICB9XG5cbiAgdGhpcy5jc2l6ZSA9IHNpemU7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGNoZWNrc3VtIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gY3JjXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0Q3JjID0gZnVuY3Rpb24oY3JjKSB7XG4gIGlmIChjcmMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGVudHJ5IGNyYzMyJyk7XG4gIH1cblxuICB0aGlzLmNyYyA9IGNyYztcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgZXh0ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gYXR0clxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLnNldEV4dGVybmFsQXR0cmlidXRlcyA9IGZ1bmN0aW9uKGF0dHIpIHtcbiAgdGhpcy5leGF0dHIgPSBhdHRyID4+PiAwO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBleHRyYSBmaWVsZHMgcmVsYXRlZCB0byB0aGUgZW50cnkuXG4gKlxuICogQHBhcmFtIGV4dHJhXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0RXh0cmEgPSBmdW5jdGlvbihleHRyYSkge1xuICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGdlbmVyYWwgcHVycG9zZSBiaXRzIHJlbGF0ZWQgdG8gdGhlIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBncGJcbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5zZXRHZW5lcmFsUHVycG9zZUJpdCA9IGZ1bmN0aW9uKGdwYikge1xuICBpZiAoIShncGIgaW5zdGFuY2VvZiBHZW5lcmFsUHVycG9zZUJpdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZW50cnkgR2VuZXJhbFB1cnBvc2VCaXQnKTtcbiAgfVxuXG4gIHRoaXMuZ3BiID0gZ3BiO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBpbnRlcm5hbCBmaWxlIGF0dHJpYnV0ZXMgb2YgdGhlIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBhdHRyXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0SW50ZXJuYWxBdHRyaWJ1dGVzID0gZnVuY3Rpb24oYXR0cikge1xuICB0aGlzLmluYXR0ciA9IGF0dHI7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCBvZiB0aGUgZW50cnkuXG4gKlxuICogQHBhcmFtIG1ldGhvZFxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLnNldE1ldGhvZCA9IGZ1bmN0aW9uKG1ldGhvZCkge1xuICBpZiAobWV0aG9kIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBlbnRyeSBjb21wcmVzc2lvbiBtZXRob2QnKTtcbiAgfVxuXG4gIHRoaXMubWV0aG9kID0gbWV0aG9kO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gbmFtZVxuICogQHBhcmFtIHByZXBlbmRTbGFzaFxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLnNldE5hbWUgPSBmdW5jdGlvbihuYW1lLCBwcmVwZW5kU2xhc2ggPSBmYWxzZSkge1xuICBuYW1lID0gbm9ybWFsaXplUGF0aChuYW1lLCBmYWxzZSlcbiAgICAucmVwbGFjZSgvXlxcdys6LywgJycpXG4gICAgLnJlcGxhY2UoL14oXFwuXFwuXFwvfFxcLykrLywgJycpO1xuXG4gIGlmIChwcmVwZW5kU2xhc2gpIHtcbiAgICBuYW1lID0gYC8ke25hbWV9YDtcbiAgfVxuXG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChuYW1lKSAhPT0gbmFtZS5sZW5ndGgpIHtcbiAgICB0aGlzLmdldEdlbmVyYWxQdXJwb3NlQml0KCkudXNlVVRGOEZvck5hbWVzKHRydWUpO1xuICB9XG5cbiAgdGhpcy5uYW1lID0gbmFtZTtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggdGhlIGVudHJ5IHdhcyBtYWRlLlxuICpcbiAqIEBwYXJhbSBwbGF0Zm9ybVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLnNldFBsYXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0pIHtcbiAgdGhpcy5wbGF0Zm9ybSA9IHBsYXRmb3JtO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBzaXplIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gc2l6ZVxuICovXG5aaXBBcmNoaXZlRW50cnkucHJvdG90eXBlLnNldFNpemUgPSBmdW5jdGlvbihzaXplKSB7XG4gIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBlbnRyeSBzaXplJyk7XG4gIH1cblxuICB0aGlzLnNpemUgPSBzaXplO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSB0aW1lIG9mIHRoZSBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gdGltZVxuICogQHBhcmFtIGZvcmNlTG9jYWxUaW1lXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0VGltZSA9IGZ1bmN0aW9uKHRpbWUsIGZvcmNlTG9jYWxUaW1lKSB7XG4gIGlmICghKHRpbWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBlbnRyeSB0aW1lJyk7XG4gIH1cblxuICB0aGlzLnRpbWUgPSB6aXBVdGlsLmRhdGVUb0Rvcyh0aW1lLCBmb3JjZUxvY2FsVGltZSk7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIFVOSVggZmlsZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBtb2RlXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0VW5peE1vZGUgPSBmdW5jdGlvbihtb2RlKSB7XG4gIG1vZGUgfD0gdGhpcy5pc0RpcmVjdG9yeSgpID8gY29uc3RhbnRzLlNfSUZESVIgOiBjb25zdGFudHMuU19JRlJFRztcblxuICB2YXIgZXh0YXR0ciA9IDA7XG4gIGV4dGF0dHIgfD0gKG1vZGUgPDwgY29uc3RhbnRzLlNIT1JUX1NISUZUKSB8ICh0aGlzLmlzRGlyZWN0b3J5KCkgPyBjb25zdGFudHMuU19ET1NfRCA6IGNvbnN0YW50cy5TX0RPU19BKTtcblxuICB0aGlzLnNldEV4dGVybmFsQXR0cmlidXRlcyhleHRhdHRyKTtcbiAgdGhpcy5tb2RlID0gbW9kZSAmIGNvbnN0YW50cy5NT0RFX01BU0s7XG4gIHRoaXMucGxhdGZvcm0gPSBjb25zdGFudHMuUExBVEZPUk1fVU5JWDtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgdmVyc2lvbiBvZiBaSVAgbmVlZGVkIHRvIGV4dHJhY3QgdGhpcyBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gbWludmVyXG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuc2V0VmVyc2lvbk5lZWRlZFRvRXh0cmFjdCA9IGZ1bmN0aW9uKG1pbnZlcikge1xuICB0aGlzLm1pbnZlciA9IG1pbnZlcjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZW50cnkgcmVwcmVzZW50cyBhIGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5pc0RpcmVjdG9yeSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5nZXROYW1lKCkuc2xpY2UoLTEpID09PSAnLyc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGVudHJ5IHJlcHJlc2VudHMgYSB1bml4IHN5bWxpbmssXG4gKiBpbiB3aGljaCBjYXNlIHRoZSBlbnRyeSdzIGNvbnRlbnQgY29udGFpbnMgdGhlIHRhcmdldCBwYXRoXG4gKiBmb3IgdGhlIHN5bWxpbmsuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cblppcEFyY2hpdmVFbnRyeS5wcm90b3R5cGUuaXNVbml4U3ltbGluayA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gKHRoaXMuZ2V0VW5peE1vZGUoKSAmIFVuaXhTdGF0LkZJTEVfVFlQRV9GTEFHKSA9PT0gVW5peFN0YXQuTElOS19GTEFHO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBlbnRyeSBpcyB1c2luZyB0aGUgWklQNjQgZXh0ZW5zaW9uIG9mIFpJUC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuWmlwQXJjaGl2ZUVudHJ5LnByb3RvdHlwZS5pc1ppcDY0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmNzaXplID4gY29uc3RhbnRzLlpJUDY0X01BR0lDIHx8IHRoaXMuc2l6ZSA+IGNvbnN0YW50cy5aSVA2NF9NQUdJQztcbn07XG4iLCIvKipcbiAqIG5vZGUtY29tcHJlc3MtY29tbW9uc1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWNvbXByZXNzLWNvbW1vbnMvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVRcbiAqL1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgndXRpbCcpLmluaGVyaXRzO1xudmFyIGNyYzMyID0gcmVxdWlyZSgnYnVmZmVyLWNyYzMyJyk7XG52YXIge0NSQzMyU3RyZWFtfSA9IHJlcXVpcmUoJ2NyYzMyLXN0cmVhbScpO1xudmFyIHtEZWZsYXRlQ1JDMzJTdHJlYW19ID0gcmVxdWlyZSgnY3JjMzItc3RyZWFtJyk7XG5cbnZhciBBcmNoaXZlT3V0cHV0U3RyZWFtID0gcmVxdWlyZSgnLi4vYXJjaGl2ZS1vdXRwdXQtc3RyZWFtJyk7XG52YXIgWmlwQXJjaGl2ZUVudHJ5ID0gcmVxdWlyZSgnLi96aXAtYXJjaGl2ZS1lbnRyeScpO1xudmFyIEdlbmVyYWxQdXJwb3NlQml0ID0gcmVxdWlyZSgnLi9nZW5lcmFsLXB1cnBvc2UtYml0Jyk7XG5cbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuLi8uLi91dGlsJyk7XG52YXIgemlwVXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG52YXIgWmlwQXJjaGl2ZU91dHB1dFN0cmVhbSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgWmlwQXJjaGl2ZU91dHB1dFN0cmVhbSkpIHtcbiAgICByZXR1cm4gbmV3IFppcEFyY2hpdmVPdXRwdXRTdHJlYW0ob3B0aW9ucyk7XG4gIH1cblxuICBvcHRpb25zID0gdGhpcy5vcHRpb25zID0gdGhpcy5fZGVmYXVsdHMob3B0aW9ucyk7XG5cbiAgQXJjaGl2ZU91dHB1dFN0cmVhbS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX2VudHJ5ID0gbnVsbDtcbiAgdGhpcy5fZW50cmllcyA9IFtdO1xuICB0aGlzLl9hcmNoaXZlID0ge1xuICAgIGNlbnRyYWxMZW5ndGg6IDAsXG4gICAgY2VudHJhbE9mZnNldDogMCxcbiAgICBjb21tZW50OiAnJyxcbiAgICBmaW5pc2g6IGZhbHNlLFxuICAgIGZpbmlzaGVkOiBmYWxzZSxcbiAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICBmb3JjZVppcDY0OiBvcHRpb25zLmZvcmNlWmlwNjQsXG4gICAgZm9yY2VMb2NhbFRpbWU6IG9wdGlvbnMuZm9yY2VMb2NhbFRpbWVcbiAgfTtcbn07XG5cbmluaGVyaXRzKFppcEFyY2hpdmVPdXRwdXRTdHJlYW0sIEFyY2hpdmVPdXRwdXRTdHJlYW0pO1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fYWZ0ZXJBcHBlbmQgPSBmdW5jdGlvbihhZSkge1xuICB0aGlzLl9lbnRyaWVzLnB1c2goYWUpO1xuXG4gIGlmIChhZS5nZXRHZW5lcmFsUHVycG9zZUJpdCgpLnVzZXNEYXRhRGVzY3JpcHRvcigpKSB7XG4gICAgdGhpcy5fd3JpdGVEYXRhRGVzY3JpcHRvcihhZSk7XG4gIH1cblxuICB0aGlzLl9hcmNoaXZlLnByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgdGhpcy5fZW50cnkgPSBudWxsO1xuXG4gIGlmICh0aGlzLl9hcmNoaXZlLmZpbmlzaCAmJiAhdGhpcy5fYXJjaGl2ZS5maW5pc2hlZCkge1xuICAgIHRoaXMuX2ZpbmlzaCgpO1xuICB9XG59O1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fYXBwZW5kQnVmZmVyID0gZnVuY3Rpb24oYWUsIHNvdXJjZSwgY2FsbGJhY2spIHtcbiAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICBhZS5zZXRNZXRob2QoY29uc3RhbnRzLk1FVEhPRF9TVE9SRUQpO1xuICB9XG5cbiAgdmFyIG1ldGhvZCA9IGFlLmdldE1ldGhvZCgpO1xuXG4gIGlmIChtZXRob2QgPT09IGNvbnN0YW50cy5NRVRIT0RfU1RPUkVEKSB7XG4gICAgYWUuc2V0U2l6ZShzb3VyY2UubGVuZ3RoKTtcbiAgICBhZS5zZXRDb21wcmVzc2VkU2l6ZShzb3VyY2UubGVuZ3RoKTtcbiAgICBhZS5zZXRDcmMoY3JjMzIudW5zaWduZWQoc291cmNlKSk7XG4gIH1cblxuICB0aGlzLl93cml0ZUxvY2FsRmlsZUhlYWRlcihhZSk7XG5cbiAgaWYgKG1ldGhvZCA9PT0gY29uc3RhbnRzLk1FVEhPRF9TVE9SRUQpIHtcbiAgICB0aGlzLndyaXRlKHNvdXJjZSk7XG4gICAgdGhpcy5fYWZ0ZXJBcHBlbmQoYWUpO1xuICAgIGNhbGxiYWNrKG51bGwsIGFlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAobWV0aG9kID09PSBjb25zdGFudHMuTUVUSE9EX0RFRkxBVEVEKSB7XG4gICAgdGhpcy5fc21hcnRTdHJlYW0oYWUsIGNhbGxiYWNrKS5lbmQoc291cmNlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2sobmV3IEVycm9yKCdjb21wcmVzc2lvbiBtZXRob2QgJyArIG1ldGhvZCArICcgbm90IGltcGxlbWVudGVkJykpO1xuICAgIHJldHVybjtcbiAgfVxufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX2FwcGVuZFN0cmVhbSA9IGZ1bmN0aW9uKGFlLCBzb3VyY2UsIGNhbGxiYWNrKSB7XG4gIGFlLmdldEdlbmVyYWxQdXJwb3NlQml0KCkudXNlRGF0YURlc2NyaXB0b3IodHJ1ZSk7XG4gIGFlLnNldFZlcnNpb25OZWVkZWRUb0V4dHJhY3QoY29uc3RhbnRzLk1JTl9WRVJTSU9OX0RBVEFfREVTQ1JJUFRPUik7XG5cbiAgdGhpcy5fd3JpdGVMb2NhbEZpbGVIZWFkZXIoYWUpO1xuXG4gIHZhciBzbWFydCA9IHRoaXMuX3NtYXJ0U3RyZWFtKGFlLCBjYWxsYmFjayk7XG4gIHNvdXJjZS5vbmNlKCdlcnJvcicsIGZ1bmN0aW9uKGVycikge1xuICAgIHNtYXJ0LmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICBzbWFydC5lbmQoKTtcbiAgfSlcbiAgc291cmNlLnBpcGUoc21hcnQpO1xufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX2RlZmF1bHRzID0gZnVuY3Rpb24obykge1xuICBpZiAodHlwZW9mIG8gIT09ICdvYmplY3QnKSB7XG4gICAgbyA9IHt9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvLnpsaWIgIT09ICdvYmplY3QnKSB7XG4gICAgby56bGliID0ge307XG4gIH1cblxuICBpZiAodHlwZW9mIG8uemxpYi5sZXZlbCAhPT0gJ251bWJlcicpIHtcbiAgICBvLnpsaWIubGV2ZWwgPSBjb25zdGFudHMuWkxJQl9CRVNUX1NQRUVEO1xuICB9XG5cbiAgby5mb3JjZVppcDY0ID0gISFvLmZvcmNlWmlwNjQ7XG4gIG8uZm9yY2VMb2NhbFRpbWUgPSAhIW8uZm9yY2VMb2NhbFRpbWU7XG5cbiAgcmV0dXJuIG87XG59O1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fZmluaXNoID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2FyY2hpdmUuY2VudHJhbE9mZnNldCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMuX2VudHJpZXMuZm9yRWFjaChmdW5jdGlvbihhZSkge1xuICAgIHRoaXMuX3dyaXRlQ2VudHJhbEZpbGVIZWFkZXIoYWUpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHRoaXMuX2FyY2hpdmUuY2VudHJhbExlbmd0aCA9IHRoaXMub2Zmc2V0IC0gdGhpcy5fYXJjaGl2ZS5jZW50cmFsT2Zmc2V0O1xuXG4gIGlmICh0aGlzLmlzWmlwNjQoKSkge1xuICAgIHRoaXMuX3dyaXRlQ2VudHJhbERpcmVjdG9yeVppcDY0KCk7XG4gIH1cblxuICB0aGlzLl93cml0ZUNlbnRyYWxEaXJlY3RvcnlFbmQoKTtcblxuICB0aGlzLl9hcmNoaXZlLnByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgdGhpcy5fYXJjaGl2ZS5maW5pc2ggPSB0cnVlO1xuICB0aGlzLl9hcmNoaXZlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgdGhpcy5lbmQoKTtcbn07XG5cblppcEFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLl9ub3JtYWxpemVFbnRyeSA9IGZ1bmN0aW9uKGFlKSB7XG4gIGlmIChhZS5nZXRNZXRob2QoKSA9PT0gLTEpIHtcbiAgICBhZS5zZXRNZXRob2QoY29uc3RhbnRzLk1FVEhPRF9ERUZMQVRFRCk7XG4gIH1cblxuICBpZiAoYWUuZ2V0TWV0aG9kKCkgPT09IGNvbnN0YW50cy5NRVRIT0RfREVGTEFURUQpIHtcbiAgICBhZS5nZXRHZW5lcmFsUHVycG9zZUJpdCgpLnVzZURhdGFEZXNjcmlwdG9yKHRydWUpO1xuICAgIGFlLnNldFZlcnNpb25OZWVkZWRUb0V4dHJhY3QoY29uc3RhbnRzLk1JTl9WRVJTSU9OX0RBVEFfREVTQ1JJUFRPUik7XG4gIH1cblxuICBpZiAoYWUuZ2V0VGltZSgpID09PSAtMSkge1xuICAgIGFlLnNldFRpbWUobmV3IERhdGUoKSwgdGhpcy5fYXJjaGl2ZS5mb3JjZUxvY2FsVGltZSk7XG4gIH1cblxuICBhZS5fb2Zmc2V0cyA9IHtcbiAgICBmaWxlOiAwLFxuICAgIGRhdGE6IDAsXG4gICAgY29udGVudHM6IDAsXG4gIH07XG59O1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fc21hcnRTdHJlYW0gPSBmdW5jdGlvbihhZSwgY2FsbGJhY2spIHtcbiAgdmFyIGRlZmxhdGUgPSBhZS5nZXRNZXRob2QoKSA9PT0gY29uc3RhbnRzLk1FVEhPRF9ERUZMQVRFRDtcbiAgdmFyIHByb2Nlc3MgPSBkZWZsYXRlID8gbmV3IERlZmxhdGVDUkMzMlN0cmVhbSh0aGlzLm9wdGlvbnMuemxpYikgOiBuZXcgQ1JDMzJTdHJlYW0oKTtcbiAgdmFyIGVycm9yID0gbnVsbDtcblxuICBmdW5jdGlvbiBoYW5kbGVTdHVmZigpIHtcbiAgICB2YXIgZGlnZXN0ID0gcHJvY2Vzcy5kaWdlc3QoKS5yZWFkVUludDMyQkUoMCk7XG4gICAgYWUuc2V0Q3JjKGRpZ2VzdCk7XG4gICAgYWUuc2V0U2l6ZShwcm9jZXNzLnNpemUoKSk7XG4gICAgYWUuc2V0Q29tcHJlc3NlZFNpemUocHJvY2Vzcy5zaXplKHRydWUpKTtcbiAgICB0aGlzLl9hZnRlckFwcGVuZChhZSk7XG4gICAgY2FsbGJhY2soZXJyb3IsIGFlKTtcbiAgfVxuXG4gIHByb2Nlc3Mub25jZSgnZW5kJywgaGFuZGxlU3R1ZmYuYmluZCh0aGlzKSk7XG4gIHByb2Nlc3Mub25jZSgnZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcbiAgICBlcnJvciA9IGVycjtcbiAgfSk7XG5cbiAgcHJvY2Vzcy5waXBlKHRoaXMsIHsgZW5kOiBmYWxzZSB9KTtcblxuICByZXR1cm4gcHJvY2Vzcztcbn07XG5cblppcEFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLl93cml0ZUNlbnRyYWxEaXJlY3RvcnlFbmQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlY29yZHMgPSB0aGlzLl9lbnRyaWVzLmxlbmd0aDtcbiAgdmFyIHNpemUgPSB0aGlzLl9hcmNoaXZlLmNlbnRyYWxMZW5ndGg7XG4gIHZhciBvZmZzZXQgPSB0aGlzLl9hcmNoaXZlLmNlbnRyYWxPZmZzZXQ7XG5cbiAgaWYgKHRoaXMuaXNaaXA2NCgpKSB7XG4gICAgcmVjb3JkcyA9IGNvbnN0YW50cy5aSVA2NF9NQUdJQ19TSE9SVDtcbiAgICBzaXplID0gY29uc3RhbnRzLlpJUDY0X01BR0lDO1xuICAgIG9mZnNldCA9IGNvbnN0YW50cy5aSVA2NF9NQUdJQztcbiAgfVxuXG4gIC8vIHNpZ25hdHVyZVxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKGNvbnN0YW50cy5TSUdfRU9DRCkpO1xuXG4gIC8vIGRpc2sgbnVtYmVyc1xuICB0aGlzLndyaXRlKGNvbnN0YW50cy5TSE9SVF9aRVJPKTtcbiAgdGhpcy53cml0ZShjb25zdGFudHMuU0hPUlRfWkVSTyk7XG5cbiAgLy8gbnVtYmVyIG9mIGVudHJpZXNcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMocmVjb3JkcykpO1xuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0U2hvcnRCeXRlcyhyZWNvcmRzKSk7XG5cbiAgLy8gbGVuZ3RoIGFuZCBsb2NhdGlvbiBvZiBDRFxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKHNpemUpKTtcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhvZmZzZXQpKTtcblxuICAvLyBhcmNoaXZlIGNvbW1lbnRcbiAgdmFyIGNvbW1lbnQgPSB0aGlzLmdldENvbW1lbnQoKTtcbiAgdmFyIGNvbW1lbnRMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aChjb21tZW50KTtcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMoY29tbWVudExlbmd0aCkpO1xuICB0aGlzLndyaXRlKGNvbW1lbnQpO1xufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX3dyaXRlQ2VudHJhbERpcmVjdG9yeVppcDY0ID0gZnVuY3Rpb24oKSB7XG4gIC8vIHNpZ25hdHVyZVxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKGNvbnN0YW50cy5TSUdfWklQNjRfRU9DRCkpO1xuXG4gIC8vIHNpemUgb2YgdGhlIFpJUDY0IEVPQ0QgcmVjb3JkXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRFaWdodEJ5dGVzKDQ0KSk7XG5cbiAgLy8gdmVyc2lvbiBtYWRlIGJ5XG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRTaG9ydEJ5dGVzKGNvbnN0YW50cy5NSU5fVkVSU0lPTl9aSVA2NCkpO1xuXG4gIC8vIHZlcnNpb24gdG8gZXh0cmFjdFxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0U2hvcnRCeXRlcyhjb25zdGFudHMuTUlOX1ZFUlNJT05fWklQNjQpKTtcblxuICAvLyBkaXNrIG51bWJlcnNcbiAgdGhpcy53cml0ZShjb25zdGFudHMuTE9OR19aRVJPKTtcbiAgdGhpcy53cml0ZShjb25zdGFudHMuTE9OR19aRVJPKTtcblxuICAvLyBudW1iZXIgb2YgZW50cmllc1xuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0RWlnaHRCeXRlcyh0aGlzLl9lbnRyaWVzLmxlbmd0aCkpO1xuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0RWlnaHRCeXRlcyh0aGlzLl9lbnRyaWVzLmxlbmd0aCkpO1xuXG4gIC8vIGxlbmd0aCBhbmQgbG9jYXRpb24gb2YgQ0RcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldEVpZ2h0Qnl0ZXModGhpcy5fYXJjaGl2ZS5jZW50cmFsTGVuZ3RoKSk7XG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRFaWdodEJ5dGVzKHRoaXMuX2FyY2hpdmUuY2VudHJhbE9mZnNldCkpO1xuXG4gIC8vIGV4dGVuc2libGUgZGF0YSBzZWN0b3JcbiAgLy8gbm90IGltcGxlbWVudGVkIGF0IHRoaXMgdGltZVxuXG4gIC8vIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRMb25nQnl0ZXMoY29uc3RhbnRzLlNJR19aSVA2NF9FT0NEX0xPQykpO1xuXG4gIC8vIGRpc2sgbnVtYmVyIGhvbGRpbmcgdGhlIFpJUDY0IEVPQ0QgcmVjb3JkXG4gIHRoaXMud3JpdGUoY29uc3RhbnRzLkxPTkdfWkVSTyk7XG5cbiAgLy8gcmVsYXRpdmUgb2Zmc2V0IG9mIHRoZSBaSVA2NCBFT0NEIHJlY29yZFxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0RWlnaHRCeXRlcyh0aGlzLl9hcmNoaXZlLmNlbnRyYWxPZmZzZXQgKyB0aGlzLl9hcmNoaXZlLmNlbnRyYWxMZW5ndGgpKTtcblxuICAvLyB0b3RhbCBudW1iZXIgb2YgZGlza3NcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcygxKSk7XG59O1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5fd3JpdGVDZW50cmFsRmlsZUhlYWRlciA9IGZ1bmN0aW9uKGFlKSB7XG4gIHZhciBncGIgPSBhZS5nZXRHZW5lcmFsUHVycG9zZUJpdCgpO1xuICB2YXIgbWV0aG9kID0gYWUuZ2V0TWV0aG9kKCk7XG4gIHZhciBvZmZzZXRzID0gYWUuX29mZnNldHM7XG5cbiAgdmFyIHNpemUgPSBhZS5nZXRTaXplKCk7XG4gIHZhciBjb21wcmVzc2VkU2l6ZSA9IGFlLmdldENvbXByZXNzZWRTaXplKCk7XG5cbiAgaWYgKGFlLmlzWmlwNjQoKSB8fCBvZmZzZXRzLmZpbGUgPiBjb25zdGFudHMuWklQNjRfTUFHSUMpIHtcbiAgICBzaXplID0gY29uc3RhbnRzLlpJUDY0X01BR0lDO1xuICAgIGNvbXByZXNzZWRTaXplID0gY29uc3RhbnRzLlpJUDY0X01BR0lDO1xuXG4gICAgYWUuc2V0VmVyc2lvbk5lZWRlZFRvRXh0cmFjdChjb25zdGFudHMuTUlOX1ZFUlNJT05fWklQNjQpO1xuXG4gICAgdmFyIGV4dHJhQnVmID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICB6aXBVdGlsLmdldFNob3J0Qnl0ZXMoY29uc3RhbnRzLlpJUDY0X0VYVFJBX0lEKSxcbiAgICAgIHppcFV0aWwuZ2V0U2hvcnRCeXRlcygyNCksXG4gICAgICB6aXBVdGlsLmdldEVpZ2h0Qnl0ZXMoYWUuZ2V0U2l6ZSgpKSxcbiAgICAgIHppcFV0aWwuZ2V0RWlnaHRCeXRlcyhhZS5nZXRDb21wcmVzc2VkU2l6ZSgpKSxcbiAgICAgIHppcFV0aWwuZ2V0RWlnaHRCeXRlcyhvZmZzZXRzLmZpbGUpXG4gICAgXSwgMjgpO1xuXG4gICAgYWUuc2V0RXh0cmEoZXh0cmFCdWYpO1xuICB9XG5cbiAgLy8gc2lnbmF0dXJlXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRMb25nQnl0ZXMoY29uc3RhbnRzLlNJR19DRkgpKTtcblxuICAvLyB2ZXJzaW9uIG1hZGUgYnlcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMoKGFlLmdldFBsYXRmb3JtKCkgPDwgOCkgfCBjb25zdGFudHMuVkVSU0lPTl9NQURFQlkpKTtcblxuICAvLyB2ZXJzaW9uIHRvIGV4dHJhY3QgYW5kIGdlbmVyYWwgYml0IGZsYWdcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMoYWUuZ2V0VmVyc2lvbk5lZWRlZFRvRXh0cmFjdCgpKSk7XG4gIHRoaXMud3JpdGUoZ3BiLmVuY29kZSgpKTtcblxuICAvLyBjb21wcmVzc2lvbiBtZXRob2RcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMobWV0aG9kKSk7XG5cbiAgLy8gZGF0ZXRpbWVcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRUaW1lRG9zKCkpKTtcblxuICAvLyBjcmMzMiBjaGVja3N1bVxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKGFlLmdldENyYygpKSk7XG5cbiAgLy8gc2l6ZXNcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhjb21wcmVzc2VkU2l6ZSkpO1xuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKHNpemUpKTtcblxuICB2YXIgbmFtZSA9IGFlLmdldE5hbWUoKTtcbiAgdmFyIGNvbW1lbnQgPSBhZS5nZXRDb21tZW50KCk7XG4gIHZhciBleHRyYSA9IGFlLmdldENlbnRyYWxEaXJlY3RvcnlFeHRyYSgpO1xuXG4gIGlmIChncGIudXNlc1VURjhGb3JOYW1lcygpKSB7XG4gICAgbmFtZSA9IEJ1ZmZlci5mcm9tKG5hbWUpO1xuICAgIGNvbW1lbnQgPSBCdWZmZXIuZnJvbShjb21tZW50KTtcbiAgfVxuXG4gIC8vIG5hbWUgbGVuZ3RoXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRTaG9ydEJ5dGVzKG5hbWUubGVuZ3RoKSk7XG5cbiAgLy8gZXh0cmEgbGVuZ3RoXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRTaG9ydEJ5dGVzKGV4dHJhLmxlbmd0aCkpO1xuXG4gIC8vIGNvbW1lbnRzIGxlbmd0aFxuICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0U2hvcnRCeXRlcyhjb21tZW50Lmxlbmd0aCkpO1xuXG4gIC8vIGRpc2sgbnVtYmVyIHN0YXJ0XG4gIHRoaXMud3JpdGUoY29uc3RhbnRzLlNIT1JUX1pFUk8pO1xuXG4gIC8vIGludGVybmFsIGF0dHJpYnV0ZXNcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMoYWUuZ2V0SW50ZXJuYWxBdHRyaWJ1dGVzKCkpKTtcblxuICAvLyBleHRlcm5hbCBhdHRyaWJ1dGVzXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRMb25nQnl0ZXMoYWUuZ2V0RXh0ZXJuYWxBdHRyaWJ1dGVzKCkpKTtcblxuICAvLyByZWxhdGl2ZSBvZmZzZXQgb2YgTEZIXG4gIGlmIChvZmZzZXRzLmZpbGUgPiBjb25zdGFudHMuWklQNjRfTUFHSUMpIHtcbiAgICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKGNvbnN0YW50cy5aSVA2NF9NQUdJQykpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud3JpdGUoemlwVXRpbC5nZXRMb25nQnl0ZXMob2Zmc2V0cy5maWxlKSk7XG4gIH1cblxuICAvLyBuYW1lXG4gIHRoaXMud3JpdGUobmFtZSk7XG5cbiAgLy8gZXh0cmFcbiAgdGhpcy53cml0ZShleHRyYSk7XG5cbiAgLy8gY29tbWVudFxuICB0aGlzLndyaXRlKGNvbW1lbnQpO1xufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX3dyaXRlRGF0YURlc2NyaXB0b3IgPSBmdW5jdGlvbihhZSkge1xuICAvLyBzaWduYXR1cmVcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhjb25zdGFudHMuU0lHX0REKSk7XG5cbiAgLy8gY3JjMzIgY2hlY2tzdW1cbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRDcmMoKSkpO1xuXG4gIC8vIHNpemVzXG4gIGlmIChhZS5pc1ppcDY0KCkpIHtcbiAgICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0RWlnaHRCeXRlcyhhZS5nZXRDb21wcmVzc2VkU2l6ZSgpKSk7XG4gICAgdGhpcy53cml0ZSh6aXBVdGlsLmdldEVpZ2h0Qnl0ZXMoYWUuZ2V0U2l6ZSgpKSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRDb21wcmVzc2VkU2l6ZSgpKSk7XG4gICAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRTaXplKCkpKTtcbiAgfVxufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuX3dyaXRlTG9jYWxGaWxlSGVhZGVyID0gZnVuY3Rpb24oYWUpIHtcbiAgdmFyIGdwYiA9IGFlLmdldEdlbmVyYWxQdXJwb3NlQml0KCk7XG4gIHZhciBtZXRob2QgPSBhZS5nZXRNZXRob2QoKTtcbiAgdmFyIG5hbWUgPSBhZS5nZXROYW1lKCk7XG4gIHZhciBleHRyYSA9IGFlLmdldExvY2FsRmlsZURhdGFFeHRyYSgpO1xuXG4gIGlmIChhZS5pc1ppcDY0KCkpIHtcbiAgICBncGIudXNlRGF0YURlc2NyaXB0b3IodHJ1ZSk7XG4gICAgYWUuc2V0VmVyc2lvbk5lZWRlZFRvRXh0cmFjdChjb25zdGFudHMuTUlOX1ZFUlNJT05fWklQNjQpO1xuICB9XG5cbiAgaWYgKGdwYi51c2VzVVRGOEZvck5hbWVzKCkpIHtcbiAgICBuYW1lID0gQnVmZmVyLmZyb20obmFtZSk7XG4gIH1cblxuICBhZS5fb2Zmc2V0cy5maWxlID0gdGhpcy5vZmZzZXQ7XG5cbiAgLy8gc2lnbmF0dXJlXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRMb25nQnl0ZXMoY29uc3RhbnRzLlNJR19MRkgpKTtcblxuICAvLyB2ZXJzaW9uIHRvIGV4dHJhY3QgYW5kIGdlbmVyYWwgYml0IGZsYWdcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMoYWUuZ2V0VmVyc2lvbk5lZWRlZFRvRXh0cmFjdCgpKSk7XG4gIHRoaXMud3JpdGUoZ3BiLmVuY29kZSgpKTtcblxuICAvLyBjb21wcmVzc2lvbiBtZXRob2RcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldFNob3J0Qnl0ZXMobWV0aG9kKSk7XG5cbiAgLy8gZGF0ZXRpbWVcbiAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRUaW1lRG9zKCkpKTtcblxuICBhZS5fb2Zmc2V0cy5kYXRhID0gdGhpcy5vZmZzZXQ7XG5cbiAgLy8gY3JjMzIgY2hlY2tzdW0gYW5kIHNpemVzXG4gIGlmIChncGIudXNlc0RhdGFEZXNjcmlwdG9yKCkpIHtcbiAgICB0aGlzLndyaXRlKGNvbnN0YW50cy5MT05HX1pFUk8pO1xuICAgIHRoaXMud3JpdGUoY29uc3RhbnRzLkxPTkdfWkVSTyk7XG4gICAgdGhpcy53cml0ZShjb25zdGFudHMuTE9OR19aRVJPKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLndyaXRlKHppcFV0aWwuZ2V0TG9uZ0J5dGVzKGFlLmdldENyYygpKSk7XG4gICAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRDb21wcmVzc2VkU2l6ZSgpKSk7XG4gICAgdGhpcy53cml0ZSh6aXBVdGlsLmdldExvbmdCeXRlcyhhZS5nZXRTaXplKCkpKTtcbiAgfVxuXG4gIC8vIG5hbWUgbGVuZ3RoXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRTaG9ydEJ5dGVzKG5hbWUubGVuZ3RoKSk7XG5cbiAgLy8gZXh0cmEgbGVuZ3RoXG4gIHRoaXMud3JpdGUoemlwVXRpbC5nZXRTaG9ydEJ5dGVzKGV4dHJhLmxlbmd0aCkpO1xuXG4gIC8vIG5hbWVcbiAgdGhpcy53cml0ZShuYW1lKTtcblxuICAvLyBleHRyYVxuICB0aGlzLndyaXRlKGV4dHJhKTtcblxuICBhZS5fb2Zmc2V0cy5jb250ZW50cyA9IHRoaXMub2Zmc2V0O1xufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuZ2V0Q29tbWVudCA9IGZ1bmN0aW9uKGNvbW1lbnQpIHtcbiAgcmV0dXJuIHRoaXMuX2FyY2hpdmUuY29tbWVudCAhPT0gbnVsbCA/IHRoaXMuX2FyY2hpdmUuY29tbWVudCA6ICcnO1xufTtcblxuWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS5wcm90b3R5cGUuaXNaaXA2NCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJjaGl2ZS5mb3JjZVppcDY0IHx8IHRoaXMuX2VudHJpZXMubGVuZ3RoID4gY29uc3RhbnRzLlpJUDY0X01BR0lDX1NIT1JUIHx8IHRoaXMuX2FyY2hpdmUuY2VudHJhbExlbmd0aCA+IGNvbnN0YW50cy5aSVA2NF9NQUdJQyB8fCB0aGlzLl9hcmNoaXZlLmNlbnRyYWxPZmZzZXQgPiBjb25zdGFudHMuWklQNjRfTUFHSUM7XG59O1xuXG5aaXBBcmNoaXZlT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5zZXRDb21tZW50ID0gZnVuY3Rpb24oY29tbWVudCkge1xuICB0aGlzLl9hcmNoaXZlLmNvbW1lbnQgPSBjb21tZW50O1xufTtcbiIsIi8qKlxuICogbm9kZS1jb21wcmVzcy1jb21tb25zXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtY29tcHJlc3MtY29tbW9ucy9ibG9iL21hc3Rlci9MSUNFTlNFLU1JVFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXJjaGl2ZUVudHJ5OiByZXF1aXJlKCcuL2FyY2hpdmVycy9hcmNoaXZlLWVudHJ5JyksXG4gIFppcEFyY2hpdmVFbnRyeTogcmVxdWlyZSgnLi9hcmNoaXZlcnMvemlwL3ppcC1hcmNoaXZlLWVudHJ5JyksXG4gIEFyY2hpdmVPdXRwdXRTdHJlYW06IHJlcXVpcmUoJy4vYXJjaGl2ZXJzL2FyY2hpdmUtb3V0cHV0LXN0cmVhbScpLFxuICBaaXBBcmNoaXZlT3V0cHV0U3RyZWFtOiByZXF1aXJlKCcuL2FyY2hpdmVycy96aXAvemlwLWFyY2hpdmUtb3V0cHV0LXN0cmVhbScpXG59OyIsIi8qKlxuICogbm9kZS1jb21wcmVzcy1jb21tb25zXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtY29tcHJlc3MtY29tbW9ucy9ibG9iL21hc3Rlci9MSUNFTlNFLU1JVFxuICovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJykuU3RyZWFtO1xudmFyIFBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuUGFzc1Rocm91Z2g7XG5cbnZhciB1dGlsID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxudXRpbC5pc1N0cmVhbSA9IGZ1bmN0aW9uKHNvdXJjZSkge1xuICByZXR1cm4gc291cmNlIGluc3RhbmNlb2YgU3RyZWFtO1xufTtcblxudXRpbC5ub3JtYWxpemVJbnB1dFNvdXJjZSA9IGZ1bmN0aW9uKHNvdXJjZSkge1xuICBpZiAoc291cmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzb3VyY2UpO1xuICB9IGVsc2UgaWYgKHV0aWwuaXNTdHJlYW0oc291cmNlKSAmJiAhc291cmNlLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdmFyIG5vcm1hbGl6ZWQgPSBuZXcgUGFzc1Rocm91Z2goKTtcbiAgICBzb3VyY2UucGlwZShub3JtYWxpemVkKTtcblxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHggPSBmbih4c1tpXSwgaSk7XG4gICAgICAgIGlmIChpc0FycmF5KHgpKSByZXMucHVzaC5hcHBseShyZXMsIHgpO1xuICAgICAgICBlbHNlIHJlcy5wdXNoKHgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuXG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICBpZiAoQXJyYXkuaXNBcnJheSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7XG4gIH1cbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGFyZykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7XG59XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcblxuZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGwgPSBpc051bGw7XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5leHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGwgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8fCAgLy8gRVM2IHN5bWJvbFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSBCdWZmZXIuaXNCdWZmZXI7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cbiIsIi8qISBjcmMzMi5qcyAoQykgMjAxNC1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKiB2aW06IHNldCB0cz0yOiAqL1xuLypleHBvcnRlZCBDUkMzMiAqL1xudmFyIENSQzMyO1xuKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG5cdC8qanNoaW50IGlnbm9yZTpzdGFydCAqL1xuXHQvKmVzbGludC1kaXNhYmxlICovXG5cdGlmKHR5cGVvZiBET19OT1RfRVhQT1JUX0NSQyA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRpZignb2JqZWN0JyA9PT0gdHlwZW9mIGV4cG9ydHMpIHtcblx0XHRcdGZhY3RvcnkoZXhwb3J0cyk7XG5cdFx0fSBlbHNlIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQpIHtcblx0XHRcdGRlZmluZShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHZhciBtb2R1bGUgPSB7fTtcblx0XHRcdFx0ZmFjdG9yeShtb2R1bGUpO1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZhY3RvcnkoQ1JDMzIgPSB7fSk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGZhY3RvcnkoQ1JDMzIgPSB7fSk7XG5cdH1cblx0Lyplc2xpbnQtZW5hYmxlICovXG5cdC8qanNoaW50IGlnbm9yZTplbmQgKi9cbn0oZnVuY3Rpb24oQ1JDMzIpIHtcbkNSQzMyLnZlcnNpb24gPSAnMS4yLjInO1xuLypnbG9iYWwgSW50MzJBcnJheSAqL1xuZnVuY3Rpb24gc2lnbmVkX2NyY190YWJsZSgpIHtcblx0dmFyIGMgPSAwLCB0YWJsZSA9IG5ldyBBcnJheSgyNTYpO1xuXG5cdGZvcih2YXIgbiA9MDsgbiAhPSAyNTY7ICsrbil7XG5cdFx0YyA9IG47XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0dGFibGVbbl0gPSBjO1xuXHR9XG5cblx0cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IG5ldyBJbnQzMkFycmF5KHRhYmxlKSA6IHRhYmxlO1xufVxuXG52YXIgVDAgPSBzaWduZWRfY3JjX3RhYmxlKCk7XG5mdW5jdGlvbiBzbGljZV9ieV8xNl90YWJsZXMoVCkge1xuXHR2YXIgYyA9IDAsIHYgPSAwLCBuID0gMCwgdGFibGUgPSB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgSW50MzJBcnJheSg0MDk2KSA6IG5ldyBBcnJheSg0MDk2KSA7XG5cblx0Zm9yKG4gPSAwOyBuICE9IDI1NjsgKytuKSB0YWJsZVtuXSA9IFRbbl07XG5cdGZvcihuID0gMDsgbiAhPSAyNTY7ICsrbikge1xuXHRcdHYgPSBUW25dO1xuXHRcdGZvcihjID0gMjU2ICsgbjsgYyA8IDQwOTY7IGMgKz0gMjU2KSB2ID0gdGFibGVbY10gPSAodiA+Pj4gOCkgXiBUW3YgJiAweEZGXTtcblx0fVxuXHR2YXIgb3V0ID0gW107XG5cdGZvcihuID0gMTsgbiAhPSAxNjsgKytuKSBvdXRbbiAtIDFdID0gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gdGFibGUuc3ViYXJyYXkobiAqIDI1NiwgbiAqIDI1NiArIDI1NikgOiB0YWJsZS5zbGljZShuICogMjU2LCBuICogMjU2ICsgMjU2KTtcblx0cmV0dXJuIG91dDtcbn1cbnZhciBUVCA9IHNsaWNlX2J5XzE2X3RhYmxlcyhUMCk7XG52YXIgVDEgPSBUVFswXSwgIFQyID0gVFRbMV0sICBUMyA9IFRUWzJdLCAgVDQgPSBUVFszXSwgIFQ1ID0gVFRbNF07XG52YXIgVDYgPSBUVFs1XSwgIFQ3ID0gVFRbNl0sICBUOCA9IFRUWzddLCAgVDkgPSBUVFs4XSwgIFRhID0gVFRbOV07XG52YXIgVGIgPSBUVFsxMF0sIFRjID0gVFRbMTFdLCBUZCA9IFRUWzEyXSwgVGUgPSBUVFsxM10sIFRmID0gVFRbMTRdO1xuZnVuY3Rpb24gY3JjMzJfYnN0cihic3RyLCBzZWVkKSB7XG5cdHZhciBDID0gc2VlZCBeIC0xO1xuXHRmb3IodmFyIGkgPSAwLCBMID0gYnN0ci5sZW5ndGg7IGkgPCBMOykgQyA9IChDPj4+OCkgXiBUMFsoQ15ic3RyLmNoYXJDb2RlQXQoaSsrKSkmMHhGRl07XG5cdHJldHVybiB+Qztcbn1cblxuZnVuY3Rpb24gY3JjMzJfYnVmKEIsIHNlZWQpIHtcblx0dmFyIEMgPSBzZWVkIF4gLTEsIEwgPSBCLmxlbmd0aCAtIDE1LCBpID0gMDtcblx0Zm9yKDsgaSA8IEw7KSBDID1cblx0XHRUZltCW2krK10gXiAoQyAmIDI1NSldIF5cblx0XHRUZVtCW2krK10gXiAoKEMgPj4gOCkgJiAyNTUpXSBeXG5cdFx0VGRbQltpKytdIF4gKChDID4+IDE2KSAmIDI1NSldIF5cblx0XHRUY1tCW2krK10gXiAoQyA+Pj4gMjQpXSBeXG5cdFx0VGJbQltpKytdXSBeIFRhW0JbaSsrXV0gXiBUOVtCW2krK11dIF4gVDhbQltpKytdXSBeXG5cdFx0VDdbQltpKytdXSBeIFQ2W0JbaSsrXV0gXiBUNVtCW2krK11dIF4gVDRbQltpKytdXSBeXG5cdFx0VDNbQltpKytdXSBeIFQyW0JbaSsrXV0gXiBUMVtCW2krK11dIF4gVDBbQltpKytdXTtcblx0TCArPSAxNTtcblx0d2hpbGUoaSA8IEwpIEMgPSAoQz4+PjgpIF4gVDBbKENeQltpKytdKSYweEZGXTtcblx0cmV0dXJuIH5DO1xufVxuXG5mdW5jdGlvbiBjcmMzMl9zdHIoc3RyLCBzZWVkKSB7XG5cdHZhciBDID0gc2VlZCBeIC0xO1xuXHRmb3IodmFyIGkgPSAwLCBMID0gc3RyLmxlbmd0aCwgYyA9IDAsIGQgPSAwOyBpIDwgTDspIHtcblx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRpZihjIDwgMHg4MCkge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQ15jKSYweEZGXTtcblx0XHR9IGVsc2UgaWYoYyA8IDB4ODAwKSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDE5MnwoKGM+PjYpJjMxKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGMmNjMpKSkmMHhGRl07XG5cdFx0fSBlbHNlIGlmKGMgPj0gMHhEODAwICYmIGMgPCAweEUwMDApIHtcblx0XHRcdGMgPSAoYyYxMDIzKSs2NDsgZCA9IHN0ci5jaGFyQ29kZUF0KGkrKykmMTAyMztcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMjQwfCgoYz4+OCkmNykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoYz4+MikmNjMpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGQ+PjYpJjE1KXwoKGMmMyk8PDQpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoZCY2MykpKSYweEZGXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgyMjR8KChjPj4xMikmMTUpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGM+PjYpJjYzKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGMmNjMpKSkmMHhGRl07XG5cdFx0fVxuXHR9XG5cdHJldHVybiB+Qztcbn1cbkNSQzMyLnRhYmxlID0gVDA7XG4vLyAkRmxvd0lnbm9yZVxuQ1JDMzIuYnN0ciA9IGNyYzMyX2JzdHI7XG4vLyAkRmxvd0lnbm9yZVxuQ1JDMzIuYnVmID0gY3JjMzJfYnVmO1xuLy8gJEZsb3dJZ25vcmVcbkNSQzMyLnN0ciA9IGNyYzMyX3N0cjtcbn0pKTtcbiIsIi8qKlxuICogbm9kZS1jcmMzMi1zdHJlYW1cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvbm9kZS1jcmMzMi1zdHJlYW0vYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVRcbiAqL1xuXG4gJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7VHJhbnNmb3JtfSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpO1xuXG5jb25zdCBjcmMzMiA9IHJlcXVpcmUoJ2NyYy0zMicpO1xuXG5jbGFzcyBDUkMzMlN0cmVhbSBleHRlbmRzIFRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLmNoZWNrc3VtID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpO1xuICAgIHRoaXMuY2hlY2tzdW0ud3JpdGVJbnQzMkJFKDAsIDApO1xuXG4gICAgdGhpcy5yYXdTaXplID0gMDtcbiAgfVxuXG4gIF90cmFuc2Zvcm0oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgIGlmIChjaHVuaykge1xuICAgICAgdGhpcy5jaGVja3N1bSA9IGNyYzMyLmJ1ZihjaHVuaywgdGhpcy5jaGVja3N1bSkgPj4+IDA7XG4gICAgICB0aGlzLnJhd1NpemUgKz0gY2h1bmsubGVuZ3RoO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKG51bGwsIGNodW5rKTtcbiAgfVxuXG4gIGRpZ2VzdChlbmNvZGluZykge1xuICAgIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpO1xuICAgIGNoZWNrc3VtLndyaXRlVUludDMyQkUodGhpcy5jaGVja3N1bSA+Pj4gMCwgMCk7XG4gICAgcmV0dXJuIGVuY29kaW5nID8gY2hlY2tzdW0udG9TdHJpbmcoZW5jb2RpbmcpIDogY2hlY2tzdW07XG4gIH1cblxuICBoZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlnZXN0KCdoZXgnKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yYXdTaXplO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ1JDMzJTdHJlYW07XG4iLCIvKipcbiAqIG5vZGUtY3JjMzItc3RyZWFtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtY3JjMzItc3RyZWFtL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7RGVmbGF0ZVJhd30gPSByZXF1aXJlKCd6bGliJyk7XG5cbmNvbnN0IGNyYzMyID0gcmVxdWlyZSgnY3JjLTMyJyk7XG5cbmNsYXNzIERlZmxhdGVDUkMzMlN0cmVhbSBleHRlbmRzIERlZmxhdGVSYXcge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmNoZWNrc3VtID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpO1xuICAgIHRoaXMuY2hlY2tzdW0ud3JpdGVJbnQzMkJFKDAsIDApO1xuXG4gICAgdGhpcy5yYXdTaXplID0gMDtcbiAgICB0aGlzLmNvbXByZXNzZWRTaXplID0gMDtcbiAgfVxuXG4gIHB1c2goY2h1bmssIGVuY29kaW5nKSB7XG4gICAgaWYgKGNodW5rKSB7XG4gICAgICB0aGlzLmNvbXByZXNzZWRTaXplICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIucHVzaChjaHVuaywgZW5jb2RpbmcpO1xuICB9XG5cbiAgX3RyYW5zZm9ybShjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGNodW5rKSB7XG4gICAgICB0aGlzLmNoZWNrc3VtID0gY3JjMzIuYnVmKGNodW5rLCB0aGlzLmNoZWNrc3VtKSA+Pj4gMDtcbiAgICAgIHRoaXMucmF3U2l6ZSArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuXG4gICAgc3VwZXIuX3RyYW5zZm9ybShjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKVxuICB9XG5cbiAgZGlnZXN0KGVuY29kaW5nKSB7XG4gICAgY29uc3QgY2hlY2tzdW0gPSBCdWZmZXIuYWxsb2NVbnNhZmUoNCk7XG4gICAgY2hlY2tzdW0ud3JpdGVVSW50MzJCRSh0aGlzLmNoZWNrc3VtID4+PiAwLCAwKTtcbiAgICByZXR1cm4gZW5jb2RpbmcgPyBjaGVja3N1bS50b1N0cmluZyhlbmNvZGluZykgOiBjaGVja3N1bTtcbiAgfVxuXG4gIGhleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaWdlc3QoJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBzaXplKGNvbXByZXNzZWQgPSBmYWxzZSkge1xuICAgIGlmIChjb21wcmVzc2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wcmVzc2VkU2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmF3U2l6ZTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEZWZsYXRlQ1JDMzJTdHJlYW07XG4iLCIvKipcbiAqIG5vZGUtY3JjMzItc3RyZWFtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IENocmlzIFRhbGtpbmd0b24sIGNvbnRyaWJ1dG9ycy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaXZlcmpzL25vZGUtY3JjMzItc3RyZWFtL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ1JDMzJTdHJlYW06IHJlcXVpcmUoJy4vY3JjMzItc3RyZWFtJyksXG4gIERlZmxhdGVDUkMzMlN0cmVhbTogcmVxdWlyZSgnLi9kZWZsYXRlLWNyYzMyLXN0cmVhbScpXG59XG4iLCJ2YXIgb25jZSA9IHJlcXVpcmUoJ29uY2UnKTtcblxudmFyIG5vb3AgPSBmdW5jdGlvbigpIHt9O1xuXG52YXIgaXNSZXF1ZXN0ID0gZnVuY3Rpb24oc3RyZWFtKSB7XG5cdHJldHVybiBzdHJlYW0uc2V0SGVhZGVyICYmIHR5cGVvZiBzdHJlYW0uYWJvcnQgPT09ICdmdW5jdGlvbic7XG59O1xuXG52YXIgaXNDaGlsZFByb2Nlc3MgPSBmdW5jdGlvbihzdHJlYW0pIHtcblx0cmV0dXJuIHN0cmVhbS5zdGRpbyAmJiBBcnJheS5pc0FycmF5KHN0cmVhbS5zdGRpbykgJiYgc3RyZWFtLnN0ZGlvLmxlbmd0aCA9PT0gM1xufTtcblxudmFyIGVvcyA9IGZ1bmN0aW9uKHN0cmVhbSwgb3B0cywgY2FsbGJhY2spIHtcblx0aWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW9zKHN0cmVhbSwgbnVsbCwgb3B0cyk7XG5cdGlmICghb3B0cykgb3B0cyA9IHt9O1xuXG5cdGNhbGxiYWNrID0gb25jZShjYWxsYmFjayB8fCBub29wKTtcblxuXHR2YXIgd3MgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG5cdHZhciBycyA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblx0dmFyIHJlYWRhYmxlID0gb3B0cy5yZWFkYWJsZSB8fCAob3B0cy5yZWFkYWJsZSAhPT0gZmFsc2UgJiYgc3RyZWFtLnJlYWRhYmxlKTtcblx0dmFyIHdyaXRhYmxlID0gb3B0cy53cml0YWJsZSB8fCAob3B0cy53cml0YWJsZSAhPT0gZmFsc2UgJiYgc3RyZWFtLndyaXRhYmxlKTtcblx0dmFyIGNhbmNlbGxlZCA9IGZhbHNlO1xuXG5cdHZhciBvbmxlZ2FjeWZpbmlzaCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICghc3RyZWFtLndyaXRhYmxlKSBvbmZpbmlzaCgpO1xuXHR9O1xuXG5cdHZhciBvbmZpbmlzaCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdyaXRhYmxlID0gZmFsc2U7XG5cdFx0aWYgKCFyZWFkYWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuXHR9O1xuXG5cdHZhciBvbmVuZCA9IGZ1bmN0aW9uKCkge1xuXHRcdHJlYWRhYmxlID0gZmFsc2U7XG5cdFx0aWYgKCF3cml0YWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuXHR9O1xuXG5cdHZhciBvbmV4aXQgPSBmdW5jdGlvbihleGl0Q29kZSkge1xuXHRcdGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBleGl0Q29kZSA/IG5ldyBFcnJvcignZXhpdGVkIHdpdGggZXJyb3IgY29kZTogJyArIGV4aXRDb2RlKSA6IG51bGwpO1xuXHR9O1xuXG5cdHZhciBvbmVycm9yID0gZnVuY3Rpb24oZXJyKSB7XG5cdFx0Y2FsbGJhY2suY2FsbChzdHJlYW0sIGVycik7XG5cdH07XG5cblx0dmFyIG9uY2xvc2UgPSBmdW5jdGlvbigpIHtcblx0XHRwcm9jZXNzLm5leHRUaWNrKG9uY2xvc2VuZXh0dGljayk7XG5cdH07XG5cblx0dmFyIG9uY2xvc2VuZXh0dGljayA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmIChjYW5jZWxsZWQpIHJldHVybjtcblx0XHRpZiAocmVhZGFibGUgJiYgIShycyAmJiAocnMuZW5kZWQgJiYgIXJzLmRlc3Ryb3llZCkpKSByZXR1cm4gY2FsbGJhY2suY2FsbChzdHJlYW0sIG5ldyBFcnJvcigncHJlbWF0dXJlIGNsb3NlJykpO1xuXHRcdGlmICh3cml0YWJsZSAmJiAhKHdzICYmICh3cy5lbmRlZCAmJiAhd3MuZGVzdHJveWVkKSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVycm9yKCdwcmVtYXR1cmUgY2xvc2UnKSk7XG5cdH07XG5cblx0dmFyIG9ucmVxdWVzdCA9IGZ1bmN0aW9uKCkge1xuXHRcdHN0cmVhbS5yZXEub24oJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblx0fTtcblxuXHRpZiAoaXNSZXF1ZXN0KHN0cmVhbSkpIHtcblx0XHRzdHJlYW0ub24oJ2NvbXBsZXRlJywgb25maW5pc2gpO1xuXHRcdHN0cmVhbS5vbignYWJvcnQnLCBvbmNsb3NlKTtcblx0XHRpZiAoc3RyZWFtLnJlcSkgb25yZXF1ZXN0KCk7XG5cdFx0ZWxzZSBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpO1xuXHR9IGVsc2UgaWYgKHdyaXRhYmxlICYmICF3cykgeyAvLyBsZWdhY3kgc3RyZWFtc1xuXHRcdHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuXHRcdHN0cmVhbS5vbignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG5cdH1cblxuXHRpZiAoaXNDaGlsZFByb2Nlc3Moc3RyZWFtKSkgc3RyZWFtLm9uKCdleGl0Jywgb25leGl0KTtcblxuXHRzdHJlYW0ub24oJ2VuZCcsIG9uZW5kKTtcblx0c3RyZWFtLm9uKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cdGlmIChvcHRzLmVycm9yICE9PSBmYWxzZSkgc3RyZWFtLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXHRzdHJlYW0ub24oJ2Nsb3NlJywgb25jbG9zZSk7XG5cblx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdGNhbmNlbGxlZCA9IHRydWU7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjb21wbGV0ZScsIG9uZmluaXNoKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgb25jbG9zZSk7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdyZXF1ZXN0Jywgb25yZXF1ZXN0KTtcblx0XHRpZiAoc3RyZWFtLnJlcSkgc3RyZWFtLnJlcS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuXHRcdHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuXHRcdHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdleGl0Jywgb25leGl0KTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXHR9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBlb3M7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2ZzJykuY29uc3RhbnRzIHx8IHJlcXVpcmUoJ2NvbnN0YW50cycpXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlYWxwYXRoXG5yZWFscGF0aC5yZWFscGF0aCA9IHJlYWxwYXRoXG5yZWFscGF0aC5zeW5jID0gcmVhbHBhdGhTeW5jXG5yZWFscGF0aC5yZWFscGF0aFN5bmMgPSByZWFscGF0aFN5bmNcbnJlYWxwYXRoLm1vbmtleXBhdGNoID0gbW9ua2V5cGF0Y2hcbnJlYWxwYXRoLnVubW9ua2V5cGF0Y2ggPSB1bm1vbmtleXBhdGNoXG5cbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJylcbnZhciBvcmlnUmVhbHBhdGggPSBmcy5yZWFscGF0aFxudmFyIG9yaWdSZWFscGF0aFN5bmMgPSBmcy5yZWFscGF0aFN5bmNcblxudmFyIHZlcnNpb24gPSBwcm9jZXNzLnZlcnNpb25cbnZhciBvayA9IC9edlswLTVdXFwuLy50ZXN0KHZlcnNpb24pXG52YXIgb2xkID0gcmVxdWlyZSgnLi9vbGQuanMnKVxuXG5mdW5jdGlvbiBuZXdFcnJvciAoZXIpIHtcbiAgcmV0dXJuIGVyICYmIGVyLnN5c2NhbGwgPT09ICdyZWFscGF0aCcgJiYgKFxuICAgIGVyLmNvZGUgPT09ICdFTE9PUCcgfHxcbiAgICBlci5jb2RlID09PSAnRU5PTUVNJyB8fFxuICAgIGVyLmNvZGUgPT09ICdFTkFNRVRPT0xPTkcnXG4gIClcbn1cblxuZnVuY3Rpb24gcmVhbHBhdGggKHAsIGNhY2hlLCBjYikge1xuICBpZiAob2spIHtcbiAgICByZXR1cm4gb3JpZ1JlYWxwYXRoKHAsIGNhY2hlLCBjYilcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2FjaGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNhY2hlXG4gICAgY2FjaGUgPSBudWxsXG4gIH1cbiAgb3JpZ1JlYWxwYXRoKHAsIGNhY2hlLCBmdW5jdGlvbiAoZXIsIHJlc3VsdCkge1xuICAgIGlmIChuZXdFcnJvcihlcikpIHtcbiAgICAgIG9sZC5yZWFscGF0aChwLCBjYWNoZSwgY2IpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKGVyLCByZXN1bHQpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFscGF0aFN5bmMgKHAsIGNhY2hlKSB7XG4gIGlmIChvaykge1xuICAgIHJldHVybiBvcmlnUmVhbHBhdGhTeW5jKHAsIGNhY2hlKVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gb3JpZ1JlYWxwYXRoU3luYyhwLCBjYWNoZSlcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAobmV3RXJyb3IoZXIpKSB7XG4gICAgICByZXR1cm4gb2xkLnJlYWxwYXRoU3luYyhwLCBjYWNoZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbW9ua2V5cGF0Y2ggKCkge1xuICBmcy5yZWFscGF0aCA9IHJlYWxwYXRoXG4gIGZzLnJlYWxwYXRoU3luYyA9IHJlYWxwYXRoU3luY1xufVxuXG5mdW5jdGlvbiB1bm1vbmtleXBhdGNoICgpIHtcbiAgZnMucmVhbHBhdGggPSBvcmlnUmVhbHBhdGhcbiAgZnMucmVhbHBhdGhTeW5jID0gb3JpZ1JlYWxwYXRoU3luY1xufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBwYXRoTW9kdWxlID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuXG4vLyBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHJlYWxwYXRoLCBwb3J0ZWQgZnJvbSBub2RlIHByZS12NlxuXG52YXIgREVCVUcgPSBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmIC9mcy8udGVzdChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKTtcblxuZnVuY3Rpb24gcmV0aHJvdygpIHtcbiAgLy8gT25seSBlbmFibGUgaW4gZGVidWcgbW9kZS4gQSBiYWNrdHJhY2UgdXNlcyB+MTAwMCBieXRlcyBvZiBoZWFwIHNwYWNlIGFuZFxuICAvLyBpcyBmYWlybHkgc2xvdyB0byBnZW5lcmF0ZS5cbiAgdmFyIGNhbGxiYWNrO1xuICBpZiAoREVCVUcpIHtcbiAgICB2YXIgYmFja3RyYWNlID0gbmV3IEVycm9yO1xuICAgIGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbiAgfSBlbHNlXG4gICAgY2FsbGJhY2sgPSBtaXNzaW5nQ2FsbGJhY2s7XG5cbiAgcmV0dXJuIGNhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soZXJyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgYmFja3RyYWNlLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgIGVyciA9IGJhY2t0cmFjZTtcbiAgICAgIG1pc3NpbmdDYWxsYmFjayhlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1pc3NpbmdDYWxsYmFjayhlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKVxuICAgICAgICB0aHJvdyBlcnI7ICAvLyBGb3Jnb3QgYSBjYWxsYmFjayBidXQgZG9uJ3Qga25vdyB3aGVyZT8gVXNlIE5PREVfREVCVUc9ZnNcbiAgICAgIGVsc2UgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgICAgdmFyIG1zZyA9ICdmczogbWlzc2luZyBjYWxsYmFjayAnICsgKGVyci5zdGFjayB8fCBlcnIubWVzc2FnZSk7XG4gICAgICAgIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pXG4gICAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZUNhbGxiYWNrKGNiKSB7XG4gIHJldHVybiB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicgPyBjYiA6IHJldGhyb3coKTtcbn1cblxudmFyIG5vcm1hbGl6ZSA9IHBhdGhNb2R1bGUubm9ybWFsaXplO1xuXG4vLyBSZWdleHAgdGhhdCBmaW5kcyB0aGUgbmV4dCBwYXJ0aW9uIG9mIGEgKHBhcnRpYWwpIHBhdGhcbi8vIHJlc3VsdCBpcyBbYmFzZV93aXRoX3NsYXNoLCBiYXNlXSwgZS5nLiBbJ3NvbWVkaXIvJywgJ3NvbWVkaXInXVxuaWYgKGlzV2luZG93cykge1xuICB2YXIgbmV4dFBhcnRSZSA9IC8oLio/KSg/OltcXC9cXFxcXSt8JCkvZztcbn0gZWxzZSB7XG4gIHZhciBuZXh0UGFydFJlID0gLyguKj8pKD86W1xcL10rfCQpL2c7XG59XG5cbi8vIFJlZ2V4IHRvIGZpbmQgdGhlIGRldmljZSByb290LCBpbmNsdWRpbmcgdHJhaWxpbmcgc2xhc2guIEUuZy4gJ2M6XFxcXCcuXG5pZiAoaXNXaW5kb3dzKSB7XG4gIHZhciBzcGxpdFJvb3RSZSA9IC9eKD86W2EtekEtWl06fFtcXFxcXFwvXXsyfVteXFxcXFxcL10rW1xcXFxcXC9dW15cXFxcXFwvXSspP1tcXFxcXFwvXSovO1xufSBlbHNlIHtcbiAgdmFyIHNwbGl0Um9vdFJlID0gL15bXFwvXSovO1xufVxuXG5leHBvcnRzLnJlYWxwYXRoU3luYyA9IGZ1bmN0aW9uIHJlYWxwYXRoU3luYyhwLCBjYWNoZSkge1xuICAvLyBtYWtlIHAgaXMgYWJzb2x1dGVcbiAgcCA9IHBhdGhNb2R1bGUucmVzb2x2ZShwKTtcblxuICBpZiAoY2FjaGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNhY2hlLCBwKSkge1xuICAgIHJldHVybiBjYWNoZVtwXTtcbiAgfVxuXG4gIHZhciBvcmlnaW5hbCA9IHAsXG4gICAgICBzZWVuTGlua3MgPSB7fSxcbiAgICAgIGtub3duSGFyZCA9IHt9O1xuXG4gIC8vIGN1cnJlbnQgY2hhcmFjdGVyIHBvc2l0aW9uIGluIHBcbiAgdmFyIHBvcztcbiAgLy8gdGhlIHBhcnRpYWwgcGF0aCBzbyBmYXIsIGluY2x1ZGluZyBhIHRyYWlsaW5nIHNsYXNoIGlmIGFueVxuICB2YXIgY3VycmVudDtcbiAgLy8gdGhlIHBhcnRpYWwgcGF0aCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2ggKGV4Y2VwdCB3aGVuIHBvaW50aW5nIGF0IGEgcm9vdClcbiAgdmFyIGJhc2U7XG4gIC8vIHRoZSBwYXJ0aWFsIHBhdGggc2Nhbm5lZCBpbiB0aGUgcHJldmlvdXMgcm91bmQsIHdpdGggc2xhc2hcbiAgdmFyIHByZXZpb3VzO1xuXG4gIHN0YXJ0KCk7XG5cbiAgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgLy8gU2tpcCBvdmVyIHJvb3RzXG4gICAgdmFyIG0gPSBzcGxpdFJvb3RSZS5leGVjKHApO1xuICAgIHBvcyA9IG1bMF0ubGVuZ3RoO1xuICAgIGN1cnJlbnQgPSBtWzBdO1xuICAgIGJhc2UgPSBtWzBdO1xuICAgIHByZXZpb3VzID0gJyc7XG5cbiAgICAvLyBPbiB3aW5kb3dzLCBjaGVjayB0aGF0IHRoZSByb290IGV4aXN0cy4gT24gdW5peCB0aGVyZSBpcyBubyBuZWVkLlxuICAgIGlmIChpc1dpbmRvd3MgJiYgIWtub3duSGFyZFtiYXNlXSkge1xuICAgICAgZnMubHN0YXRTeW5jKGJhc2UpO1xuICAgICAga25vd25IYXJkW2Jhc2VdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyB3YWxrIGRvd24gdGhlIHBhdGgsIHN3YXBwaW5nIG91dCBsaW5rZWQgcGF0aHBhcnRzIGZvciB0aGVpciByZWFsXG4gIC8vIHZhbHVlc1xuICAvLyBOQjogcC5sZW5ndGggY2hhbmdlcy5cbiAgd2hpbGUgKHBvcyA8IHAubGVuZ3RoKSB7XG4gICAgLy8gZmluZCB0aGUgbmV4dCBwYXJ0XG4gICAgbmV4dFBhcnRSZS5sYXN0SW5kZXggPSBwb3M7XG4gICAgdmFyIHJlc3VsdCA9IG5leHRQYXJ0UmUuZXhlYyhwKTtcbiAgICBwcmV2aW91cyA9IGN1cnJlbnQ7XG4gICAgY3VycmVudCArPSByZXN1bHRbMF07XG4gICAgYmFzZSA9IHByZXZpb3VzICsgcmVzdWx0WzFdO1xuICAgIHBvcyA9IG5leHRQYXJ0UmUubGFzdEluZGV4O1xuXG4gICAgLy8gY29udGludWUgaWYgbm90IGEgc3ltbGlua1xuICAgIGlmIChrbm93bkhhcmRbYmFzZV0gfHwgKGNhY2hlICYmIGNhY2hlW2Jhc2VdID09PSBiYXNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmVkTGluaztcbiAgICBpZiAoY2FjaGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNhY2hlLCBiYXNlKSkge1xuICAgICAgLy8gc29tZSBrbm93biBzeW1ib2xpYyBsaW5rLiAgbm8gbmVlZCB0byBzdGF0IGFnYWluLlxuICAgICAgcmVzb2x2ZWRMaW5rID0gY2FjaGVbYmFzZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGF0ID0gZnMubHN0YXRTeW5jKGJhc2UpO1xuICAgICAgaWYgKCFzdGF0LmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICAgICAga25vd25IYXJkW2Jhc2VdID0gdHJ1ZTtcbiAgICAgICAgaWYgKGNhY2hlKSBjYWNoZVtiYXNlXSA9IGJhc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyByZWFkIHRoZSBsaW5rIGlmIGl0IHdhc24ndCByZWFkIGJlZm9yZVxuICAgICAgLy8gZGV2L2lubyBhbHdheXMgcmV0dXJuIDAgb24gd2luZG93cywgc28gc2tpcCB0aGUgY2hlY2suXG4gICAgICB2YXIgbGlua1RhcmdldCA9IG51bGw7XG4gICAgICBpZiAoIWlzV2luZG93cykge1xuICAgICAgICB2YXIgaWQgPSBzdGF0LmRldi50b1N0cmluZygzMikgKyAnOicgKyBzdGF0Lmluby50b1N0cmluZygzMik7XG4gICAgICAgIGlmIChzZWVuTGlua3MuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgbGlua1RhcmdldCA9IHNlZW5MaW5rc1tpZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsaW5rVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgIGZzLnN0YXRTeW5jKGJhc2UpO1xuICAgICAgICBsaW5rVGFyZ2V0ID0gZnMucmVhZGxpbmtTeW5jKGJhc2UpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZWRMaW5rID0gcGF0aE1vZHVsZS5yZXNvbHZlKHByZXZpb3VzLCBsaW5rVGFyZ2V0KTtcbiAgICAgIC8vIHRyYWNrIHRoaXMsIGlmIGdpdmVuIGEgY2FjaGUuXG4gICAgICBpZiAoY2FjaGUpIGNhY2hlW2Jhc2VdID0gcmVzb2x2ZWRMaW5rO1xuICAgICAgaWYgKCFpc1dpbmRvd3MpIHNlZW5MaW5rc1tpZF0gPSBsaW5rVGFyZ2V0O1xuICAgIH1cblxuICAgIC8vIHJlc29sdmUgdGhlIGxpbmssIHRoZW4gc3RhcnQgb3ZlclxuICAgIHAgPSBwYXRoTW9kdWxlLnJlc29sdmUocmVzb2x2ZWRMaW5rLCBwLnNsaWNlKHBvcykpO1xuICAgIHN0YXJ0KCk7XG4gIH1cblxuICBpZiAoY2FjaGUpIGNhY2hlW29yaWdpbmFsXSA9IHA7XG5cbiAgcmV0dXJuIHA7XG59O1xuXG5cbmV4cG9ydHMucmVhbHBhdGggPSBmdW5jdGlvbiByZWFscGF0aChwLCBjYWNoZSwgY2IpIHtcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gbWF5YmVDYWxsYmFjayhjYWNoZSk7XG4gICAgY2FjaGUgPSBudWxsO1xuICB9XG5cbiAgLy8gbWFrZSBwIGlzIGFic29sdXRlXG4gIHAgPSBwYXRoTW9kdWxlLnJlc29sdmUocCk7XG5cbiAgaWYgKGNhY2hlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjYWNoZSwgcCkpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhjYi5iaW5kKG51bGwsIG51bGwsIGNhY2hlW3BdKSk7XG4gIH1cblxuICB2YXIgb3JpZ2luYWwgPSBwLFxuICAgICAgc2VlbkxpbmtzID0ge30sXG4gICAgICBrbm93bkhhcmQgPSB7fTtcblxuICAvLyBjdXJyZW50IGNoYXJhY3RlciBwb3NpdGlvbiBpbiBwXG4gIHZhciBwb3M7XG4gIC8vIHRoZSBwYXJ0aWFsIHBhdGggc28gZmFyLCBpbmNsdWRpbmcgYSB0cmFpbGluZyBzbGFzaCBpZiBhbnlcbiAgdmFyIGN1cnJlbnQ7XG4gIC8vIHRoZSBwYXJ0aWFsIHBhdGggd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoIChleGNlcHQgd2hlbiBwb2ludGluZyBhdCBhIHJvb3QpXG4gIHZhciBiYXNlO1xuICAvLyB0aGUgcGFydGlhbCBwYXRoIHNjYW5uZWQgaW4gdGhlIHByZXZpb3VzIHJvdW5kLCB3aXRoIHNsYXNoXG4gIHZhciBwcmV2aW91cztcblxuICBzdGFydCgpO1xuXG4gIGZ1bmN0aW9uIHN0YXJ0KCkge1xuICAgIC8vIFNraXAgb3ZlciByb290c1xuICAgIHZhciBtID0gc3BsaXRSb290UmUuZXhlYyhwKTtcbiAgICBwb3MgPSBtWzBdLmxlbmd0aDtcbiAgICBjdXJyZW50ID0gbVswXTtcbiAgICBiYXNlID0gbVswXTtcbiAgICBwcmV2aW91cyA9ICcnO1xuXG4gICAgLy8gT24gd2luZG93cywgY2hlY2sgdGhhdCB0aGUgcm9vdCBleGlzdHMuIE9uIHVuaXggdGhlcmUgaXMgbm8gbmVlZC5cbiAgICBpZiAoaXNXaW5kb3dzICYmICFrbm93bkhhcmRbYmFzZV0pIHtcbiAgICAgIGZzLmxzdGF0KGJhc2UsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAga25vd25IYXJkW2Jhc2VdID0gdHJ1ZTtcbiAgICAgICAgTE9PUCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soTE9PUCk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2FsayBkb3duIHRoZSBwYXRoLCBzd2FwcGluZyBvdXQgbGlua2VkIHBhdGhwYXJ0cyBmb3IgdGhlaXIgcmVhbFxuICAvLyB2YWx1ZXNcbiAgZnVuY3Rpb24gTE9PUCgpIHtcbiAgICAvLyBzdG9wIGlmIHNjYW5uZWQgcGFzdCBlbmQgb2YgcGF0aFxuICAgIGlmIChwb3MgPj0gcC5sZW5ndGgpIHtcbiAgICAgIGlmIChjYWNoZSkgY2FjaGVbb3JpZ2luYWxdID0gcDtcbiAgICAgIHJldHVybiBjYihudWxsLCBwKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIHRoZSBuZXh0IHBhcnRcbiAgICBuZXh0UGFydFJlLmxhc3RJbmRleCA9IHBvcztcbiAgICB2YXIgcmVzdWx0ID0gbmV4dFBhcnRSZS5leGVjKHApO1xuICAgIHByZXZpb3VzID0gY3VycmVudDtcbiAgICBjdXJyZW50ICs9IHJlc3VsdFswXTtcbiAgICBiYXNlID0gcHJldmlvdXMgKyByZXN1bHRbMV07XG4gICAgcG9zID0gbmV4dFBhcnRSZS5sYXN0SW5kZXg7XG5cbiAgICAvLyBjb250aW51ZSBpZiBub3QgYSBzeW1saW5rXG4gICAgaWYgKGtub3duSGFyZFtiYXNlXSB8fCAoY2FjaGUgJiYgY2FjaGVbYmFzZV0gPT09IGJhc2UpKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhMT09QKTtcbiAgICB9XG5cbiAgICBpZiAoY2FjaGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNhY2hlLCBiYXNlKSkge1xuICAgICAgLy8ga25vd24gc3ltYm9saWMgbGluay4gIG5vIG5lZWQgdG8gc3RhdCBhZ2Fpbi5cbiAgICAgIHJldHVybiBnb3RSZXNvbHZlZExpbmsoY2FjaGVbYmFzZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBmcy5sc3RhdChiYXNlLCBnb3RTdGF0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvdFN0YXQoZXJyLCBzdGF0KSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG5cbiAgICAvLyBpZiBub3QgYSBzeW1saW5rLCBza2lwIHRvIHRoZSBuZXh0IHBhdGggcGFydFxuICAgIGlmICghc3RhdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICBrbm93bkhhcmRbYmFzZV0gPSB0cnVlO1xuICAgICAgaWYgKGNhY2hlKSBjYWNoZVtiYXNlXSA9IGJhc2U7XG4gICAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhMT09QKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0ICYgcmVhZCB0aGUgbGluayBpZiBub3QgcmVhZCBiZWZvcmVcbiAgICAvLyBjYWxsIGdvdFRhcmdldCBhcyBzb29uIGFzIHRoZSBsaW5rIHRhcmdldCBpcyBrbm93blxuICAgIC8vIGRldi9pbm8gYWx3YXlzIHJldHVybiAwIG9uIHdpbmRvd3MsIHNvIHNraXAgdGhlIGNoZWNrLlxuICAgIGlmICghaXNXaW5kb3dzKSB7XG4gICAgICB2YXIgaWQgPSBzdGF0LmRldi50b1N0cmluZygzMikgKyAnOicgKyBzdGF0Lmluby50b1N0cmluZygzMik7XG4gICAgICBpZiAoc2VlbkxpbmtzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICByZXR1cm4gZ290VGFyZ2V0KG51bGwsIHNlZW5MaW5rc1tpZF0sIGJhc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBmcy5zdGF0KGJhc2UsIGZ1bmN0aW9uKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG5cbiAgICAgIGZzLnJlYWRsaW5rKGJhc2UsIGZ1bmN0aW9uKGVyciwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghaXNXaW5kb3dzKSBzZWVuTGlua3NbaWRdID0gdGFyZ2V0O1xuICAgICAgICBnb3RUYXJnZXQoZXJyLCB0YXJnZXQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnb3RUYXJnZXQoZXJyLCB0YXJnZXQsIGJhc2UpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKTtcblxuICAgIHZhciByZXNvbHZlZExpbmsgPSBwYXRoTW9kdWxlLnJlc29sdmUocHJldmlvdXMsIHRhcmdldCk7XG4gICAgaWYgKGNhY2hlKSBjYWNoZVtiYXNlXSA9IHJlc29sdmVkTGluaztcbiAgICBnb3RSZXNvbHZlZExpbmsocmVzb2x2ZWRMaW5rKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvdFJlc29sdmVkTGluayhyZXNvbHZlZExpbmspIHtcbiAgICAvLyByZXNvbHZlIHRoZSBsaW5rLCB0aGVuIHN0YXJ0IG92ZXJcbiAgICBwID0gcGF0aE1vZHVsZS5yZXNvbHZlKHJlc29sdmVkTGluaywgcC5zbGljZShwb3MpKTtcbiAgICBzdGFydCgpO1xuICB9XG59O1xuIiwiZXhwb3J0cy5zZXRvcHRzID0gc2V0b3B0c1xuZXhwb3J0cy5vd25Qcm9wID0gb3duUHJvcFxuZXhwb3J0cy5tYWtlQWJzID0gbWFrZUFic1xuZXhwb3J0cy5maW5pc2ggPSBmaW5pc2hcbmV4cG9ydHMubWFyayA9IG1hcmtcbmV4cG9ydHMuaXNJZ25vcmVkID0gaXNJZ25vcmVkXG5leHBvcnRzLmNoaWxkcmVuSWdub3JlZCA9IGNoaWxkcmVuSWdub3JlZFxuXG5mdW5jdGlvbiBvd25Qcm9wIChvYmosIGZpZWxkKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBmaWVsZClcbn1cblxudmFyIGZzID0gcmVxdWlyZShcImZzXCIpXG52YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpXG52YXIgbWluaW1hdGNoID0gcmVxdWlyZShcIm1pbmltYXRjaFwiKVxudmFyIGlzQWJzb2x1dGUgPSByZXF1aXJlKFwicGF0aC1pcy1hYnNvbHV0ZVwiKVxudmFyIE1pbmltYXRjaCA9IG1pbmltYXRjaC5NaW5pbWF0Y2hcblxuZnVuY3Rpb24gYWxwaGFzb3J0IChhLCBiKSB7XG4gIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYiwgJ2VuJylcbn1cblxuZnVuY3Rpb24gc2V0dXBJZ25vcmVzIChzZWxmLCBvcHRpb25zKSB7XG4gIHNlbGYuaWdub3JlID0gb3B0aW9ucy5pZ25vcmUgfHwgW11cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoc2VsZi5pZ25vcmUpKVxuICAgIHNlbGYuaWdub3JlID0gW3NlbGYuaWdub3JlXVxuXG4gIGlmIChzZWxmLmlnbm9yZS5sZW5ndGgpIHtcbiAgICBzZWxmLmlnbm9yZSA9IHNlbGYuaWdub3JlLm1hcChpZ25vcmVNYXApXG4gIH1cbn1cblxuLy8gaWdub3JlIHBhdHRlcm5zIGFyZSBhbHdheXMgaW4gZG90OnRydWUgbW9kZS5cbmZ1bmN0aW9uIGlnbm9yZU1hcCAocGF0dGVybikge1xuICB2YXIgZ21hdGNoZXIgPSBudWxsXG4gIGlmIChwYXR0ZXJuLnNsaWNlKC0zKSA9PT0gJy8qKicpIHtcbiAgICB2YXIgZ3BhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoLyhcXC9cXCpcXCopKyQvLCAnJylcbiAgICBnbWF0Y2hlciA9IG5ldyBNaW5pbWF0Y2goZ3BhdHRlcm4sIHsgZG90OiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1hdGNoZXI6IG5ldyBNaW5pbWF0Y2gocGF0dGVybiwgeyBkb3Q6IHRydWUgfSksXG4gICAgZ21hdGNoZXI6IGdtYXRjaGVyXG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0b3B0cyAoc2VsZiwgcGF0dGVybiwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9XG5cbiAgLy8gYmFzZS1tYXRjaGluZzoganVzdCB1c2UgZ2xvYnN0YXIgZm9yIHRoYXQuXG4gIGlmIChvcHRpb25zLm1hdGNoQmFzZSAmJiAtMSA9PT0gcGF0dGVybi5pbmRleE9mKFwiL1wiKSkge1xuICAgIGlmIChvcHRpb25zLm5vZ2xvYnN0YXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImJhc2UgbWF0Y2hpbmcgcmVxdWlyZXMgZ2xvYnN0YXJcIilcbiAgICB9XG4gICAgcGF0dGVybiA9IFwiKiovXCIgKyBwYXR0ZXJuXG4gIH1cblxuICBzZWxmLnNpbGVudCA9ICEhb3B0aW9ucy5zaWxlbnRcbiAgc2VsZi5wYXR0ZXJuID0gcGF0dGVyblxuICBzZWxmLnN0cmljdCA9IG9wdGlvbnMuc3RyaWN0ICE9PSBmYWxzZVxuICBzZWxmLnJlYWxwYXRoID0gISFvcHRpb25zLnJlYWxwYXRoXG4gIHNlbGYucmVhbHBhdGhDYWNoZSA9IG9wdGlvbnMucmVhbHBhdGhDYWNoZSB8fCBPYmplY3QuY3JlYXRlKG51bGwpXG4gIHNlbGYuZm9sbG93ID0gISFvcHRpb25zLmZvbGxvd1xuICBzZWxmLmRvdCA9ICEhb3B0aW9ucy5kb3RcbiAgc2VsZi5tYXJrID0gISFvcHRpb25zLm1hcmtcbiAgc2VsZi5ub2RpciA9ICEhb3B0aW9ucy5ub2RpclxuICBpZiAoc2VsZi5ub2RpcilcbiAgICBzZWxmLm1hcmsgPSB0cnVlXG4gIHNlbGYuc3luYyA9ICEhb3B0aW9ucy5zeW5jXG4gIHNlbGYubm91bmlxdWUgPSAhIW9wdGlvbnMubm91bmlxdWVcbiAgc2VsZi5ub251bGwgPSAhIW9wdGlvbnMubm9udWxsXG4gIHNlbGYubm9zb3J0ID0gISFvcHRpb25zLm5vc29ydFxuICBzZWxmLm5vY2FzZSA9ICEhb3B0aW9ucy5ub2Nhc2VcbiAgc2VsZi5zdGF0ID0gISFvcHRpb25zLnN0YXRcbiAgc2VsZi5ub3Byb2Nlc3MgPSAhIW9wdGlvbnMubm9wcm9jZXNzXG4gIHNlbGYuYWJzb2x1dGUgPSAhIW9wdGlvbnMuYWJzb2x1dGVcbiAgc2VsZi5mcyA9IG9wdGlvbnMuZnMgfHwgZnNcblxuICBzZWxmLm1heExlbmd0aCA9IG9wdGlvbnMubWF4TGVuZ3RoIHx8IEluZmluaXR5XG4gIHNlbGYuY2FjaGUgPSBvcHRpb25zLmNhY2hlIHx8IE9iamVjdC5jcmVhdGUobnVsbClcbiAgc2VsZi5zdGF0Q2FjaGUgPSBvcHRpb25zLnN0YXRDYWNoZSB8fCBPYmplY3QuY3JlYXRlKG51bGwpXG4gIHNlbGYuc3ltbGlua3MgPSBvcHRpb25zLnN5bWxpbmtzIHx8IE9iamVjdC5jcmVhdGUobnVsbClcblxuICBzZXR1cElnbm9yZXMoc2VsZiwgb3B0aW9ucylcblxuICBzZWxmLmNoYW5nZWRDd2QgPSBmYWxzZVxuICB2YXIgY3dkID0gcHJvY2Vzcy5jd2QoKVxuICBpZiAoIW93blByb3Aob3B0aW9ucywgXCJjd2RcIikpXG4gICAgc2VsZi5jd2QgPSBjd2RcbiAgZWxzZSB7XG4gICAgc2VsZi5jd2QgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5jd2QpXG4gICAgc2VsZi5jaGFuZ2VkQ3dkID0gc2VsZi5jd2QgIT09IGN3ZFxuICB9XG5cbiAgc2VsZi5yb290ID0gb3B0aW9ucy5yb290IHx8IHBhdGgucmVzb2x2ZShzZWxmLmN3ZCwgXCIvXCIpXG4gIHNlbGYucm9vdCA9IHBhdGgucmVzb2x2ZShzZWxmLnJvb3QpXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpXG4gICAgc2VsZi5yb290ID0gc2VsZi5yb290LnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG5cbiAgLy8gVE9ETzogaXMgYW4gYWJzb2x1dGUgYGN3ZGAgc3VwcG9zZWQgdG8gYmUgcmVzb2x2ZWQgYWdhaW5zdCBgcm9vdGA/XG4gIC8vIGUuZy4geyBjd2Q6ICcvdGVzdCcsIHJvb3Q6IF9fZGlybmFtZSB9ID09PSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnL3Rlc3QnKVxuICBzZWxmLmN3ZEFicyA9IGlzQWJzb2x1dGUoc2VsZi5jd2QpID8gc2VsZi5jd2QgOiBtYWtlQWJzKHNlbGYsIHNlbGYuY3dkKVxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKVxuICAgIHNlbGYuY3dkQWJzID0gc2VsZi5jd2RBYnMucmVwbGFjZSgvXFxcXC9nLCBcIi9cIilcbiAgc2VsZi5ub21vdW50ID0gISFvcHRpb25zLm5vbW91bnRcblxuICAvLyBkaXNhYmxlIGNvbW1lbnRzIGFuZCBuZWdhdGlvbiBpbiBNaW5pbWF0Y2guXG4gIC8vIE5vdGUgdGhhdCB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGluIEdsb2IgaXRzZWxmIGFueXdheS5cbiAgb3B0aW9ucy5ub25lZ2F0ZSA9IHRydWVcbiAgb3B0aW9ucy5ub2NvbW1lbnQgPSB0cnVlXG4gIC8vIGFsd2F5cyB0cmVhdCBcXCBpbiBwYXR0ZXJucyBhcyBlc2NhcGVzLCBub3QgcGF0aCBzZXBhcmF0b3JzXG4gIG9wdGlvbnMuYWxsb3dXaW5kb3dzRXNjYXBlID0gZmFsc2VcblxuICBzZWxmLm1pbmltYXRjaCA9IG5ldyBNaW5pbWF0Y2gocGF0dGVybiwgb3B0aW9ucylcbiAgc2VsZi5vcHRpb25zID0gc2VsZi5taW5pbWF0Y2gub3B0aW9uc1xufVxuXG5mdW5jdGlvbiBmaW5pc2ggKHNlbGYpIHtcbiAgdmFyIG5vdSA9IHNlbGYubm91bmlxdWVcbiAgdmFyIGFsbCA9IG5vdSA/IFtdIDogT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gc2VsZi5tYXRjaGVzLmxlbmd0aDsgaSA8IGw7IGkgKyspIHtcbiAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hlc1tpXVxuICAgIGlmICghbWF0Y2hlcyB8fCBPYmplY3Qua2V5cyhtYXRjaGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChzZWxmLm5vbnVsbCkge1xuICAgICAgICAvLyBkbyBsaWtlIHRoZSBzaGVsbCwgYW5kIHNwaXQgb3V0IHRoZSBsaXRlcmFsIGdsb2JcbiAgICAgICAgdmFyIGxpdGVyYWwgPSBzZWxmLm1pbmltYXRjaC5nbG9iU2V0W2ldXG4gICAgICAgIGlmIChub3UpXG4gICAgICAgICAgYWxsLnB1c2gobGl0ZXJhbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFsbFtsaXRlcmFsXSA9IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFkIG1hdGNoZXNcbiAgICAgIHZhciBtID0gT2JqZWN0LmtleXMobWF0Y2hlcylcbiAgICAgIGlmIChub3UpXG4gICAgICAgIGFsbC5wdXNoLmFwcGx5KGFsbCwgbSlcbiAgICAgIGVsc2VcbiAgICAgICAgbS5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgYWxsW21dID0gdHJ1ZVxuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghbm91KVxuICAgIGFsbCA9IE9iamVjdC5rZXlzKGFsbClcblxuICBpZiAoIXNlbGYubm9zb3J0KVxuICAgIGFsbCA9IGFsbC5zb3J0KGFscGhhc29ydClcblxuICAvLyBhdCAqc29tZSogcG9pbnQgd2Ugc3RhdHRlZCBhbGwgb2YgdGhlc2VcbiAgaWYgKHNlbGYubWFyaykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhbGxbaV0gPSBzZWxmLl9tYXJrKGFsbFtpXSlcbiAgICB9XG4gICAgaWYgKHNlbGYubm9kaXIpIHtcbiAgICAgIGFsbCA9IGFsbC5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG5vdERpciA9ICEoL1xcLyQvLnRlc3QoZSkpXG4gICAgICAgIHZhciBjID0gc2VsZi5jYWNoZVtlXSB8fCBzZWxmLmNhY2hlW21ha2VBYnMoc2VsZiwgZSldXG4gICAgICAgIGlmIChub3REaXIgJiYgYylcbiAgICAgICAgICBub3REaXIgPSBjICE9PSAnRElSJyAmJiAhQXJyYXkuaXNBcnJheShjKVxuICAgICAgICByZXR1cm4gbm90RGlyXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzZWxmLmlnbm9yZS5sZW5ndGgpXG4gICAgYWxsID0gYWxsLmZpbHRlcihmdW5jdGlvbihtKSB7XG4gICAgICByZXR1cm4gIWlzSWdub3JlZChzZWxmLCBtKVxuICAgIH0pXG5cbiAgc2VsZi5mb3VuZCA9IGFsbFxufVxuXG5mdW5jdGlvbiBtYXJrIChzZWxmLCBwKSB7XG4gIHZhciBhYnMgPSBtYWtlQWJzKHNlbGYsIHApXG4gIHZhciBjID0gc2VsZi5jYWNoZVthYnNdXG4gIHZhciBtID0gcFxuICBpZiAoYykge1xuICAgIHZhciBpc0RpciA9IGMgPT09ICdESVInIHx8IEFycmF5LmlzQXJyYXkoYylcbiAgICB2YXIgc2xhc2ggPSBwLnNsaWNlKC0xKSA9PT0gJy8nXG5cbiAgICBpZiAoaXNEaXIgJiYgIXNsYXNoKVxuICAgICAgbSArPSAnLydcbiAgICBlbHNlIGlmICghaXNEaXIgJiYgc2xhc2gpXG4gICAgICBtID0gbS5zbGljZSgwLCAtMSlcblxuICAgIGlmIChtICE9PSBwKSB7XG4gICAgICB2YXIgbWFicyA9IG1ha2VBYnMoc2VsZiwgbSlcbiAgICAgIHNlbGYuc3RhdENhY2hlW21hYnNdID0gc2VsZi5zdGF0Q2FjaGVbYWJzXVxuICAgICAgc2VsZi5jYWNoZVttYWJzXSA9IHNlbGYuY2FjaGVbYWJzXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtXG59XG5cbi8vIGxvdHRhIHNpdHVwcy4uLlxuZnVuY3Rpb24gbWFrZUFicyAoc2VsZiwgZikge1xuICB2YXIgYWJzID0gZlxuICBpZiAoZi5jaGFyQXQoMCkgPT09ICcvJykge1xuICAgIGFicyA9IHBhdGguam9pbihzZWxmLnJvb3QsIGYpXG4gIH0gZWxzZSBpZiAoaXNBYnNvbHV0ZShmKSB8fCBmID09PSAnJykge1xuICAgIGFicyA9IGZcbiAgfSBlbHNlIGlmIChzZWxmLmNoYW5nZWRDd2QpIHtcbiAgICBhYnMgPSBwYXRoLnJlc29sdmUoc2VsZi5jd2QsIGYpXG4gIH0gZWxzZSB7XG4gICAgYWJzID0gcGF0aC5yZXNvbHZlKGYpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJylcbiAgICBhYnMgPSBhYnMucmVwbGFjZSgvXFxcXC9nLCAnLycpXG5cbiAgcmV0dXJuIGFic1xufVxuXG5cbi8vIFJldHVybiB0cnVlLCBpZiBwYXR0ZXJuIGVuZHMgd2l0aCBnbG9ic3RhciAnKionLCBmb3IgdGhlIGFjY29tcGFueWluZyBwYXJlbnQgZGlyZWN0b3J5LlxuLy8gRXg6LSBJZiBub2RlX21vZHVsZXMvKiogaXMgdGhlIHBhdHRlcm4sIGFkZCAnbm9kZV9tb2R1bGVzJyB0byBpZ25vcmUgbGlzdCBhbG9uZyB3aXRoIGl0J3MgY29udGVudHNcbmZ1bmN0aW9uIGlzSWdub3JlZCAoc2VsZiwgcGF0aCkge1xuICBpZiAoIXNlbGYuaWdub3JlLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gc2VsZi5pZ25vcmUuc29tZShmdW5jdGlvbihpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0ubWF0Y2hlci5tYXRjaChwYXRoKSB8fCAhIShpdGVtLmdtYXRjaGVyICYmIGl0ZW0uZ21hdGNoZXIubWF0Y2gocGF0aCkpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuSWdub3JlZCAoc2VsZiwgcGF0aCkge1xuICBpZiAoIXNlbGYuaWdub3JlLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gc2VsZi5pZ25vcmUuc29tZShmdW5jdGlvbihpdGVtKSB7XG4gICAgcmV0dXJuICEhKGl0ZW0uZ21hdGNoZXIgJiYgaXRlbS5nbWF0Y2hlci5tYXRjaChwYXRoKSlcbiAgfSlcbn1cbiIsIi8vIEFwcHJvYWNoOlxuLy9cbi8vIDEuIEdldCB0aGUgbWluaW1hdGNoIHNldFxuLy8gMi4gRm9yIGVhY2ggcGF0dGVybiBpbiB0aGUgc2V0LCBQUk9DRVNTKHBhdHRlcm4sIGZhbHNlKVxuLy8gMy4gU3RvcmUgbWF0Y2hlcyBwZXItc2V0LCB0aGVuIHVuaXEgdGhlbVxuLy9cbi8vIFBST0NFU1MocGF0dGVybiwgaW5HbG9iU3Rhcilcbi8vIEdldCB0aGUgZmlyc3QgW25dIGl0ZW1zIGZyb20gcGF0dGVybiB0aGF0IGFyZSBhbGwgc3RyaW5nc1xuLy8gSm9pbiB0aGVzZSB0b2dldGhlci4gIFRoaXMgaXMgUFJFRklYLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtb3JlIHJlbWFpbmluZywgdGhlbiBzdGF0KFBSRUZJWCkgYW5kXG4vLyAgIGFkZCB0byBtYXRjaGVzIGlmIGl0IHN1Y2NlZWRzLiAgRU5ELlxuLy9cbi8vIElmIGluR2xvYlN0YXIgYW5kIFBSRUZJWCBpcyBzeW1saW5rIGFuZCBwb2ludHMgdG8gZGlyXG4vLyAgIHNldCBFTlRSSUVTID0gW11cbi8vIGVsc2UgcmVhZGRpcihQUkVGSVgpIGFzIEVOVFJJRVNcbi8vICAgSWYgZmFpbCwgRU5EXG4vL1xuLy8gd2l0aCBFTlRSSUVTXG4vLyAgIElmIHBhdHRlcm5bbl0gaXMgR0xPQlNUQVJcbi8vICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGdsb2JzdGFyIG1hdGNoIGlzIGVtcHR5XG4vLyAgICAgLy8gYnkgcHJ1bmluZyBpdCBvdXQsIGFuZCB0ZXN0aW5nIHRoZSByZXN1bHRpbmcgcGF0dGVyblxuLy8gICAgIFBST0NFU1MocGF0dGVyblswLi5uXSArIHBhdHRlcm5bbisxIC4uICRdLCBmYWxzZSlcbi8vICAgICAvLyBoYW5kbGUgb3RoZXIgY2FzZXMuXG4vLyAgICAgZm9yIEVOVFJZIGluIEVOVFJJRVMgKG5vdCBkb3RmaWxlcylcbi8vICAgICAgIC8vIGF0dGFjaCBnbG9ic3RhciArIHRhaWwgb250byB0aGUgZW50cnlcbi8vICAgICAgIC8vIE1hcmsgdGhhdCB0aGlzIGVudHJ5IGlzIGEgZ2xvYnN0YXIgbWF0Y2hcbi8vICAgICAgIFBST0NFU1MocGF0dGVyblswLi5uXSArIEVOVFJZICsgcGF0dGVybltuIC4uICRdLCB0cnVlKVxuLy9cbi8vICAgZWxzZSAvLyBub3QgZ2xvYnN0YXJcbi8vICAgICBmb3IgRU5UUlkgaW4gRU5UUklFUyAobm90IGRvdGZpbGVzLCB1bmxlc3MgcGF0dGVybltuXSBpcyBkb3QpXG4vLyAgICAgICBUZXN0IEVOVFJZIGFnYWluc3QgcGF0dGVybltuXVxuLy8gICAgICAgSWYgZmFpbHMsIGNvbnRpbnVlXG4vLyAgICAgICBJZiBwYXNzZXMsIFBST0NFU1MocGF0dGVyblswLi5uXSArIGl0ZW0gKyBwYXR0ZXJuW24rMSAuLiAkXSlcbi8vXG4vLyBDYXZlYXQ6XG4vLyAgIENhY2hlIGFsbCBzdGF0cyBhbmQgcmVhZGRpcnMgcmVzdWx0cyB0byBtaW5pbWl6ZSBzeXNjYWxsLiAgU2luY2UgYWxsXG4vLyAgIHdlIGV2ZXIgY2FyZSBhYm91dCBpcyBleGlzdGVuY2UgYW5kIGRpcmVjdG9yeS1uZXNzLCB3ZSBjYW4ganVzdCBrZWVwXG4vLyAgIGB0cnVlYCBmb3IgZmlsZXMsIGFuZCBbY2hpbGRyZW4sLi4uXSBmb3IgZGlyZWN0b3JpZXMsIG9yIGBmYWxzZWAgZm9yXG4vLyAgIHRoaW5ncyB0aGF0IGRvbid0IGV4aXN0LlxuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JcblxudmFyIHJwID0gcmVxdWlyZSgnZnMucmVhbHBhdGgnKVxudmFyIG1pbmltYXRjaCA9IHJlcXVpcmUoJ21pbmltYXRjaCcpXG52YXIgTWluaW1hdGNoID0gbWluaW1hdGNoLk1pbmltYXRjaFxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG52YXIgaXNBYnNvbHV0ZSA9IHJlcXVpcmUoJ3BhdGgtaXMtYWJzb2x1dGUnKVxudmFyIGdsb2JTeW5jID0gcmVxdWlyZSgnLi9zeW5jLmpzJylcbnZhciBjb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbi5qcycpXG52YXIgc2V0b3B0cyA9IGNvbW1vbi5zZXRvcHRzXG52YXIgb3duUHJvcCA9IGNvbW1vbi5vd25Qcm9wXG52YXIgaW5mbGlnaHQgPSByZXF1aXJlKCdpbmZsaWdodCcpXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxudmFyIGNoaWxkcmVuSWdub3JlZCA9IGNvbW1vbi5jaGlsZHJlbklnbm9yZWRcbnZhciBpc0lnbm9yZWQgPSBjb21tb24uaXNJZ25vcmVkXG5cbnZhciBvbmNlID0gcmVxdWlyZSgnb25jZScpXG5cbmZ1bmN0aW9uIGdsb2IgKHBhdHRlcm4sIG9wdGlvbnMsIGNiKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgY2IgPSBvcHRpb25zLCBvcHRpb25zID0ge31cbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cblxuICBpZiAob3B0aW9ucy5zeW5jKSB7XG4gICAgaWYgKGNiKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iJylcbiAgICByZXR1cm4gZ2xvYlN5bmMocGF0dGVybiwgb3B0aW9ucylcbiAgfVxuXG4gIHJldHVybiBuZXcgR2xvYihwYXR0ZXJuLCBvcHRpb25zLCBjYilcbn1cblxuZ2xvYi5zeW5jID0gZ2xvYlN5bmNcbnZhciBHbG9iU3luYyA9IGdsb2IuR2xvYlN5bmMgPSBnbG9iU3luYy5HbG9iU3luY1xuXG4vLyBvbGQgYXBpIHN1cmZhY2Vcbmdsb2IuZ2xvYiA9IGdsb2JcblxuZnVuY3Rpb24gZXh0ZW5kIChvcmlnaW4sIGFkZCkge1xuICBpZiAoYWRkID09PSBudWxsIHx8IHR5cGVvZiBhZGQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9yaWdpblxuICB9XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpXG4gIHZhciBpID0ga2V5cy5sZW5ndGhcbiAgd2hpbGUgKGktLSkge1xuICAgIG9yaWdpbltrZXlzW2ldXSA9IGFkZFtrZXlzW2ldXVxuICB9XG4gIHJldHVybiBvcmlnaW5cbn1cblxuZ2xvYi5oYXNNYWdpYyA9IGZ1bmN0aW9uIChwYXR0ZXJuLCBvcHRpb25zXykge1xuICB2YXIgb3B0aW9ucyA9IGV4dGVuZCh7fSwgb3B0aW9uc18pXG4gIG9wdGlvbnMubm9wcm9jZXNzID0gdHJ1ZVxuXG4gIHZhciBnID0gbmV3IEdsb2IocGF0dGVybiwgb3B0aW9ucylcbiAgdmFyIHNldCA9IGcubWluaW1hdGNoLnNldFxuXG4gIGlmICghcGF0dGVybilcbiAgICByZXR1cm4gZmFsc2VcblxuICBpZiAoc2V0Lmxlbmd0aCA+IDEpXG4gICAgcmV0dXJuIHRydWVcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IHNldFswXS5sZW5ndGg7IGorKykge1xuICAgIGlmICh0eXBlb2Ygc2V0WzBdW2pdICE9PSAnc3RyaW5nJylcbiAgICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZ2xvYi5HbG9iID0gR2xvYlxuaW5oZXJpdHMoR2xvYiwgRUUpXG5mdW5jdGlvbiBHbG9iIChwYXR0ZXJuLCBvcHRpb25zLCBjYikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0gbnVsbFxuICB9XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zeW5jKSB7XG4gICAgaWYgKGNiKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iJylcbiAgICByZXR1cm4gbmV3IEdsb2JTeW5jKHBhdHRlcm4sIG9wdGlvbnMpXG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2xvYikpXG4gICAgcmV0dXJuIG5ldyBHbG9iKHBhdHRlcm4sIG9wdGlvbnMsIGNiKVxuXG4gIHNldG9wdHModGhpcywgcGF0dGVybiwgb3B0aW9ucylcbiAgdGhpcy5fZGlkUmVhbFBhdGggPSBmYWxzZVxuXG4gIC8vIHByb2Nlc3MgZWFjaCBwYXR0ZXJuIGluIHRoZSBtaW5pbWF0Y2ggc2V0XG4gIHZhciBuID0gdGhpcy5taW5pbWF0Y2guc2V0Lmxlbmd0aFxuXG4gIC8vIFRoZSBtYXRjaGVzIGFyZSBzdG9yZWQgYXMgezxmaWxlbmFtZT46IHRydWUsLi4ufSBzbyB0aGF0XG4gIC8vIGR1cGxpY2F0ZXMgYXJlIGF1dG9tYWdpY2FsbHkgcHJ1bmVkLlxuICAvLyBMYXRlciwgd2UgZG8gYW4gT2JqZWN0LmtleXMoKSBvbiB0aGVzZS5cbiAgLy8gS2VlcCB0aGVtIGFzIGEgbGlzdCBzbyB3ZSBjYW4gZmlsbCBpbiB3aGVuIG5vbnVsbCBpcyBzZXQuXG4gIHRoaXMubWF0Y2hlcyA9IG5ldyBBcnJheShuKVxuXG4gIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9uY2UoY2IpXG4gICAgdGhpcy5vbignZXJyb3InLCBjYilcbiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbiAobWF0Y2hlcykge1xuICAgICAgY2IobnVsbCwgbWF0Y2hlcylcbiAgICB9KVxuICB9XG5cbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHRoaXMuX3Byb2Nlc3NpbmcgPSAwXG5cbiAgdGhpcy5fZW1pdFF1ZXVlID0gW11cbiAgdGhpcy5fcHJvY2Vzc1F1ZXVlID0gW11cbiAgdGhpcy5wYXVzZWQgPSBmYWxzZVxuXG4gIGlmICh0aGlzLm5vcHJvY2VzcylcbiAgICByZXR1cm4gdGhpc1xuXG4gIGlmIChuID09PSAwKVxuICAgIHJldHVybiBkb25lKClcblxuICB2YXIgc3luYyA9IHRydWVcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpICsrKSB7XG4gICAgdGhpcy5fcHJvY2Vzcyh0aGlzLm1pbmltYXRjaC5zZXRbaV0sIGksIGZhbHNlLCBkb25lKVxuICB9XG4gIHN5bmMgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGRvbmUgKCkge1xuICAgIC0tc2VsZi5fcHJvY2Vzc2luZ1xuICAgIGlmIChzZWxmLl9wcm9jZXNzaW5nIDw9IDApIHtcbiAgICAgIGlmIChzeW5jKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNlbGYuX2ZpbmlzaCgpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLl9maW5pc2goKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5HbG9iLnByb3RvdHlwZS5fZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIEdsb2IpXG4gIGlmICh0aGlzLmFib3J0ZWQpXG4gICAgcmV0dXJuXG5cbiAgaWYgKHRoaXMucmVhbHBhdGggJiYgIXRoaXMuX2RpZFJlYWxwYXRoKVxuICAgIHJldHVybiB0aGlzLl9yZWFscGF0aCgpXG5cbiAgY29tbW9uLmZpbmlzaCh0aGlzKVxuICB0aGlzLmVtaXQoJ2VuZCcsIHRoaXMuZm91bmQpXG59XG5cbkdsb2IucHJvdG90eXBlLl9yZWFscGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2RpZFJlYWxwYXRoKVxuICAgIHJldHVyblxuXG4gIHRoaXMuX2RpZFJlYWxwYXRoID0gdHJ1ZVxuXG4gIHZhciBuID0gdGhpcy5tYXRjaGVzLmxlbmd0aFxuICBpZiAobiA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5fZmluaXNoKClcblxuICB2YXIgc2VsZiA9IHRoaXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1hdGNoZXMubGVuZ3RoOyBpKyspXG4gICAgdGhpcy5fcmVhbHBhdGhTZXQoaSwgbmV4dClcblxuICBmdW5jdGlvbiBuZXh0ICgpIHtcbiAgICBpZiAoLS1uID09PSAwKVxuICAgICAgc2VsZi5fZmluaXNoKClcbiAgfVxufVxuXG5HbG9iLnByb3RvdHlwZS5fcmVhbHBhdGhTZXQgPSBmdW5jdGlvbiAoaW5kZXgsIGNiKSB7XG4gIHZhciBtYXRjaHNldCA9IHRoaXMubWF0Y2hlc1tpbmRleF1cbiAgaWYgKCFtYXRjaHNldClcbiAgICByZXR1cm4gY2IoKVxuXG4gIHZhciBmb3VuZCA9IE9iamVjdC5rZXlzKG1hdGNoc2V0KVxuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIG4gPSBmb3VuZC5sZW5ndGhcblxuICBpZiAobiA9PT0gMClcbiAgICByZXR1cm4gY2IoKVxuXG4gIHZhciBzZXQgPSB0aGlzLm1hdGNoZXNbaW5kZXhdID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICBmb3VuZC5mb3JFYWNoKGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgLy8gSWYgdGhlcmUncyBhIHByb2JsZW0gd2l0aCB0aGUgc3RhdCwgdGhlbiBpdCBtZWFucyB0aGF0XG4gICAgLy8gb25lIG9yIG1vcmUgb2YgdGhlIGxpbmtzIGluIHRoZSByZWFscGF0aCBjb3VsZG4ndCBiZVxuICAgIC8vIHJlc29sdmVkLiAganVzdCByZXR1cm4gdGhlIGFicyB2YWx1ZSBpbiB0aGF0IGNhc2UuXG4gICAgcCA9IHNlbGYuX21ha2VBYnMocClcbiAgICBycC5yZWFscGF0aChwLCBzZWxmLnJlYWxwYXRoQ2FjaGUsIGZ1bmN0aW9uIChlciwgcmVhbCkge1xuICAgICAgaWYgKCFlcilcbiAgICAgICAgc2V0W3JlYWxdID0gdHJ1ZVxuICAgICAgZWxzZSBpZiAoZXIuc3lzY2FsbCA9PT0gJ3N0YXQnKVxuICAgICAgICBzZXRbcF0gPSB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcikgLy8gc3JzbHkgd3RmIHJpZ2h0IGhlcmVcblxuICAgICAgaWYgKC0tbiA9PT0gMCkge1xuICAgICAgICBzZWxmLm1hdGNoZXNbaW5kZXhdID0gc2V0XG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxufVxuXG5HbG9iLnByb3RvdHlwZS5fbWFyayA9IGZ1bmN0aW9uIChwKSB7XG4gIHJldHVybiBjb21tb24ubWFyayh0aGlzLCBwKVxufVxuXG5HbG9iLnByb3RvdHlwZS5fbWFrZUFicyA9IGZ1bmN0aW9uIChmKSB7XG4gIHJldHVybiBjb21tb24ubWFrZUFicyh0aGlzLCBmKVxufVxuXG5HbG9iLnByb3RvdHlwZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hYm9ydGVkID0gdHJ1ZVxuICB0aGlzLmVtaXQoJ2Fib3J0Jylcbn1cblxuR2xvYi5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICB0aGlzLnBhdXNlZCA9IHRydWVcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJylcbiAgfVxufVxuXG5HbG9iLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLnBhdXNlZCkge1xuICAgIHRoaXMuZW1pdCgncmVzdW1lJylcbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlXG4gICAgaWYgKHRoaXMuX2VtaXRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgIHZhciBlcSA9IHRoaXMuX2VtaXRRdWV1ZS5zbGljZSgwKVxuICAgICAgdGhpcy5fZW1pdFF1ZXVlLmxlbmd0aCA9IDBcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXEubGVuZ3RoOyBpICsrKSB7XG4gICAgICAgIHZhciBlID0gZXFbaV1cbiAgICAgICAgdGhpcy5fZW1pdE1hdGNoKGVbMF0sIGVbMV0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9wcm9jZXNzUXVldWUubGVuZ3RoKSB7XG4gICAgICB2YXIgcHEgPSB0aGlzLl9wcm9jZXNzUXVldWUuc2xpY2UoMClcbiAgICAgIHRoaXMuX3Byb2Nlc3NRdWV1ZS5sZW5ndGggPSAwXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBxLmxlbmd0aDsgaSArKykge1xuICAgICAgICB2YXIgcCA9IHBxW2ldXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NpbmctLVxuICAgICAgICB0aGlzLl9wcm9jZXNzKHBbMF0sIHBbMV0sIHBbMl0sIHBbM10pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkdsb2IucHJvdG90eXBlLl9wcm9jZXNzID0gZnVuY3Rpb24gKHBhdHRlcm4sIGluZGV4LCBpbkdsb2JTdGFyLCBjYikge1xuICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIEdsb2IpXG4gIGFzc2VydCh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG5cbiAgaWYgKHRoaXMuYWJvcnRlZClcbiAgICByZXR1cm5cblxuICB0aGlzLl9wcm9jZXNzaW5nKytcbiAgaWYgKHRoaXMucGF1c2VkKSB7XG4gICAgdGhpcy5fcHJvY2Vzc1F1ZXVlLnB1c2goW3BhdHRlcm4sIGluZGV4LCBpbkdsb2JTdGFyLCBjYl0pXG4gICAgcmV0dXJuXG4gIH1cblxuICAvL2NvbnNvbGUuZXJyb3IoJ1BST0NFU1MgJWQnLCB0aGlzLl9wcm9jZXNzaW5nLCBwYXR0ZXJuKVxuXG4gIC8vIEdldCB0aGUgZmlyc3QgW25dIHBhcnRzIG9mIHBhdHRlcm4gdGhhdCBhcmUgYWxsIHN0cmluZ3MuXG4gIHZhciBuID0gMFxuICB3aGlsZSAodHlwZW9mIHBhdHRlcm5bbl0gPT09ICdzdHJpbmcnKSB7XG4gICAgbiArK1xuICB9XG4gIC8vIG5vdyBuIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb25lIHRoYXQgaXMgKm5vdCogYSBzdHJpbmcuXG5cbiAgLy8gc2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgZWxzZVxuICB2YXIgcHJlZml4XG4gIHN3aXRjaCAobikge1xuICAgIC8vIGlmIG5vdCwgdGhlbiB0aGlzIGlzIHJhdGhlciBzaW1wbGVcbiAgICBjYXNlIHBhdHRlcm4ubGVuZ3RoOlxuICAgICAgdGhpcy5fcHJvY2Vzc1NpbXBsZShwYXR0ZXJuLmpvaW4oJy8nKSwgaW5kZXgsIGNiKVxuICAgICAgcmV0dXJuXG5cbiAgICBjYXNlIDA6XG4gICAgICAvLyBwYXR0ZXJuICpzdGFydHMqIHdpdGggc29tZSBub24tdHJpdmlhbCBpdGVtLlxuICAgICAgLy8gZ29pbmcgdG8gcmVhZGRpcihjd2QpLCBidXQgbm90IGluY2x1ZGUgdGhlIHByZWZpeCBpbiBtYXRjaGVzLlxuICAgICAgcHJlZml4ID0gbnVsbFxuICAgICAgYnJlYWtcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBwYXR0ZXJuIGhhcyBzb21lIHN0cmluZyBiaXRzIGluIHRoZSBmcm9udC5cbiAgICAgIC8vIHdoYXRldmVyIGl0IHN0YXJ0cyB3aXRoLCB3aGV0aGVyIHRoYXQncyAnYWJzb2x1dGUnIGxpa2UgL2Zvby9iYXIsXG4gICAgICAvLyBvciAncmVsYXRpdmUnIGxpa2UgJy4uL2JheidcbiAgICAgIHByZWZpeCA9IHBhdHRlcm4uc2xpY2UoMCwgbikuam9pbignLycpXG4gICAgICBicmVha1xuICB9XG5cbiAgdmFyIHJlbWFpbiA9IHBhdHRlcm4uc2xpY2UobilcblxuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZW50cmllcy5cbiAgdmFyIHJlYWRcbiAgaWYgKHByZWZpeCA9PT0gbnVsbClcbiAgICByZWFkID0gJy4nXG4gIGVsc2UgaWYgKGlzQWJzb2x1dGUocHJlZml4KSB8fFxuICAgICAgaXNBYnNvbHV0ZShwYXR0ZXJuLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHAgPT09ICdzdHJpbmcnID8gcCA6ICdbKl0nXG4gICAgICB9KS5qb2luKCcvJykpKSB7XG4gICAgaWYgKCFwcmVmaXggfHwgIWlzQWJzb2x1dGUocHJlZml4KSlcbiAgICAgIHByZWZpeCA9ICcvJyArIHByZWZpeFxuICAgIHJlYWQgPSBwcmVmaXhcbiAgfSBlbHNlXG4gICAgcmVhZCA9IHByZWZpeFxuXG4gIHZhciBhYnMgPSB0aGlzLl9tYWtlQWJzKHJlYWQpXG5cbiAgLy9pZiBpZ25vcmVkLCBza2lwIF9wcm9jZXNzaW5nXG4gIGlmIChjaGlsZHJlbklnbm9yZWQodGhpcywgcmVhZCkpXG4gICAgcmV0dXJuIGNiKClcblxuICB2YXIgaXNHbG9iU3RhciA9IHJlbWFpblswXSA9PT0gbWluaW1hdGNoLkdMT0JTVEFSXG4gIGlmIChpc0dsb2JTdGFyKVxuICAgIHRoaXMuX3Byb2Nlc3NHbG9iU3RhcihwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3RhciwgY2IpXG4gIGVsc2VcbiAgICB0aGlzLl9wcm9jZXNzUmVhZGRpcihwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3RhciwgY2IpXG59XG5cbkdsb2IucHJvdG90eXBlLl9wcm9jZXNzUmVhZGRpciA9IGZ1bmN0aW9uIChwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3RhciwgY2IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHRoaXMuX3JlYWRkaXIoYWJzLCBpbkdsb2JTdGFyLCBmdW5jdGlvbiAoZXIsIGVudHJpZXMpIHtcbiAgICByZXR1cm4gc2VsZi5fcHJvY2Vzc1JlYWRkaXIyKHByZWZpeCwgcmVhZCwgYWJzLCByZW1haW4sIGluZGV4LCBpbkdsb2JTdGFyLCBlbnRyaWVzLCBjYilcbiAgfSlcbn1cblxuR2xvYi5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyMiA9IGZ1bmN0aW9uIChwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3RhciwgZW50cmllcywgY2IpIHtcblxuICAvLyBpZiB0aGUgYWJzIGlzbid0IGEgZGlyLCB0aGVuIG5vdGhpbmcgY2FuIG1hdGNoIVxuICBpZiAoIWVudHJpZXMpXG4gICAgcmV0dXJuIGNiKClcblxuICAvLyBJdCB3aWxsIG9ubHkgbWF0Y2ggZG90IGVudHJpZXMgaWYgaXQgc3RhcnRzIHdpdGggYSBkb3QsIG9yIGlmXG4gIC8vIGRvdCBpcyBzZXQuICBTdHVmZiBsaWtlIEAoLmZvb3wuYmFyKSBpc24ndCBhbGxvd2VkLlxuICB2YXIgcG4gPSByZW1haW5bMF1cbiAgdmFyIG5lZ2F0ZSA9ICEhdGhpcy5taW5pbWF0Y2gubmVnYXRlXG4gIHZhciByYXdHbG9iID0gcG4uX2dsb2JcbiAgdmFyIGRvdE9rID0gdGhpcy5kb3QgfHwgcmF3R2xvYi5jaGFyQXQoMCkgPT09ICcuJ1xuXG4gIHZhciBtYXRjaGVkRW50cmllcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlID0gZW50cmllc1tpXVxuICAgIGlmIChlLmNoYXJBdCgwKSAhPT0gJy4nIHx8IGRvdE9rKSB7XG4gICAgICB2YXIgbVxuICAgICAgaWYgKG5lZ2F0ZSAmJiAhcHJlZml4KSB7XG4gICAgICAgIG0gPSAhZS5tYXRjaChwbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG0gPSBlLm1hdGNoKHBuKVxuICAgICAgfVxuICAgICAgaWYgKG0pXG4gICAgICAgIG1hdGNoZWRFbnRyaWVzLnB1c2goZSlcbiAgICB9XG4gIH1cblxuICAvL2NvbnNvbGUuZXJyb3IoJ3ByZDInLCBwcmVmaXgsIGVudHJpZXMsIHJlbWFpblswXS5fZ2xvYiwgbWF0Y2hlZEVudHJpZXMpXG5cbiAgdmFyIGxlbiA9IG1hdGNoZWRFbnRyaWVzLmxlbmd0aFxuICAvLyBJZiB0aGVyZSBhcmUgbm8gbWF0Y2hlZCBlbnRyaWVzLCB0aGVuIG5vdGhpbmcgbWF0Y2hlcy5cbiAgaWYgKGxlbiA9PT0gMClcbiAgICByZXR1cm4gY2IoKVxuXG4gIC8vIGlmIHRoaXMgaXMgdGhlIGxhc3QgcmVtYWluaW5nIHBhdHRlcm4gYml0LCB0aGVuIG5vIG5lZWQgZm9yXG4gIC8vIGFuIGFkZGl0aW9uYWwgc3RhdCAqdW5sZXNzKiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIG1hcmsgb3JcbiAgLy8gc3RhdCBleHBsaWNpdGx5LiAgV2Uga25vdyB0aGV5IGV4aXN0LCBzaW5jZSByZWFkZGlyIHJldHVybmVkXG4gIC8vIHRoZW0uXG5cbiAgaWYgKHJlbWFpbi5sZW5ndGggPT09IDEgJiYgIXRoaXMubWFyayAmJiAhdGhpcy5zdGF0KSB7XG4gICAgaWYgKCF0aGlzLm1hdGNoZXNbaW5kZXhdKVxuICAgICAgdGhpcy5tYXRjaGVzW2luZGV4XSA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICsrKSB7XG4gICAgICB2YXIgZSA9IG1hdGNoZWRFbnRyaWVzW2ldXG4gICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgIGlmIChwcmVmaXggIT09ICcvJylcbiAgICAgICAgICBlID0gcHJlZml4ICsgJy8nICsgZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZSA9IHByZWZpeCArIGVcbiAgICAgIH1cblxuICAgICAgaWYgKGUuY2hhckF0KDApID09PSAnLycgJiYgIXRoaXMubm9tb3VudCkge1xuICAgICAgICBlID0gcGF0aC5qb2luKHRoaXMucm9vdCwgZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuX2VtaXRNYXRjaChpbmRleCwgZSlcbiAgICB9XG4gICAgLy8gVGhpcyB3YXMgdGhlIGxhc3Qgb25lLCBhbmQgbm8gc3RhdHMgd2VyZSBuZWVkZWRcbiAgICByZXR1cm4gY2IoKVxuICB9XG5cbiAgLy8gbm93IHRlc3QgYWxsIG1hdGNoZWQgZW50cmllcyBhcyBzdGFuZC1pbnMgZm9yIHRoYXQgcGFydFxuICAvLyBvZiB0aGUgcGF0dGVybi5cbiAgcmVtYWluLnNoaWZ0KClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKyspIHtcbiAgICB2YXIgZSA9IG1hdGNoZWRFbnRyaWVzW2ldXG4gICAgdmFyIG5ld1BhdHRlcm5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBpZiAocHJlZml4ICE9PSAnLycpXG4gICAgICAgIGUgPSBwcmVmaXggKyAnLycgKyBlXG4gICAgICBlbHNlXG4gICAgICAgIGUgPSBwcmVmaXggKyBlXG4gICAgfVxuICAgIHRoaXMuX3Byb2Nlc3MoW2VdLmNvbmNhdChyZW1haW4pLCBpbmRleCwgaW5HbG9iU3RhciwgY2IpXG4gIH1cbiAgY2IoKVxufVxuXG5HbG9iLnByb3RvdHlwZS5fZW1pdE1hdGNoID0gZnVuY3Rpb24gKGluZGV4LCBlKSB7XG4gIGlmICh0aGlzLmFib3J0ZWQpXG4gICAgcmV0dXJuXG5cbiAgaWYgKGlzSWdub3JlZCh0aGlzLCBlKSlcbiAgICByZXR1cm5cblxuICBpZiAodGhpcy5wYXVzZWQpIHtcbiAgICB0aGlzLl9lbWl0UXVldWUucHVzaChbaW5kZXgsIGVdKVxuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGFicyA9IGlzQWJzb2x1dGUoZSkgPyBlIDogdGhpcy5fbWFrZUFicyhlKVxuXG4gIGlmICh0aGlzLm1hcmspXG4gICAgZSA9IHRoaXMuX21hcmsoZSlcblxuICBpZiAodGhpcy5hYnNvbHV0ZSlcbiAgICBlID0gYWJzXG5cbiAgaWYgKHRoaXMubWF0Y2hlc1tpbmRleF1bZV0pXG4gICAgcmV0dXJuXG5cbiAgaWYgKHRoaXMubm9kaXIpIHtcbiAgICB2YXIgYyA9IHRoaXMuY2FjaGVbYWJzXVxuICAgIGlmIChjID09PSAnRElSJyB8fCBBcnJheS5pc0FycmF5KGMpKVxuICAgICAgcmV0dXJuXG4gIH1cblxuICB0aGlzLm1hdGNoZXNbaW5kZXhdW2VdID0gdHJ1ZVxuXG4gIHZhciBzdCA9IHRoaXMuc3RhdENhY2hlW2Fic11cbiAgaWYgKHN0KVxuICAgIHRoaXMuZW1pdCgnc3RhdCcsIGUsIHN0KVxuXG4gIHRoaXMuZW1pdCgnbWF0Y2gnLCBlKVxufVxuXG5HbG9iLnByb3RvdHlwZS5fcmVhZGRpckluR2xvYlN0YXIgPSBmdW5jdGlvbiAoYWJzLCBjYikge1xuICBpZiAodGhpcy5hYm9ydGVkKVxuICAgIHJldHVyblxuXG4gIC8vIGZvbGxvdyBhbGwgc3ltbGlua2VkIGRpcmVjdG9yaWVzIGZvcmV2ZXJcbiAgLy8ganVzdCBwcm9jZWVkIGFzIGlmIHRoaXMgaXMgYSBub24tZ2xvYnN0YXIgc2l0dWF0aW9uXG4gIGlmICh0aGlzLmZvbGxvdylcbiAgICByZXR1cm4gdGhpcy5fcmVhZGRpcihhYnMsIGZhbHNlLCBjYilcblxuICB2YXIgbHN0YXRrZXkgPSAnbHN0YXRcXDAnICsgYWJzXG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbHN0YXRjYiA9IGluZmxpZ2h0KGxzdGF0a2V5LCBsc3RhdGNiXylcblxuICBpZiAobHN0YXRjYilcbiAgICBzZWxmLmZzLmxzdGF0KGFicywgbHN0YXRjYilcblxuICBmdW5jdGlvbiBsc3RhdGNiXyAoZXIsIGxzdGF0KSB7XG4gICAgaWYgKGVyICYmIGVyLmNvZGUgPT09ICdFTk9FTlQnKVxuICAgICAgcmV0dXJuIGNiKClcblxuICAgIHZhciBpc1N5bSA9IGxzdGF0ICYmIGxzdGF0LmlzU3ltYm9saWNMaW5rKClcbiAgICBzZWxmLnN5bWxpbmtzW2Fic10gPSBpc1N5bVxuXG4gICAgLy8gSWYgaXQncyBub3QgYSBzeW1saW5rIG9yIGEgZGlyLCB0aGVuIGl0J3MgZGVmaW5pdGVseSBhIHJlZ3VsYXIgZmlsZS5cbiAgICAvLyBkb24ndCBib3RoZXIgZG9pbmcgYSByZWFkZGlyIGluIHRoYXQgY2FzZS5cbiAgICBpZiAoIWlzU3ltICYmIGxzdGF0ICYmICFsc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBzZWxmLmNhY2hlW2Fic10gPSAnRklMRSdcbiAgICAgIGNiKClcbiAgICB9IGVsc2VcbiAgICAgIHNlbGYuX3JlYWRkaXIoYWJzLCBmYWxzZSwgY2IpXG4gIH1cbn1cblxuR2xvYi5wcm90b3R5cGUuX3JlYWRkaXIgPSBmdW5jdGlvbiAoYWJzLCBpbkdsb2JTdGFyLCBjYikge1xuICBpZiAodGhpcy5hYm9ydGVkKVxuICAgIHJldHVyblxuXG4gIGNiID0gaW5mbGlnaHQoJ3JlYWRkaXJcXDAnK2FicysnXFwwJytpbkdsb2JTdGFyLCBjYilcbiAgaWYgKCFjYilcbiAgICByZXR1cm5cblxuICAvL2NvbnNvbGUuZXJyb3IoJ1JEICVqICVqJywgK2luR2xvYlN0YXIsIGFicylcbiAgaWYgKGluR2xvYlN0YXIgJiYgIW93blByb3AodGhpcy5zeW1saW5rcywgYWJzKSlcbiAgICByZXR1cm4gdGhpcy5fcmVhZGRpckluR2xvYlN0YXIoYWJzLCBjYilcblxuICBpZiAob3duUHJvcCh0aGlzLmNhY2hlLCBhYnMpKSB7XG4gICAgdmFyIGMgPSB0aGlzLmNhY2hlW2Fic11cbiAgICBpZiAoIWMgfHwgYyA9PT0gJ0ZJTEUnKVxuICAgICAgcmV0dXJuIGNiKClcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGMpKVxuICAgICAgcmV0dXJuIGNiKG51bGwsIGMpXG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXNcbiAgc2VsZi5mcy5yZWFkZGlyKGFicywgcmVhZGRpckNiKHRoaXMsIGFicywgY2IpKVxufVxuXG5mdW5jdGlvbiByZWFkZGlyQ2IgKHNlbGYsIGFicywgY2IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlciwgZW50cmllcykge1xuICAgIGlmIChlcilcbiAgICAgIHNlbGYuX3JlYWRkaXJFcnJvcihhYnMsIGVyLCBjYilcbiAgICBlbHNlXG4gICAgICBzZWxmLl9yZWFkZGlyRW50cmllcyhhYnMsIGVudHJpZXMsIGNiKVxuICB9XG59XG5cbkdsb2IucHJvdG90eXBlLl9yZWFkZGlyRW50cmllcyA9IGZ1bmN0aW9uIChhYnMsIGVudHJpZXMsIGNiKSB7XG4gIGlmICh0aGlzLmFib3J0ZWQpXG4gICAgcmV0dXJuXG5cbiAgLy8gaWYgd2UgaGF2ZW4ndCBhc2tlZCB0byBzdGF0IGV2ZXJ5dGhpbmcsIHRoZW4ganVzdFxuICAvLyBhc3N1bWUgdGhhdCBldmVyeXRoaW5nIGluIHRoZXJlIGV4aXN0cywgc28gd2UgY2FuIGF2b2lkXG4gIC8vIGhhdmluZyB0byBzdGF0IGl0IGEgc2Vjb25kIHRpbWUuXG4gIGlmICghdGhpcy5tYXJrICYmICF0aGlzLnN0YXQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpICsrKSB7XG4gICAgICB2YXIgZSA9IGVudHJpZXNbaV1cbiAgICAgIGlmIChhYnMgPT09ICcvJylcbiAgICAgICAgZSA9IGFicyArIGVcbiAgICAgIGVsc2VcbiAgICAgICAgZSA9IGFicyArICcvJyArIGVcbiAgICAgIHRoaXMuY2FjaGVbZV0gPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgdGhpcy5jYWNoZVthYnNdID0gZW50cmllc1xuICByZXR1cm4gY2IobnVsbCwgZW50cmllcylcbn1cblxuR2xvYi5wcm90b3R5cGUuX3JlYWRkaXJFcnJvciA9IGZ1bmN0aW9uIChmLCBlciwgY2IpIHtcbiAgaWYgKHRoaXMuYWJvcnRlZClcbiAgICByZXR1cm5cblxuICAvLyBoYW5kbGUgZXJyb3JzLCBhbmQgY2FjaGUgdGhlIGluZm9ybWF0aW9uXG4gIHN3aXRjaCAoZXIuY29kZSkge1xuICAgIGNhc2UgJ0VOT1RTVVAnOiAvLyBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYi9pc3N1ZXMvMjA1XG4gICAgY2FzZSAnRU5PVERJUic6IC8vIHRvdGFsbHkgbm9ybWFsLiBtZWFucyBpdCAqZG9lcyogZXhpc3QuXG4gICAgICB2YXIgYWJzID0gdGhpcy5fbWFrZUFicyhmKVxuICAgICAgdGhpcy5jYWNoZVthYnNdID0gJ0ZJTEUnXG4gICAgICBpZiAoYWJzID09PSB0aGlzLmN3ZEFicykge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoZXIuY29kZSArICcgaW52YWxpZCBjd2QgJyArIHRoaXMuY3dkKVxuICAgICAgICBlcnJvci5wYXRoID0gdGhpcy5jd2RcbiAgICAgICAgZXJyb3IuY29kZSA9IGVyLmNvZGVcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycm9yKVxuICAgICAgICB0aGlzLmFib3J0KClcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdFTk9FTlQnOiAvLyBub3QgdGVycmlibHkgdW51c3VhbFxuICAgIGNhc2UgJ0VMT09QJzpcbiAgICBjYXNlICdFTkFNRVRPT0xPTkcnOlxuICAgIGNhc2UgJ1VOS05PV04nOlxuICAgICAgdGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGYpXSA9IGZhbHNlXG4gICAgICBicmVha1xuXG4gICAgZGVmYXVsdDogLy8gc29tZSB1bnVzdWFsIGVycm9yLiAgVHJlYXQgYXMgZmFpbHVyZS5cbiAgICAgIHRoaXMuY2FjaGVbdGhpcy5fbWFrZUFicyhmKV0gPSBmYWxzZVxuICAgICAgaWYgKHRoaXMuc3RyaWN0KSB7XG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICAgICAgLy8gSWYgdGhlIGVycm9yIGlzIGhhbmRsZWQsIHRoZW4gd2UgYWJvcnRcbiAgICAgICAgLy8gaWYgbm90LCB3ZSB0aHJldyBvdXQgb2YgaGVyZVxuICAgICAgICB0aGlzLmFib3J0KClcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zaWxlbnQpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2dsb2IgZXJyb3InLCBlcilcbiAgICAgIGJyZWFrXG4gIH1cblxuICByZXR1cm4gY2IoKVxufVxuXG5HbG9iLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyID0gZnVuY3Rpb24gKHByZWZpeCwgcmVhZCwgYWJzLCByZW1haW4sIGluZGV4LCBpbkdsb2JTdGFyLCBjYikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdGhpcy5fcmVhZGRpcihhYnMsIGluR2xvYlN0YXIsIGZ1bmN0aW9uIChlciwgZW50cmllcykge1xuICAgIHNlbGYuX3Byb2Nlc3NHbG9iU3RhcjIocHJlZml4LCByZWFkLCBhYnMsIHJlbWFpbiwgaW5kZXgsIGluR2xvYlN0YXIsIGVudHJpZXMsIGNiKVxuICB9KVxufVxuXG5cbkdsb2IucHJvdG90eXBlLl9wcm9jZXNzR2xvYlN0YXIyID0gZnVuY3Rpb24gKHByZWZpeCwgcmVhZCwgYWJzLCByZW1haW4sIGluZGV4LCBpbkdsb2JTdGFyLCBlbnRyaWVzLCBjYikge1xuICAvL2NvbnNvbGUuZXJyb3IoJ3BnczInLCBwcmVmaXgsIHJlbWFpblswXSwgZW50cmllcylcblxuICAvLyBubyBlbnRyaWVzIG1lYW5zIG5vdCBhIGRpciwgc28gaXQgY2FuIG5ldmVyIGhhdmUgbWF0Y2hlc1xuICAvLyBmb28udHh0LyoqIGRvZXNuJ3QgbWF0Y2ggZm9vLnR4dFxuICBpZiAoIWVudHJpZXMpXG4gICAgcmV0dXJuIGNiKClcblxuICAvLyB0ZXN0IHdpdGhvdXQgdGhlIGdsb2JzdGFyLCBhbmQgd2l0aCBldmVyeSBjaGlsZCBib3RoIGJlbG93XG4gIC8vIGFuZCByZXBsYWNpbmcgdGhlIGdsb2JzdGFyLlxuICB2YXIgcmVtYWluV2l0aG91dEdsb2JTdGFyID0gcmVtYWluLnNsaWNlKDEpXG4gIHZhciBnc3ByZWYgPSBwcmVmaXggPyBbIHByZWZpeCBdIDogW11cbiAgdmFyIG5vR2xvYlN0YXIgPSBnc3ByZWYuY29uY2F0KHJlbWFpbldpdGhvdXRHbG9iU3RhcilcblxuICAvLyB0aGUgbm9HbG9iU3RhciBwYXR0ZXJuIGV4aXRzIHRoZSBpbkdsb2JTdGFyIHN0YXRlXG4gIHRoaXMuX3Byb2Nlc3Mobm9HbG9iU3RhciwgaW5kZXgsIGZhbHNlLCBjYilcblxuICB2YXIgaXNTeW0gPSB0aGlzLnN5bWxpbmtzW2Fic11cbiAgdmFyIGxlbiA9IGVudHJpZXMubGVuZ3RoXG5cbiAgLy8gSWYgaXQncyBhIHN5bWxpbmssIGFuZCB3ZSdyZSBpbiBhIGdsb2JzdGFyLCB0aGVuIHN0b3BcbiAgaWYgKGlzU3ltICYmIGluR2xvYlN0YXIpXG4gICAgcmV0dXJuIGNiKClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGUgPSBlbnRyaWVzW2ldXG4gICAgaWYgKGUuY2hhckF0KDApID09PSAnLicgJiYgIXRoaXMuZG90KVxuICAgICAgY29udGludWVcblxuICAgIC8vIHRoZXNlIHR3byBjYXNlcyBlbnRlciB0aGUgaW5HbG9iU3RhciBzdGF0ZVxuICAgIHZhciBpbnN0ZWFkID0gZ3NwcmVmLmNvbmNhdChlbnRyaWVzW2ldLCByZW1haW5XaXRob3V0R2xvYlN0YXIpXG4gICAgdGhpcy5fcHJvY2VzcyhpbnN0ZWFkLCBpbmRleCwgdHJ1ZSwgY2IpXG5cbiAgICB2YXIgYmVsb3cgPSBnc3ByZWYuY29uY2F0KGVudHJpZXNbaV0sIHJlbWFpbilcbiAgICB0aGlzLl9wcm9jZXNzKGJlbG93LCBpbmRleCwgdHJ1ZSwgY2IpXG4gIH1cblxuICBjYigpXG59XG5cbkdsb2IucHJvdG90eXBlLl9wcm9jZXNzU2ltcGxlID0gZnVuY3Rpb24gKHByZWZpeCwgaW5kZXgsIGNiKSB7XG4gIC8vIFhYWCByZXZpZXcgdGhpcy4gIFNob3VsZG4ndCBpdCBiZSBkb2luZyB0aGUgbW91bnRpbmcgZXRjXG4gIC8vIGJlZm9yZSBkb2luZyBzdGF0PyAga2luZGEgd2VpcmQ/XG4gIHZhciBzZWxmID0gdGhpc1xuICB0aGlzLl9zdGF0KHByZWZpeCwgZnVuY3Rpb24gKGVyLCBleGlzdHMpIHtcbiAgICBzZWxmLl9wcm9jZXNzU2ltcGxlMihwcmVmaXgsIGluZGV4LCBlciwgZXhpc3RzLCBjYilcbiAgfSlcbn1cbkdsb2IucHJvdG90eXBlLl9wcm9jZXNzU2ltcGxlMiA9IGZ1bmN0aW9uIChwcmVmaXgsIGluZGV4LCBlciwgZXhpc3RzLCBjYikge1xuXG4gIC8vY29uc29sZS5lcnJvcigncHMyJywgcHJlZml4LCBleGlzdHMpXG5cbiAgaWYgKCF0aGlzLm1hdGNoZXNbaW5kZXhdKVxuICAgIHRoaXMubWF0Y2hlc1tpbmRleF0gPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgLy8gSWYgaXQgZG9lc24ndCBleGlzdCwgdGhlbiBqdXN0IG1hcmsgdGhlIGxhY2sgb2YgcmVzdWx0c1xuICBpZiAoIWV4aXN0cylcbiAgICByZXR1cm4gY2IoKVxuXG4gIGlmIChwcmVmaXggJiYgaXNBYnNvbHV0ZShwcmVmaXgpICYmICF0aGlzLm5vbW91bnQpIHtcbiAgICB2YXIgdHJhaWwgPSAvW1xcL1xcXFxdJC8udGVzdChwcmVmaXgpXG4gICAgaWYgKHByZWZpeC5jaGFyQXQoMCkgPT09ICcvJykge1xuICAgICAgcHJlZml4ID0gcGF0aC5qb2luKHRoaXMucm9vdCwgcHJlZml4KVxuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXggPSBwYXRoLnJlc29sdmUodGhpcy5yb290LCBwcmVmaXgpXG4gICAgICBpZiAodHJhaWwpXG4gICAgICAgIHByZWZpeCArPSAnLydcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJylcbiAgICBwcmVmaXggPSBwcmVmaXgucmVwbGFjZSgvXFxcXC9nLCAnLycpXG5cbiAgLy8gTWFyayB0aGlzIGFzIGEgbWF0Y2hcbiAgdGhpcy5fZW1pdE1hdGNoKGluZGV4LCBwcmVmaXgpXG4gIGNiKClcbn1cblxuLy8gUmV0dXJucyBlaXRoZXIgJ0RJUicsICdGSUxFJywgb3IgZmFsc2Vcbkdsb2IucHJvdG90eXBlLl9zdGF0ID0gZnVuY3Rpb24gKGYsIGNiKSB7XG4gIHZhciBhYnMgPSB0aGlzLl9tYWtlQWJzKGYpXG4gIHZhciBuZWVkRGlyID0gZi5zbGljZSgtMSkgPT09ICcvJ1xuXG4gIGlmIChmLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKVxuICAgIHJldHVybiBjYigpXG5cbiAgaWYgKCF0aGlzLnN0YXQgJiYgb3duUHJvcCh0aGlzLmNhY2hlLCBhYnMpKSB7XG4gICAgdmFyIGMgPSB0aGlzLmNhY2hlW2Fic11cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGMpKVxuICAgICAgYyA9ICdESVInXG5cbiAgICAvLyBJdCBleGlzdHMsIGJ1dCBtYXliZSBub3QgaG93IHdlIG5lZWQgaXRcbiAgICBpZiAoIW5lZWREaXIgfHwgYyA9PT0gJ0RJUicpXG4gICAgICByZXR1cm4gY2IobnVsbCwgYylcblxuICAgIGlmIChuZWVkRGlyICYmIGMgPT09ICdGSUxFJylcbiAgICAgIHJldHVybiBjYigpXG5cbiAgICAvLyBvdGhlcndpc2Ugd2UgaGF2ZSB0byBzdGF0LCBiZWNhdXNlIG1heWJlIGM9dHJ1ZVxuICAgIC8vIGlmIHdlIGtub3cgaXQgZXhpc3RzLCBidXQgbm90IHdoYXQgaXQgaXMuXG4gIH1cblxuICB2YXIgZXhpc3RzXG4gIHZhciBzdGF0ID0gdGhpcy5zdGF0Q2FjaGVbYWJzXVxuICBpZiAoc3RhdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXQgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuIGNiKG51bGwsIHN0YXQpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgdHlwZSA9IHN0YXQuaXNEaXJlY3RvcnkoKSA/ICdESVInIDogJ0ZJTEUnXG4gICAgICBpZiAobmVlZERpciAmJiB0eXBlID09PSAnRklMRScpXG4gICAgICAgIHJldHVybiBjYigpXG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBjYihudWxsLCB0eXBlLCBzdGF0KVxuICAgIH1cbiAgfVxuXG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3RhdGNiID0gaW5mbGlnaHQoJ3N0YXRcXDAnICsgYWJzLCBsc3RhdGNiXylcbiAgaWYgKHN0YXRjYilcbiAgICBzZWxmLmZzLmxzdGF0KGFicywgc3RhdGNiKVxuXG4gIGZ1bmN0aW9uIGxzdGF0Y2JfIChlciwgbHN0YXQpIHtcbiAgICBpZiAobHN0YXQgJiYgbHN0YXQuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgLy8gSWYgaXQncyBhIHN5bWxpbmssIHRoZW4gdHJlYXQgaXQgYXMgdGhlIHRhcmdldCwgdW5sZXNzXG4gICAgICAvLyB0aGUgdGFyZ2V0IGRvZXMgbm90IGV4aXN0LCB0aGVuIHRyZWF0IGl0IGFzIGEgZmlsZS5cbiAgICAgIHJldHVybiBzZWxmLmZzLnN0YXQoYWJzLCBmdW5jdGlvbiAoZXIsIHN0YXQpIHtcbiAgICAgICAgaWYgKGVyKVxuICAgICAgICAgIHNlbGYuX3N0YXQyKGYsIGFicywgbnVsbCwgbHN0YXQsIGNiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc2VsZi5fc3RhdDIoZiwgYWJzLCBlciwgc3RhdCwgY2IpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLl9zdGF0MihmLCBhYnMsIGVyLCBsc3RhdCwgY2IpXG4gICAgfVxuICB9XG59XG5cbkdsb2IucHJvdG90eXBlLl9zdGF0MiA9IGZ1bmN0aW9uIChmLCBhYnMsIGVyLCBzdGF0LCBjYikge1xuICBpZiAoZXIgJiYgKGVyLmNvZGUgPT09ICdFTk9FTlQnIHx8IGVyLmNvZGUgPT09ICdFTk9URElSJykpIHtcbiAgICB0aGlzLnN0YXRDYWNoZVthYnNdID0gZmFsc2VcbiAgICByZXR1cm4gY2IoKVxuICB9XG5cbiAgdmFyIG5lZWREaXIgPSBmLnNsaWNlKC0xKSA9PT0gJy8nXG4gIHRoaXMuc3RhdENhY2hlW2Fic10gPSBzdGF0XG5cbiAgaWYgKGFicy5zbGljZSgtMSkgPT09ICcvJyAmJiBzdGF0ICYmICFzdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgcmV0dXJuIGNiKG51bGwsIGZhbHNlLCBzdGF0KVxuXG4gIHZhciBjID0gdHJ1ZVxuICBpZiAoc3RhdClcbiAgICBjID0gc3RhdC5pc0RpcmVjdG9yeSgpID8gJ0RJUicgOiAnRklMRSdcbiAgdGhpcy5jYWNoZVthYnNdID0gdGhpcy5jYWNoZVthYnNdIHx8IGNcblxuICBpZiAobmVlZERpciAmJiBjID09PSAnRklMRScpXG4gICAgcmV0dXJuIGNiKClcblxuICByZXR1cm4gY2IobnVsbCwgYywgc3RhdClcbn1cbiIsInZhciBjb25jYXRNYXAgPSByZXF1aXJlKCdjb25jYXQtbWFwJyk7XG52YXIgYmFsYW5jZWQgPSByZXF1aXJlKCdiYWxhbmNlZC1tYXRjaCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cGFuZFRvcDtcblxudmFyIGVzY1NsYXNoID0gJ1xcMFNMQVNIJytNYXRoLnJhbmRvbSgpKydcXDAnO1xudmFyIGVzY09wZW4gPSAnXFwwT1BFTicrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NDbG9zZSA9ICdcXDBDTE9TRScrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NDb21tYSA9ICdcXDBDT01NQScrTWF0aC5yYW5kb20oKSsnXFwwJztcbnZhciBlc2NQZXJpb2QgPSAnXFwwUEVSSU9EJytNYXRoLnJhbmRvbSgpKydcXDAnO1xuXG5mdW5jdGlvbiBudW1lcmljKHN0cikge1xuICByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCkgPT0gc3RyXG4gICAgPyBwYXJzZUludChzdHIsIDEwKVxuICAgIDogc3RyLmNoYXJDb2RlQXQoMCk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUJyYWNlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5zcGxpdCgnXFxcXFxcXFwnKS5qb2luKGVzY1NsYXNoKVxuICAgICAgICAgICAgLnNwbGl0KCdcXFxceycpLmpvaW4oZXNjT3BlbilcbiAgICAgICAgICAgIC5zcGxpdCgnXFxcXH0nKS5qb2luKGVzY0Nsb3NlKVxuICAgICAgICAgICAgLnNwbGl0KCdcXFxcLCcpLmpvaW4oZXNjQ29tbWEpXG4gICAgICAgICAgICAuc3BsaXQoJ1xcXFwuJykuam9pbihlc2NQZXJpb2QpO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZUJyYWNlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5zcGxpdChlc2NTbGFzaCkuam9pbignXFxcXCcpXG4gICAgICAgICAgICAuc3BsaXQoZXNjT3Blbikuam9pbigneycpXG4gICAgICAgICAgICAuc3BsaXQoZXNjQ2xvc2UpLmpvaW4oJ30nKVxuICAgICAgICAgICAgLnNwbGl0KGVzY0NvbW1hKS5qb2luKCcsJylcbiAgICAgICAgICAgIC5zcGxpdChlc2NQZXJpb2QpLmpvaW4oJy4nKTtcbn1cblxuXG4vLyBCYXNpY2FsbHkganVzdCBzdHIuc3BsaXQoXCIsXCIpLCBidXQgaGFuZGxpbmcgY2FzZXNcbi8vIHdoZXJlIHdlIGhhdmUgbmVzdGVkIGJyYWNlZCBzZWN0aW9ucywgd2hpY2ggc2hvdWxkIGJlXG4vLyB0cmVhdGVkIGFzIGluZGl2aWR1YWwgbWVtYmVycywgbGlrZSB7YSx7YixjfSxkfVxuZnVuY3Rpb24gcGFyc2VDb21tYVBhcnRzKHN0cikge1xuICBpZiAoIXN0cilcbiAgICByZXR1cm4gWycnXTtcblxuICB2YXIgcGFydHMgPSBbXTtcbiAgdmFyIG0gPSBiYWxhbmNlZCgneycsICd9Jywgc3RyKTtcblxuICBpZiAoIW0pXG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnLCcpO1xuXG4gIHZhciBwcmUgPSBtLnByZTtcbiAgdmFyIGJvZHkgPSBtLmJvZHk7XG4gIHZhciBwb3N0ID0gbS5wb3N0O1xuICB2YXIgcCA9IHByZS5zcGxpdCgnLCcpO1xuXG4gIHBbcC5sZW5ndGgtMV0gKz0gJ3snICsgYm9keSArICd9JztcbiAgdmFyIHBvc3RQYXJ0cyA9IHBhcnNlQ29tbWFQYXJ0cyhwb3N0KTtcbiAgaWYgKHBvc3QubGVuZ3RoKSB7XG4gICAgcFtwLmxlbmd0aC0xXSArPSBwb3N0UGFydHMuc2hpZnQoKTtcbiAgICBwLnB1c2guYXBwbHkocCwgcG9zdFBhcnRzKTtcbiAgfVxuXG4gIHBhcnRzLnB1c2guYXBwbHkocGFydHMsIHApO1xuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuZnVuY3Rpb24gZXhwYW5kVG9wKHN0cikge1xuICBpZiAoIXN0cilcbiAgICByZXR1cm4gW107XG5cbiAgLy8gSSBkb24ndCBrbm93IHdoeSBCYXNoIDQuMyBkb2VzIHRoaXMsIGJ1dCBpdCBkb2VzLlxuICAvLyBBbnl0aGluZyBzdGFydGluZyB3aXRoIHt9IHdpbGwgaGF2ZSB0aGUgZmlyc3QgdHdvIGJ5dGVzIHByZXNlcnZlZFxuICAvLyBidXQgKm9ubHkqIGF0IHRoZSB0b3AgbGV2ZWwsIHNvIHt9LGF9YiB3aWxsIG5vdCBleHBhbmQgdG8gYW55dGhpbmcsXG4gIC8vIGJ1dCBhe30sYn1jIHdpbGwgYmUgZXhwYW5kZWQgdG8gW2F9YyxhYmNdLlxuICAvLyBPbmUgY291bGQgYXJndWUgdGhhdCB0aGlzIGlzIGEgYnVnIGluIEJhc2gsIGJ1dCBzaW5jZSB0aGUgZ29hbCBvZlxuICAvLyB0aGlzIG1vZHVsZSBpcyB0byBtYXRjaCBCYXNoJ3MgcnVsZXMsIHdlIGVzY2FwZSBhIGxlYWRpbmcge31cbiAgaWYgKHN0ci5zdWJzdHIoMCwgMikgPT09ICd7fScpIHtcbiAgICBzdHIgPSAnXFxcXHtcXFxcfScgKyBzdHIuc3Vic3RyKDIpO1xuICB9XG5cbiAgcmV0dXJuIGV4cGFuZChlc2NhcGVCcmFjZXMoc3RyKSwgdHJ1ZSkubWFwKHVuZXNjYXBlQnJhY2VzKTtcbn1cblxuZnVuY3Rpb24gaWRlbnRpdHkoZSkge1xuICByZXR1cm4gZTtcbn1cblxuZnVuY3Rpb24gZW1icmFjZShzdHIpIHtcbiAgcmV0dXJuICd7JyArIHN0ciArICd9Jztcbn1cbmZ1bmN0aW9uIGlzUGFkZGVkKGVsKSB7XG4gIHJldHVybiAvXi0/MFxcZC8udGVzdChlbCk7XG59XG5cbmZ1bmN0aW9uIGx0ZShpLCB5KSB7XG4gIHJldHVybiBpIDw9IHk7XG59XG5mdW5jdGlvbiBndGUoaSwgeSkge1xuICByZXR1cm4gaSA+PSB5O1xufVxuXG5mdW5jdGlvbiBleHBhbmQoc3RyLCBpc1RvcCkge1xuICB2YXIgZXhwYW5zaW9ucyA9IFtdO1xuXG4gIHZhciBtID0gYmFsYW5jZWQoJ3snLCAnfScsIHN0cik7XG4gIGlmICghbSB8fCAvXFwkJC8udGVzdChtLnByZSkpIHJldHVybiBbc3RyXTtcblxuICB2YXIgaXNOdW1lcmljU2VxdWVuY2UgPSAvXi0/XFxkK1xcLlxcLi0/XFxkKyg/OlxcLlxcLi0/XFxkKyk/JC8udGVzdChtLmJvZHkpO1xuICB2YXIgaXNBbHBoYVNlcXVlbmNlID0gL15bYS16QS1aXVxcLlxcLlthLXpBLVpdKD86XFwuXFwuLT9cXGQrKT8kLy50ZXN0KG0uYm9keSk7XG4gIHZhciBpc1NlcXVlbmNlID0gaXNOdW1lcmljU2VxdWVuY2UgfHwgaXNBbHBoYVNlcXVlbmNlO1xuICB2YXIgaXNPcHRpb25zID0gbS5ib2R5LmluZGV4T2YoJywnKSA+PSAwO1xuICBpZiAoIWlzU2VxdWVuY2UgJiYgIWlzT3B0aW9ucykge1xuICAgIC8vIHthfSxifVxuICAgIGlmIChtLnBvc3QubWF0Y2goLywuKlxcfS8pKSB7XG4gICAgICBzdHIgPSBtLnByZSArICd7JyArIG0uYm9keSArIGVzY0Nsb3NlICsgbS5wb3N0O1xuICAgICAgcmV0dXJuIGV4cGFuZChzdHIpO1xuICAgIH1cbiAgICByZXR1cm4gW3N0cl07XG4gIH1cblxuICB2YXIgbjtcbiAgaWYgKGlzU2VxdWVuY2UpIHtcbiAgICBuID0gbS5ib2R5LnNwbGl0KC9cXC5cXC4vKTtcbiAgfSBlbHNlIHtcbiAgICBuID0gcGFyc2VDb21tYVBhcnRzKG0uYm9keSk7XG4gICAgaWYgKG4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyB4e3thLGJ9fXkgPT0+IHh7YX15IHh7Yn15XG4gICAgICBuID0gZXhwYW5kKG5bMF0sIGZhbHNlKS5tYXAoZW1icmFjZSk7XG4gICAgICBpZiAobi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdmFyIHBvc3QgPSBtLnBvc3QubGVuZ3RoXG4gICAgICAgICAgPyBleHBhbmQobS5wb3N0LCBmYWxzZSlcbiAgICAgICAgICA6IFsnJ107XG4gICAgICAgIHJldHVybiBwb3N0Lm1hcChmdW5jdGlvbihwKSB7XG4gICAgICAgICAgcmV0dXJuIG0ucHJlICsgblswXSArIHA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGF0IHRoaXMgcG9pbnQsIG4gaXMgdGhlIHBhcnRzLCBhbmQgd2Uga25vdyBpdCdzIG5vdCBhIGNvbW1hIHNldFxuICAvLyB3aXRoIGEgc2luZ2xlIGVudHJ5LlxuXG4gIC8vIG5vIG5lZWQgdG8gZXhwYW5kIHByZSwgc2luY2UgaXQgaXMgZ3VhcmFudGVlZCB0byBiZSBmcmVlIG9mIGJyYWNlLXNldHNcbiAgdmFyIHByZSA9IG0ucHJlO1xuICB2YXIgcG9zdCA9IG0ucG9zdC5sZW5ndGhcbiAgICA/IGV4cGFuZChtLnBvc3QsIGZhbHNlKVxuICAgIDogWycnXTtcblxuICB2YXIgTjtcblxuICBpZiAoaXNTZXF1ZW5jZSkge1xuICAgIHZhciB4ID0gbnVtZXJpYyhuWzBdKTtcbiAgICB2YXIgeSA9IG51bWVyaWMoblsxXSk7XG4gICAgdmFyIHdpZHRoID0gTWF0aC5tYXgoblswXS5sZW5ndGgsIG5bMV0ubGVuZ3RoKVxuICAgIHZhciBpbmNyID0gbi5sZW5ndGggPT0gM1xuICAgICAgPyBNYXRoLmFicyhudW1lcmljKG5bMl0pKVxuICAgICAgOiAxO1xuICAgIHZhciB0ZXN0ID0gbHRlO1xuICAgIHZhciByZXZlcnNlID0geSA8IHg7XG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgIGluY3IgKj0gLTE7XG4gICAgICB0ZXN0ID0gZ3RlO1xuICAgIH1cbiAgICB2YXIgcGFkID0gbi5zb21lKGlzUGFkZGVkKTtcblxuICAgIE4gPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSB4OyB0ZXN0KGksIHkpOyBpICs9IGluY3IpIHtcbiAgICAgIHZhciBjO1xuICAgICAgaWYgKGlzQWxwaGFTZXF1ZW5jZSkge1xuICAgICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcbiAgICAgICAgaWYgKGMgPT09ICdcXFxcJylcbiAgICAgICAgICBjID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjID0gU3RyaW5nKGkpO1xuICAgICAgICBpZiAocGFkKSB7XG4gICAgICAgICAgdmFyIG5lZWQgPSB3aWR0aCAtIGMubGVuZ3RoO1xuICAgICAgICAgIGlmIChuZWVkID4gMCkge1xuICAgICAgICAgICAgdmFyIHogPSBuZXcgQXJyYXkobmVlZCArIDEpLmpvaW4oJzAnKTtcbiAgICAgICAgICAgIGlmIChpIDwgMClcbiAgICAgICAgICAgICAgYyA9ICctJyArIHogKyBjLnNsaWNlKDEpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjID0geiArIGM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBOLnB1c2goYyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIE4gPSBjb25jYXRNYXAobiwgZnVuY3Rpb24oZWwpIHsgcmV0dXJuIGV4cGFuZChlbCwgZmFsc2UpIH0pO1xuICB9XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBOLmxlbmd0aDsgaisrKSB7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBwb3N0Lmxlbmd0aDsgaysrKSB7XG4gICAgICB2YXIgZXhwYW5zaW9uID0gcHJlICsgTltqXSArIHBvc3Rba107XG4gICAgICBpZiAoIWlzVG9wIHx8IGlzU2VxdWVuY2UgfHwgZXhwYW5zaW9uKVxuICAgICAgICBleHBhbnNpb25zLnB1c2goZXhwYW5zaW9uKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwYW5zaW9ucztcbn1cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBtaW5pbWF0Y2hcbm1pbmltYXRjaC5NaW5pbWF0Y2ggPSBNaW5pbWF0Y2hcblxudmFyIHBhdGggPSAoZnVuY3Rpb24gKCkgeyB0cnkgeyByZXR1cm4gcmVxdWlyZSgncGF0aCcpIH0gY2F0Y2ggKGUpIHt9fSgpKSB8fCB7XG4gIHNlcDogJy8nXG59XG5taW5pbWF0Y2guc2VwID0gcGF0aC5zZXBcblxudmFyIEdMT0JTVEFSID0gbWluaW1hdGNoLkdMT0JTVEFSID0gTWluaW1hdGNoLkdMT0JTVEFSID0ge31cbnZhciBleHBhbmQgPSByZXF1aXJlKCdicmFjZS1leHBhbnNpb24nKVxuXG52YXIgcGxUeXBlcyA9IHtcbiAgJyEnOiB7IG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogJykpW14vXSo/KSd9LFxuICAnPyc6IHsgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICcrJzogeyBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgJyonOiB7IG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAnQCc6IHsgb3BlbjogJyg/OicsIGNsb3NlOiAnKScgfVxufVxuXG4vLyBhbnkgc2luZ2xlIHRoaW5nIG90aGVyIHRoYW4gL1xuLy8gZG9uJ3QgbmVlZCB0byBlc2NhcGUgLyB3aGVuIHVzaW5nIG5ldyBSZWdFeHAoKVxudmFyIHFtYXJrID0gJ1teL10nXG5cbi8vICogPT4gYW55IG51bWJlciBvZiBjaGFyYWN0ZXJzXG52YXIgc3RhciA9IHFtYXJrICsgJyo/J1xuXG4vLyAqKiB3aGVuIGRvdHMgYXJlIGFsbG93ZWQuICBBbnl0aGluZyBnb2VzLCBleGNlcHQgLi4gYW5kIC5cbi8vIG5vdCAoXiBvciAvIGZvbGxvd2VkIGJ5IG9uZSBvciB0d28gZG90cyBmb2xsb3dlZCBieSAkIG9yIC8pLFxuLy8gZm9sbG93ZWQgYnkgYW55dGhpbmcsIGFueSBudW1iZXIgb2YgdGltZXMuXG52YXIgdHdvU3RhckRvdCA9ICcoPzooPyEoPzpcXFxcXFwvfF4pKD86XFxcXC57MSwyfSkoJHxcXFxcXFwvKSkuKSo/J1xuXG4vLyBub3QgYSBeIG9yIC8gZm9sbG93ZWQgYnkgYSBkb3QsXG4vLyBmb2xsb3dlZCBieSBhbnl0aGluZywgYW55IG51bWJlciBvZiB0aW1lcy5cbnZhciB0d29TdGFyTm9Eb3QgPSAnKD86KD8hKD86XFxcXFxcL3xeKVxcXFwuKS4pKj8nXG5cbi8vIGNoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVzY2FwZWQgaW4gUmVnRXhwLlxudmFyIHJlU3BlY2lhbHMgPSBjaGFyU2V0KCcoKS4qe30rP1tdXiRcXFxcIScpXG5cbi8vIFwiYWJjXCIgLT4geyBhOnRydWUsIGI6dHJ1ZSwgYzp0cnVlIH1cbmZ1bmN0aW9uIGNoYXJTZXQgKHMpIHtcbiAgcmV0dXJuIHMuc3BsaXQoJycpLnJlZHVjZShmdW5jdGlvbiAoc2V0LCBjKSB7XG4gICAgc2V0W2NdID0gdHJ1ZVxuICAgIHJldHVybiBzZXRcbiAgfSwge30pXG59XG5cbi8vIG5vcm1hbGl6ZXMgc2xhc2hlcy5cbnZhciBzbGFzaFNwbGl0ID0gL1xcLysvXG5cbm1pbmltYXRjaC5maWx0ZXIgPSBmaWx0ZXJcbmZ1bmN0aW9uIGZpbHRlciAocGF0dGVybiwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICByZXR1cm4gZnVuY3Rpb24gKHAsIGksIGxpc3QpIHtcbiAgICByZXR1cm4gbWluaW1hdGNoKHAsIHBhdHRlcm4sIG9wdGlvbnMpXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0IChhLCBiKSB7XG4gIGIgPSBiIHx8IHt9XG4gIHZhciB0ID0ge31cbiAgT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgIHRba10gPSBhW2tdXG4gIH0pXG4gIE9iamVjdC5rZXlzKGIpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB0W2tdID0gYltrXVxuICB9KVxuICByZXR1cm4gdFxufVxuXG5taW5pbWF0Y2guZGVmYXVsdHMgPSBmdW5jdGlvbiAoZGVmKSB7XG4gIGlmICghZGVmIHx8IHR5cGVvZiBkZWYgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhkZWYpLmxlbmd0aCkge1xuICAgIHJldHVybiBtaW5pbWF0Y2hcbiAgfVxuXG4gIHZhciBvcmlnID0gbWluaW1hdGNoXG5cbiAgdmFyIG0gPSBmdW5jdGlvbiBtaW5pbWF0Y2ggKHAsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3JpZyhwLCBwYXR0ZXJuLCBleHQoZGVmLCBvcHRpb25zKSlcbiAgfVxuXG4gIG0uTWluaW1hdGNoID0gZnVuY3Rpb24gTWluaW1hdGNoIChwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBvcmlnLk1pbmltYXRjaChwYXR0ZXJuLCBleHQoZGVmLCBvcHRpb25zKSlcbiAgfVxuICBtLk1pbmltYXRjaC5kZWZhdWx0cyA9IGZ1bmN0aW9uIGRlZmF1bHRzIChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9yaWcuZGVmYXVsdHMoZXh0KGRlZiwgb3B0aW9ucykpLk1pbmltYXRjaFxuICB9XG5cbiAgbS5maWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIgKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3JpZy5maWx0ZXIocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpXG4gIH1cblxuICBtLmRlZmF1bHRzID0gZnVuY3Rpb24gZGVmYXVsdHMgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3JpZy5kZWZhdWx0cyhleHQoZGVmLCBvcHRpb25zKSlcbiAgfVxuXG4gIG0ubWFrZVJlID0gZnVuY3Rpb24gbWFrZVJlIChwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9yaWcubWFrZVJlKHBhdHRlcm4sIGV4dChkZWYsIG9wdGlvbnMpKVxuICB9XG5cbiAgbS5icmFjZUV4cGFuZCA9IGZ1bmN0aW9uIGJyYWNlRXhwYW5kIChwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9yaWcuYnJhY2VFeHBhbmQocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpXG4gIH1cblxuICBtLm1hdGNoID0gZnVuY3Rpb24gKGxpc3QsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3JpZy5tYXRjaChsaXN0LCBwYXR0ZXJuLCBleHQoZGVmLCBvcHRpb25zKSlcbiAgfVxuXG4gIHJldHVybiBtXG59XG5cbk1pbmltYXRjaC5kZWZhdWx0cyA9IGZ1bmN0aW9uIChkZWYpIHtcbiAgcmV0dXJuIG1pbmltYXRjaC5kZWZhdWx0cyhkZWYpLk1pbmltYXRjaFxufVxuXG5mdW5jdGlvbiBtaW5pbWF0Y2ggKHAsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgYXNzZXJ0VmFsaWRQYXR0ZXJuKHBhdHRlcm4pXG5cbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cblxuICAvLyBzaG9ydGN1dDogY29tbWVudHMgbWF0Y2ggbm90aGluZy5cbiAgaWYgKCFvcHRpb25zLm5vY29tbWVudCAmJiBwYXR0ZXJuLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCBvcHRpb25zKS5tYXRjaChwKVxufVxuXG5mdW5jdGlvbiBNaW5pbWF0Y2ggKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE1pbmltYXRjaCkpIHtcbiAgICByZXR1cm4gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCBvcHRpb25zKVxuICB9XG5cbiAgYXNzZXJ0VmFsaWRQYXR0ZXJuKHBhdHRlcm4pXG5cbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cblxuICBwYXR0ZXJuID0gcGF0dGVybi50cmltKClcblxuICAvLyB3aW5kb3dzIHN1cHBvcnQ6IG5lZWQgdG8gdXNlIC8sIG5vdCBcXFxuICBpZiAoIW9wdGlvbnMuYWxsb3dXaW5kb3dzRXNjYXBlICYmIHBhdGguc2VwICE9PSAnLycpIHtcbiAgICBwYXR0ZXJuID0gcGF0dGVybi5zcGxpdChwYXRoLnNlcCkuam9pbignLycpXG4gIH1cblxuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gIHRoaXMuc2V0ID0gW11cbiAgdGhpcy5wYXR0ZXJuID0gcGF0dGVyblxuICB0aGlzLnJlZ2V4cCA9IG51bGxcbiAgdGhpcy5uZWdhdGUgPSBmYWxzZVxuICB0aGlzLmNvbW1lbnQgPSBmYWxzZVxuICB0aGlzLmVtcHR5ID0gZmFsc2VcbiAgdGhpcy5wYXJ0aWFsID0gISFvcHRpb25zLnBhcnRpYWxcblxuICAvLyBtYWtlIHRoZSBzZXQgb2YgcmVnZXhwcyBldGMuXG4gIHRoaXMubWFrZSgpXG59XG5cbk1pbmltYXRjaC5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbiAoKSB7fVxuXG5NaW5pbWF0Y2gucHJvdG90eXBlLm1ha2UgPSBtYWtlXG5mdW5jdGlvbiBtYWtlICgpIHtcbiAgdmFyIHBhdHRlcm4gPSB0aGlzLnBhdHRlcm5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcblxuICAvLyBlbXB0eSBwYXR0ZXJucyBhbmQgY29tbWVudHMgbWF0Y2ggbm90aGluZy5cbiAgaWYgKCFvcHRpb25zLm5vY29tbWVudCAmJiBwYXR0ZXJuLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgdGhpcy5jb21tZW50ID0gdHJ1ZVxuICAgIHJldHVyblxuICB9XG4gIGlmICghcGF0dGVybikge1xuICAgIHRoaXMuZW1wdHkgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBzdGVwIDE6IGZpZ3VyZSBvdXQgbmVnYXRpb24sIGV0Yy5cbiAgdGhpcy5wYXJzZU5lZ2F0ZSgpXG5cbiAgLy8gc3RlcCAyOiBleHBhbmQgYnJhY2VzXG4gIHZhciBzZXQgPSB0aGlzLmdsb2JTZXQgPSB0aGlzLmJyYWNlRXhwYW5kKClcblxuICBpZiAob3B0aW9ucy5kZWJ1ZykgdGhpcy5kZWJ1ZyA9IGZ1bmN0aW9uIGRlYnVnKCkgeyBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cykgfVxuXG4gIHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCBzZXQpXG5cbiAgLy8gc3RlcCAzOiBub3cgd2UgaGF2ZSBhIHNldCwgc28gdHVybiBlYWNoIG9uZSBpbnRvIGEgc2VyaWVzIG9mIHBhdGgtcG9ydGlvblxuICAvLyBtYXRjaGluZyBwYXR0ZXJucy5cbiAgLy8gVGhlc2Ugd2lsbCBiZSByZWdleHBzLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgXCIqKlwiLCB3aGljaCBpc1xuICAvLyBzZXQgdG8gdGhlIEdMT0JTVEFSIG9iamVjdCBmb3IgZ2xvYnN0YXIgYmVoYXZpb3IsXG4gIC8vIGFuZCB3aWxsIG5vdCBjb250YWluIGFueSAvIGNoYXJhY3RlcnNcbiAgc2V0ID0gdGhpcy5nbG9iUGFydHMgPSBzZXQubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMuc3BsaXQoc2xhc2hTcGxpdClcbiAgfSlcblxuICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgc2V0KVxuXG4gIC8vIGdsb2IgLS0+IHJlZ2V4cHNcbiAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbiAocywgc2ksIHNldCkge1xuICAgIHJldHVybiBzLm1hcCh0aGlzLnBhcnNlLCB0aGlzKVxuICB9LCB0aGlzKVxuXG4gIHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCBzZXQpXG5cbiAgLy8gZmlsdGVyIG91dCBldmVyeXRoaW5nIHRoYXQgZGlkbid0IGNvbXBpbGUgcHJvcGVybHkuXG4gIHNldCA9IHNldC5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcy5pbmRleE9mKGZhbHNlKSA9PT0gLTFcbiAgfSlcblxuICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgc2V0KVxuXG4gIHRoaXMuc2V0ID0gc2V0XG59XG5cbk1pbmltYXRjaC5wcm90b3R5cGUucGFyc2VOZWdhdGUgPSBwYXJzZU5lZ2F0ZVxuZnVuY3Rpb24gcGFyc2VOZWdhdGUgKCkge1xuICB2YXIgcGF0dGVybiA9IHRoaXMucGF0dGVyblxuICB2YXIgbmVnYXRlID0gZmFsc2VcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcbiAgdmFyIG5lZ2F0ZU9mZnNldCA9IDBcblxuICBpZiAob3B0aW9ucy5ub25lZ2F0ZSkgcmV0dXJuXG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXR0ZXJuLmxlbmd0aFxuICAgIDsgaSA8IGwgJiYgcGF0dGVybi5jaGFyQXQoaSkgPT09ICchJ1xuICAgIDsgaSsrKSB7XG4gICAgbmVnYXRlID0gIW5lZ2F0ZVxuICAgIG5lZ2F0ZU9mZnNldCsrXG4gIH1cblxuICBpZiAobmVnYXRlT2Zmc2V0KSB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuLnN1YnN0cihuZWdhdGVPZmZzZXQpXG4gIHRoaXMubmVnYXRlID0gbmVnYXRlXG59XG5cbi8vIEJyYWNlIGV4cGFuc2lvbjpcbi8vIGF7YixjfWQgLT4gYWJkIGFjZFxuLy8gYXtiLH1jIC0+IGFiYyBhY1xuLy8gYXswLi4zfWQgLT4gYTBkIGExZCBhMmQgYTNkXG4vLyBhe2IsY3tkLGV9Zn1nIC0+IGFiZyBhY2RmZyBhY2VmZ1xuLy8gYXtiLGN9ZHtlLGZ9ZyAtPiBhYmRlZyBhY2RlZyBhYmRlZyBhYmRmZ1xuLy9cbi8vIEludmFsaWQgc2V0cyBhcmUgbm90IGV4cGFuZGVkLlxuLy8gYXsyLi59YiAtPiBhezIuLn1iXG4vLyBhe2J9YyAtPiBhe2J9Y1xubWluaW1hdGNoLmJyYWNlRXhwYW5kID0gZnVuY3Rpb24gKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGJyYWNlRXhwYW5kKHBhdHRlcm4sIG9wdGlvbnMpXG59XG5cbk1pbmltYXRjaC5wcm90b3R5cGUuYnJhY2VFeHBhbmQgPSBicmFjZUV4cGFuZFxuXG5mdW5jdGlvbiBicmFjZUV4cGFuZCAocGF0dGVybiwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIE1pbmltYXRjaCkge1xuICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9XG4gIH1cblxuICBwYXR0ZXJuID0gdHlwZW9mIHBhdHRlcm4gPT09ICd1bmRlZmluZWQnXG4gICAgPyB0aGlzLnBhdHRlcm4gOiBwYXR0ZXJuXG5cbiAgYXNzZXJ0VmFsaWRQYXR0ZXJuKHBhdHRlcm4pXG5cbiAgLy8gVGhhbmtzIHRvIFlldGluZyBMaSA8aHR0cHM6Ly9naXRodWIuY29tL3lldGluZ2xpPiBmb3JcbiAgLy8gaW1wcm92aW5nIHRoaXMgcmVnZXhwIHRvIGF2b2lkIGEgUmVET1MgdnVsbmVyYWJpbGl0eS5cbiAgaWYgKG9wdGlvbnMubm9icmFjZSB8fCAhL1xceyg/Oig/IVxceykuKSpcXH0vLnRlc3QocGF0dGVybikpIHtcbiAgICAvLyBzaG9ydGN1dC4gbm8gbmVlZCB0byBleHBhbmQuXG4gICAgcmV0dXJuIFtwYXR0ZXJuXVxuICB9XG5cbiAgcmV0dXJuIGV4cGFuZChwYXR0ZXJuKVxufVxuXG52YXIgTUFYX1BBVFRFUk5fTEVOR1RIID0gMTAyNCAqIDY0XG52YXIgYXNzZXJ0VmFsaWRQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgcGF0dGVybicpXG4gIH1cblxuICBpZiAocGF0dGVybi5sZW5ndGggPiBNQVhfUEFUVEVSTl9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXR0ZXJuIGlzIHRvbyBsb25nJylcbiAgfVxufVxuXG4vLyBwYXJzZSBhIGNvbXBvbmVudCBvZiB0aGUgZXhwYW5kZWQgc2V0LlxuLy8gQXQgdGhpcyBwb2ludCwgbm8gcGF0dGVybiBtYXkgY29udGFpbiBcIi9cIiBpbiBpdFxuLy8gc28gd2UncmUgZ29pbmcgdG8gcmV0dXJuIGEgMmQgYXJyYXksIHdoZXJlIGVhY2ggZW50cnkgaXMgdGhlIGZ1bGxcbi8vIHBhdHRlcm4sIHNwbGl0IG9uICcvJywgYW5kIHRoZW4gdHVybmVkIGludG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4vLyBBIHJlZ2V4cCBpcyBtYWRlIGF0IHRoZSBlbmQgd2hpY2ggam9pbnMgZWFjaCBhcnJheSB3aXRoIGFuXG4vLyBlc2NhcGVkIC8sIGFuZCBhbm90aGVyIGZ1bGwgb25lIHdoaWNoIGpvaW5zIGVhY2ggcmVnZXhwIHdpdGggfC5cbi8vXG4vLyBGb2xsb3dpbmcgdGhlIGxlYWQgb2YgQmFzaCA0LjEsIG5vdGUgdGhhdCBcIioqXCIgb25seSBoYXMgc3BlY2lhbCBtZWFuaW5nXG4vLyB3aGVuIGl0IGlzIHRoZSAqb25seSogdGhpbmcgaW4gYSBwYXRoIHBvcnRpb24uICBPdGhlcndpc2UsIGFueSBzZXJpZXNcbi8vIG9mICogaXMgZXF1aXZhbGVudCB0byBhIHNpbmdsZSAqLiAgR2xvYnN0YXIgYmVoYXZpb3IgaXMgZW5hYmxlZCBieVxuLy8gZGVmYXVsdCwgYW5kIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIG9wdGlvbnMubm9nbG9ic3Rhci5cbk1pbmltYXRjaC5wcm90b3R5cGUucGFyc2UgPSBwYXJzZVxudmFyIFNVQlBBUlNFID0ge31cbmZ1bmN0aW9uIHBhcnNlIChwYXR0ZXJuLCBpc1N1Yikge1xuICBhc3NlcnRWYWxpZFBhdHRlcm4ocGF0dGVybilcblxuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuXG4gIC8vIHNob3J0Y3V0c1xuICBpZiAocGF0dGVybiA9PT0gJyoqJykge1xuICAgIGlmICghb3B0aW9ucy5ub2dsb2JzdGFyKVxuICAgICAgcmV0dXJuIEdMT0JTVEFSXG4gICAgZWxzZVxuICAgICAgcGF0dGVybiA9ICcqJ1xuICB9XG4gIGlmIChwYXR0ZXJuID09PSAnJykgcmV0dXJuICcnXG5cbiAgdmFyIHJlID0gJydcbiAgdmFyIGhhc01hZ2ljID0gISFvcHRpb25zLm5vY2FzZVxuICB2YXIgZXNjYXBpbmcgPSBmYWxzZVxuICAvLyA/ID0+IG9uZSBzaW5nbGUgY2hhcmFjdGVyXG4gIHZhciBwYXR0ZXJuTGlzdFN0YWNrID0gW11cbiAgdmFyIG5lZ2F0aXZlTGlzdHMgPSBbXVxuICB2YXIgc3RhdGVDaGFyXG4gIHZhciBpbkNsYXNzID0gZmFsc2VcbiAgdmFyIHJlQ2xhc3NTdGFydCA9IC0xXG4gIHZhciBjbGFzc1N0YXJ0ID0gLTFcbiAgLy8gLiBhbmQgLi4gbmV2ZXIgbWF0Y2ggYW55dGhpbmcgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggLixcbiAgLy8gZXZlbiB3aGVuIG9wdGlvbnMuZG90IGlzIHNldC5cbiAgdmFyIHBhdHRlcm5TdGFydCA9IHBhdHRlcm4uY2hhckF0KDApID09PSAnLicgPyAnJyAvLyBhbnl0aGluZ1xuICAvLyBub3QgKHN0YXJ0IG9yIC8gZm9sbG93ZWQgYnkgLiBvciAuLiBmb2xsb3dlZCBieSAvIG9yIGVuZClcbiAgOiBvcHRpb25zLmRvdCA/ICcoPyEoPzpefFxcXFxcXC8pXFxcXC57MSwyfSg/OiR8XFxcXFxcLykpJ1xuICA6ICcoPyFcXFxcLiknXG4gIHZhciBzZWxmID0gdGhpc1xuXG4gIGZ1bmN0aW9uIGNsZWFyU3RhdGVDaGFyICgpIHtcbiAgICBpZiAoc3RhdGVDaGFyKSB7XG4gICAgICAvLyB3ZSBoYWQgc29tZSBzdGF0ZS10cmFja2luZyBjaGFyYWN0ZXJcbiAgICAgIC8vIHRoYXQgd2Fzbid0IGNvbnN1bWVkIGJ5IHRoaXMgcGFzcy5cbiAgICAgIHN3aXRjaCAoc3RhdGVDaGFyKSB7XG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgIHJlICs9IHN0YXJcbiAgICAgICAgICBoYXNNYWdpYyA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnPyc6XG4gICAgICAgICAgcmUgKz0gcW1hcmtcbiAgICAgICAgICBoYXNNYWdpYyA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZSArPSAnXFxcXCcgKyBzdGF0ZUNoYXJcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHNlbGYuZGVidWcoJ2NsZWFyU3RhdGVDaGFyICVqICVqJywgc3RhdGVDaGFyLCByZSlcbiAgICAgIHN0YXRlQ2hhciA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHBhdHRlcm4ubGVuZ3RoLCBjXG4gICAgOyAoaSA8IGxlbikgJiYgKGMgPSBwYXR0ZXJuLmNoYXJBdChpKSlcbiAgICA7IGkrKykge1xuICAgIHRoaXMuZGVidWcoJyVzXFx0JXMgJXMgJWonLCBwYXR0ZXJuLCBpLCByZSwgYylcblxuICAgIC8vIHNraXAgb3ZlciBhbnkgdGhhdCBhcmUgZXNjYXBlZC5cbiAgICBpZiAoZXNjYXBpbmcgJiYgcmVTcGVjaWFsc1tjXSkge1xuICAgICAgcmUgKz0gJ1xcXFwnICsgY1xuICAgICAgZXNjYXBpbmcgPSBmYWxzZVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGMpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBjYXNlICcvJzoge1xuICAgICAgICAvLyBjb21wbGV0ZWx5IG5vdCBhbGxvd2VkLCBldmVuIGVzY2FwZWQuXG4gICAgICAgIC8vIFNob3VsZCBhbHJlYWR5IGJlIHBhdGgtc3BsaXQgYnkgbm93LlxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIGNsZWFyU3RhdGVDaGFyKClcbiAgICAgICAgZXNjYXBpbmcgPSB0cnVlXG4gICAgICBjb250aW51ZVxuXG4gICAgICAvLyB0aGUgdmFyaW91cyBzdGF0ZUNoYXIgdmFsdWVzXG4gICAgICAvLyBmb3IgdGhlIFwiZXh0Z2xvYlwiIHN0dWZmLlxuICAgICAgY2FzZSAnPyc6XG4gICAgICBjYXNlICcqJzpcbiAgICAgIGNhc2UgJysnOlxuICAgICAgY2FzZSAnQCc6XG4gICAgICBjYXNlICchJzpcbiAgICAgICAgdGhpcy5kZWJ1ZygnJXNcXHQlcyAlcyAlaiA8LS0gc3RhdGVDaGFyJywgcGF0dGVybiwgaSwgcmUsIGMpXG5cbiAgICAgICAgLy8gYWxsIG9mIHRob3NlIGFyZSBsaXRlcmFscyBpbnNpZGUgYSBjbGFzcywgZXhjZXB0IHRoYXRcbiAgICAgICAgLy8gdGhlIGdsb2IgWyFhXSBtZWFucyBbXmFdIGluIHJlZ2V4cFxuICAgICAgICBpZiAoaW5DbGFzcykge1xuICAgICAgICAgIHRoaXMuZGVidWcoJyAgaW4gY2xhc3MnKVxuICAgICAgICAgIGlmIChjID09PSAnIScgJiYgaSA9PT0gY2xhc3NTdGFydCArIDEpIGMgPSAnXidcbiAgICAgICAgICByZSArPSBjXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHN0YXRlQ2hhciwgdGhlbiBpdCBtZWFuc1xuICAgICAgICAvLyB0aGF0IHRoZXJlIHdhcyBzb21ldGhpbmcgbGlrZSAqKiBvciArPyBpbiB0aGVyZS5cbiAgICAgICAgLy8gSGFuZGxlIHRoZSBzdGF0ZUNoYXIsIHRoZW4gcHJvY2VlZCB3aXRoIHRoaXMgb25lLlxuICAgICAgICBzZWxmLmRlYnVnKCdjYWxsIGNsZWFyU3RhdGVDaGFyICVqJywgc3RhdGVDaGFyKVxuICAgICAgICBjbGVhclN0YXRlQ2hhcigpXG4gICAgICAgIHN0YXRlQ2hhciA9IGNcbiAgICAgICAgLy8gaWYgZXh0Z2xvYiBpcyBkaXNhYmxlZCwgdGhlbiArKGFzZGZ8Zm9vKSBpc24ndCBhIHRoaW5nLlxuICAgICAgICAvLyBqdXN0IGNsZWFyIHRoZSBzdGF0ZWNoYXIgKm5vdyosIHJhdGhlciB0aGFuIGV2ZW4gZGl2aW5nIGludG9cbiAgICAgICAgLy8gdGhlIHBhdHRlcm5MaXN0IHN0dWZmLlxuICAgICAgICBpZiAob3B0aW9ucy5ub2V4dCkgY2xlYXJTdGF0ZUNoYXIoKVxuICAgICAgY29udGludWVcblxuICAgICAgY2FzZSAnKCc6XG4gICAgICAgIGlmIChpbkNsYXNzKSB7XG4gICAgICAgICAgcmUgKz0gJygnXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RhdGVDaGFyKSB7XG4gICAgICAgICAgcmUgKz0gJ1xcXFwoJ1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBwYXR0ZXJuTGlzdFN0YWNrLnB1c2goe1xuICAgICAgICAgIHR5cGU6IHN0YXRlQ2hhcixcbiAgICAgICAgICBzdGFydDogaSAtIDEsXG4gICAgICAgICAgcmVTdGFydDogcmUubGVuZ3RoLFxuICAgICAgICAgIG9wZW46IHBsVHlwZXNbc3RhdGVDaGFyXS5vcGVuLFxuICAgICAgICAgIGNsb3NlOiBwbFR5cGVzW3N0YXRlQ2hhcl0uY2xvc2VcbiAgICAgICAgfSlcbiAgICAgICAgLy8gbmVnYXRpb24gaXMgKD86KD8hanMpW14vXSopXG4gICAgICAgIHJlICs9IHN0YXRlQ2hhciA9PT0gJyEnID8gJyg/Oig/ISg/OicgOiAnKD86J1xuICAgICAgICB0aGlzLmRlYnVnKCdwbFR5cGUgJWogJWonLCBzdGF0ZUNoYXIsIHJlKVxuICAgICAgICBzdGF0ZUNoYXIgPSBmYWxzZVxuICAgICAgY29udGludWVcblxuICAgICAgY2FzZSAnKSc6XG4gICAgICAgIGlmIChpbkNsYXNzIHx8ICFwYXR0ZXJuTGlzdFN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgIHJlICs9ICdcXFxcKSdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuICAgICAgICBoYXNNYWdpYyA9IHRydWVcbiAgICAgICAgdmFyIHBsID0gcGF0dGVybkxpc3RTdGFjay5wb3AoKVxuICAgICAgICAvLyBuZWdhdGlvbiBpcyAoPzooPyFqcylbXi9dKilcbiAgICAgICAgLy8gVGhlIG90aGVycyBhcmUgKD86PHBhdHRlcm4+KTx0eXBlPlxuICAgICAgICByZSArPSBwbC5jbG9zZVxuICAgICAgICBpZiAocGwudHlwZSA9PT0gJyEnKSB7XG4gICAgICAgICAgbmVnYXRpdmVMaXN0cy5wdXNoKHBsKVxuICAgICAgICB9XG4gICAgICAgIHBsLnJlRW5kID0gcmUubGVuZ3RoXG4gICAgICBjb250aW51ZVxuXG4gICAgICBjYXNlICd8JzpcbiAgICAgICAgaWYgKGluQ2xhc3MgfHwgIXBhdHRlcm5MaXN0U3RhY2subGVuZ3RoIHx8IGVzY2FwaW5nKSB7XG4gICAgICAgICAgcmUgKz0gJ1xcXFx8J1xuICAgICAgICAgIGVzY2FwaW5nID0gZmFsc2VcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuICAgICAgICByZSArPSAnfCdcbiAgICAgIGNvbnRpbnVlXG5cbiAgICAgIC8vIHRoZXNlIGFyZSBtb3N0bHkgdGhlIHNhbWUgaW4gcmVnZXhwIGFuZCBnbG9iXG4gICAgICBjYXNlICdbJzpcbiAgICAgICAgLy8gc3dhbGxvdyBhbnkgc3RhdGUtdHJhY2tpbmcgY2hhciBiZWZvcmUgdGhlIFtcbiAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuXG4gICAgICAgIGlmIChpbkNsYXNzKSB7XG4gICAgICAgICAgcmUgKz0gJ1xcXFwnICsgY1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBpbkNsYXNzID0gdHJ1ZVxuICAgICAgICBjbGFzc1N0YXJ0ID0gaVxuICAgICAgICByZUNsYXNzU3RhcnQgPSByZS5sZW5ndGhcbiAgICAgICAgcmUgKz0gY1xuICAgICAgY29udGludWVcblxuICAgICAgY2FzZSAnXSc6XG4gICAgICAgIC8vICBhIHJpZ2h0IGJyYWNrZXQgc2hhbGwgbG9zZSBpdHMgc3BlY2lhbFxuICAgICAgICAvLyAgbWVhbmluZyBhbmQgcmVwcmVzZW50IGl0c2VsZiBpblxuICAgICAgICAvLyAgYSBicmFja2V0IGV4cHJlc3Npb24gaWYgaXQgb2NjdXJzXG4gICAgICAgIC8vICBmaXJzdCBpbiB0aGUgbGlzdC4gIC0tIFBPU0lYLjIgMi44LjMuMlxuICAgICAgICBpZiAoaSA9PT0gY2xhc3NTdGFydCArIDEgfHwgIWluQ2xhc3MpIHtcbiAgICAgICAgICByZSArPSAnXFxcXCcgKyBjXG4gICAgICAgICAgZXNjYXBpbmcgPSBmYWxzZVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgbGVmdCBhIGNsYXNzIG9wZW4uXG4gICAgICAgIC8vIFwiW3otYV1cIiBpcyB2YWxpZCwgZXF1aXZhbGVudCB0byBcIlxcW3otYVxcXVwiXG4gICAgICAgIC8vIHNwbGl0IHdoZXJlIHRoZSBsYXN0IFsgd2FzLCBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAvLyBhbiBpbnZhbGlkIHJlLiBpZiBzbywgcmUtd2FsayB0aGUgY29udGVudHMgb2YgdGhlXG4gICAgICAgIC8vIHdvdWxkLWJlIGNsYXNzIHRvIHJlLXRyYW5zbGF0ZSBhbnkgY2hhcmFjdGVycyB0aGF0XG4gICAgICAgIC8vIHdlcmUgcGFzc2VkIHRocm91Z2ggYXMtaXNcbiAgICAgICAgLy8gVE9ETzogSXQgd291bGQgcHJvYmFibHkgYmUgZmFzdGVyIHRvIGRldGVybWluZSB0aGlzXG4gICAgICAgIC8vIHdpdGhvdXQgYSB0cnkvY2F0Y2ggYW5kIGEgbmV3IFJlZ0V4cCwgYnV0IGl0J3MgdHJpY2t5XG4gICAgICAgIC8vIHRvIGRvIHNhZmVseS4gIEZvciBub3csIHRoaXMgaXMgc2FmZSBhbmQgd29ya3MuXG4gICAgICAgIHZhciBjcyA9IHBhdHRlcm4uc3Vic3RyaW5nKGNsYXNzU3RhcnQgKyAxLCBpKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIFJlZ0V4cCgnWycgKyBjcyArICddJylcbiAgICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgICAvLyBub3QgYSB2YWxpZCBjbGFzcyFcbiAgICAgICAgICB2YXIgc3AgPSB0aGlzLnBhcnNlKGNzLCBTVUJQQVJTRSlcbiAgICAgICAgICByZSA9IHJlLnN1YnN0cigwLCByZUNsYXNzU3RhcnQpICsgJ1xcXFxbJyArIHNwWzBdICsgJ1xcXFxdJ1xuICAgICAgICAgIGhhc01hZ2ljID0gaGFzTWFnaWMgfHwgc3BbMV1cbiAgICAgICAgICBpbkNsYXNzID0gZmFsc2VcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmluaXNoIHVwIHRoZSBjbGFzcy5cbiAgICAgICAgaGFzTWFnaWMgPSB0cnVlXG4gICAgICAgIGluQ2xhc3MgPSBmYWxzZVxuICAgICAgICByZSArPSBjXG4gICAgICBjb250aW51ZVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBzd2FsbG93IGFueSBzdGF0ZSBjaGFyIHRoYXQgd2Fzbid0IGNvbnN1bWVkXG4gICAgICAgIGNsZWFyU3RhdGVDaGFyKClcblxuICAgICAgICBpZiAoZXNjYXBpbmcpIHtcbiAgICAgICAgICAvLyBubyBuZWVkXG4gICAgICAgICAgZXNjYXBpbmcgPSBmYWxzZVxuICAgICAgICB9IGVsc2UgaWYgKHJlU3BlY2lhbHNbY11cbiAgICAgICAgICAmJiAhKGMgPT09ICdeJyAmJiBpbkNsYXNzKSkge1xuICAgICAgICAgIHJlICs9ICdcXFxcJ1xuICAgICAgICB9XG5cbiAgICAgICAgcmUgKz0gY1xuXG4gICAgfSAvLyBzd2l0Y2hcbiAgfSAvLyBmb3JcblxuICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgbGVmdCBhIGNsYXNzIG9wZW4uXG4gIC8vIFwiW2FiY1wiIGlzIHZhbGlkLCBlcXVpdmFsZW50IHRvIFwiXFxbYWJjXCJcbiAgaWYgKGluQ2xhc3MpIHtcbiAgICAvLyBzcGxpdCB3aGVyZSB0aGUgbGFzdCBbIHdhcywgYW5kIGVzY2FwZSBpdFxuICAgIC8vIHRoaXMgaXMgYSBodWdlIHBpdGEuICBXZSBub3cgaGF2ZSB0byByZS13YWxrXG4gICAgLy8gdGhlIGNvbnRlbnRzIG9mIHRoZSB3b3VsZC1iZSBjbGFzcyB0byByZS10cmFuc2xhdGVcbiAgICAvLyBhbnkgY2hhcmFjdGVycyB0aGF0IHdlcmUgcGFzc2VkIHRocm91Z2ggYXMtaXNcbiAgICBjcyA9IHBhdHRlcm4uc3Vic3RyKGNsYXNzU3RhcnQgKyAxKVxuICAgIHNwID0gdGhpcy5wYXJzZShjcywgU1VCUEFSU0UpXG4gICAgcmUgPSByZS5zdWJzdHIoMCwgcmVDbGFzc1N0YXJ0KSArICdcXFxcWycgKyBzcFswXVxuICAgIGhhc01hZ2ljID0gaGFzTWFnaWMgfHwgc3BbMV1cbiAgfVxuXG4gIC8vIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBoYWQgYSArKCB0aGluZyBhdCB0aGUgKmVuZCpcbiAgLy8gb2YgdGhlIHBhdHRlcm4uXG4gIC8vIGVhY2ggcGF0dGVybiBsaXN0IHN0YWNrIGFkZHMgMyBjaGFycywgYW5kIHdlIG5lZWQgdG8gZ28gdGhyb3VnaFxuICAvLyBhbmQgZXNjYXBlIGFueSB8IGNoYXJzIHRoYXQgd2VyZSBwYXNzZWQgdGhyb3VnaCBhcy1pcyBmb3IgdGhlIHJlZ2V4cC5cbiAgLy8gR28gdGhyb3VnaCBhbmQgZXNjYXBlIHRoZW0sIHRha2luZyBjYXJlIG5vdCB0byBkb3VibGUtZXNjYXBlIGFueVxuICAvLyB8IGNoYXJzIHRoYXQgd2VyZSBhbHJlYWR5IGVzY2FwZWQuXG4gIGZvciAocGwgPSBwYXR0ZXJuTGlzdFN0YWNrLnBvcCgpOyBwbDsgcGwgPSBwYXR0ZXJuTGlzdFN0YWNrLnBvcCgpKSB7XG4gICAgdmFyIHRhaWwgPSByZS5zbGljZShwbC5yZVN0YXJ0ICsgcGwub3Blbi5sZW5ndGgpXG4gICAgdGhpcy5kZWJ1Zygnc2V0dGluZyB0YWlsJywgcmUsIHBsKVxuICAgIC8vIG1heWJlIHNvbWUgZXZlbiBudW1iZXIgb2YgXFwsIHRoZW4gbWF5YmUgMSBcXCwgZm9sbG93ZWQgYnkgYSB8XG4gICAgdGFpbCA9IHRhaWwucmVwbGFjZSgvKCg/OlxcXFx7Mn0pezAsNjR9KShcXFxcPylcXHwvZywgZnVuY3Rpb24gKF8sICQxLCAkMikge1xuICAgICAgaWYgKCEkMikge1xuICAgICAgICAvLyB0aGUgfCBpc24ndCBhbHJlYWR5IGVzY2FwZWQsIHNvIGVzY2FwZSBpdC5cbiAgICAgICAgJDIgPSAnXFxcXCdcbiAgICAgIH1cblxuICAgICAgLy8gbmVlZCB0byBlc2NhcGUgYWxsIHRob3NlIHNsYXNoZXMgKmFnYWluKiwgd2l0aG91dCBlc2NhcGluZyB0aGVcbiAgICAgIC8vIG9uZSB0aGF0IHdlIG5lZWQgZm9yIGVzY2FwaW5nIHRoZSB8IGNoYXJhY3Rlci4gIEFzIGl0IHdvcmtzIG91dCxcbiAgICAgIC8vIGVzY2FwaW5nIGFuIGV2ZW4gbnVtYmVyIG9mIHNsYXNoZXMgY2FuIGJlIGRvbmUgYnkgc2ltcGx5IHJlcGVhdGluZ1xuICAgICAgLy8gaXQgZXhhY3RseSBhZnRlciBpdHNlbGYuICBUaGF0J3Mgd2h5IHRoaXMgdHJpY2sgd29ya3MuXG4gICAgICAvL1xuICAgICAgLy8gSSBhbSBzb3JyeSB0aGF0IHlvdSBoYXZlIHRvIHNlZSB0aGlzLlxuICAgICAgcmV0dXJuICQxICsgJDEgKyAkMiArICd8J1xuICAgIH0pXG5cbiAgICB0aGlzLmRlYnVnKCd0YWlsPSVqXFxuICAgJXMnLCB0YWlsLCB0YWlsLCBwbCwgcmUpXG4gICAgdmFyIHQgPSBwbC50eXBlID09PSAnKicgPyBzdGFyXG4gICAgICA6IHBsLnR5cGUgPT09ICc/JyA/IHFtYXJrXG4gICAgICA6ICdcXFxcJyArIHBsLnR5cGVcblxuICAgIGhhc01hZ2ljID0gdHJ1ZVxuICAgIHJlID0gcmUuc2xpY2UoMCwgcGwucmVTdGFydCkgKyB0ICsgJ1xcXFwoJyArIHRhaWxcbiAgfVxuXG4gIC8vIGhhbmRsZSB0cmFpbGluZyB0aGluZ3MgdGhhdCBvbmx5IG1hdHRlciBhdCB0aGUgdmVyeSBlbmQuXG4gIGNsZWFyU3RhdGVDaGFyKClcbiAgaWYgKGVzY2FwaW5nKSB7XG4gICAgLy8gdHJhaWxpbmcgXFxcXFxuICAgIHJlICs9ICdcXFxcXFxcXCdcbiAgfVxuXG4gIC8vIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgbm9kb3Qgc3RhcnQgaWYgdGhlIHJlIHN0YXJ0cyB3aXRoXG4gIC8vIHNvbWV0aGluZyB0aGF0IGNvdWxkIGNvbmNlaXZhYmx5IGNhcHR1cmUgYSBkb3RcbiAgdmFyIGFkZFBhdHRlcm5TdGFydCA9IGZhbHNlXG4gIHN3aXRjaCAocmUuY2hhckF0KDApKSB7XG4gICAgY2FzZSAnWyc6IGNhc2UgJy4nOiBjYXNlICcoJzogYWRkUGF0dGVyblN0YXJ0ID0gdHJ1ZVxuICB9XG5cbiAgLy8gSGFjayB0byB3b3JrIGFyb3VuZCBsYWNrIG9mIG5lZ2F0aXZlIGxvb2tiZWhpbmQgaW4gSlNcbiAgLy8gQSBwYXR0ZXJuIGxpa2U6ICouISh4KS4hKHl8eikgbmVlZHMgdG8gZW5zdXJlIHRoYXQgYSBuYW1lXG4gIC8vIGxpa2UgJ2EueHl6Lnl6JyBkb2Vzbid0IG1hdGNoLiAgU28sIHRoZSBmaXJzdCBuZWdhdGl2ZVxuICAvLyBsb29rYWhlYWQsIGhhcyB0byBsb29rIEFMTCB0aGUgd2F5IGFoZWFkLCB0byB0aGUgZW5kIG9mXG4gIC8vIHRoZSBwYXR0ZXJuLlxuICBmb3IgKHZhciBuID0gbmVnYXRpdmVMaXN0cy5sZW5ndGggLSAxOyBuID4gLTE7IG4tLSkge1xuICAgIHZhciBubCA9IG5lZ2F0aXZlTGlzdHNbbl1cblxuICAgIHZhciBubEJlZm9yZSA9IHJlLnNsaWNlKDAsIG5sLnJlU3RhcnQpXG4gICAgdmFyIG5sRmlyc3QgPSByZS5zbGljZShubC5yZVN0YXJ0LCBubC5yZUVuZCAtIDgpXG4gICAgdmFyIG5sTGFzdCA9IHJlLnNsaWNlKG5sLnJlRW5kIC0gOCwgbmwucmVFbmQpXG4gICAgdmFyIG5sQWZ0ZXIgPSByZS5zbGljZShubC5yZUVuZClcblxuICAgIG5sTGFzdCArPSBubEFmdGVyXG5cbiAgICAvLyBIYW5kbGUgbmVzdGVkIHN0dWZmIGxpa2UgKigqLmpzfCEoKi5qc29uKSksIHdoZXJlIG9wZW4gcGFyZW5zXG4gICAgLy8gbWVhbiB0aGF0IHdlIHNob3VsZCAqbm90KiBpbmNsdWRlIHRoZSApIGluIHRoZSBiaXQgdGhhdCBpcyBjb25zaWRlcmVkXG4gICAgLy8gXCJhZnRlclwiIHRoZSBuZWdhdGVkIHNlY3Rpb24uXG4gICAgdmFyIG9wZW5QYXJlbnNCZWZvcmUgPSBubEJlZm9yZS5zcGxpdCgnKCcpLmxlbmd0aCAtIDFcbiAgICB2YXIgY2xlYW5BZnRlciA9IG5sQWZ0ZXJcbiAgICBmb3IgKGkgPSAwOyBpIDwgb3BlblBhcmVuc0JlZm9yZTsgaSsrKSB7XG4gICAgICBjbGVhbkFmdGVyID0gY2xlYW5BZnRlci5yZXBsYWNlKC9cXClbKyo/XT8vLCAnJylcbiAgICB9XG4gICAgbmxBZnRlciA9IGNsZWFuQWZ0ZXJcblxuICAgIHZhciBkb2xsYXIgPSAnJ1xuICAgIGlmIChubEFmdGVyID09PSAnJyAmJiBpc1N1YiAhPT0gU1VCUEFSU0UpIHtcbiAgICAgIGRvbGxhciA9ICckJ1xuICAgIH1cbiAgICB2YXIgbmV3UmUgPSBubEJlZm9yZSArIG5sRmlyc3QgKyBubEFmdGVyICsgZG9sbGFyICsgbmxMYXN0XG4gICAgcmUgPSBuZXdSZVxuICB9XG5cbiAgLy8gaWYgdGhlIHJlIGlzIG5vdCBcIlwiIGF0IHRoaXMgcG9pbnQsIHRoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmVcbiAgLy8gaXQgZG9lc24ndCBtYXRjaCBhZ2FpbnN0IGFuIGVtcHR5IHBhdGggcGFydC5cbiAgLy8gT3RoZXJ3aXNlIGEvKiB3aWxsIG1hdGNoIGEvLCB3aGljaCBpdCBzaG91bGQgbm90LlxuICBpZiAocmUgIT09ICcnICYmIGhhc01hZ2ljKSB7XG4gICAgcmUgPSAnKD89LiknICsgcmVcbiAgfVxuXG4gIGlmIChhZGRQYXR0ZXJuU3RhcnQpIHtcbiAgICByZSA9IHBhdHRlcm5TdGFydCArIHJlXG4gIH1cblxuICAvLyBwYXJzaW5nIGp1c3QgYSBwaWVjZSBvZiBhIGxhcmdlciBwYXR0ZXJuLlxuICBpZiAoaXNTdWIgPT09IFNVQlBBUlNFKSB7XG4gICAgcmV0dXJuIFtyZSwgaGFzTWFnaWNdXG4gIH1cblxuICAvLyBza2lwIHRoZSByZWdleHAgZm9yIG5vbi1tYWdpY2FsIHBhdHRlcm5zXG4gIC8vIHVuZXNjYXBlIGFueXRoaW5nIGluIGl0LCB0aG91Z2gsIHNvIHRoYXQgaXQnbGwgYmVcbiAgLy8gYW4gZXhhY3QgbWF0Y2ggYWdhaW5zdCBhIGZpbGUgZXRjLlxuICBpZiAoIWhhc01hZ2ljKSB7XG4gICAgcmV0dXJuIGdsb2JVbmVzY2FwZShwYXR0ZXJuKVxuICB9XG5cbiAgdmFyIGZsYWdzID0gb3B0aW9ucy5ub2Nhc2UgPyAnaScgOiAnJ1xuICB0cnkge1xuICAgIHZhciByZWdFeHAgPSBuZXcgUmVnRXhwKCdeJyArIHJlICsgJyQnLCBmbGFncylcbiAgfSBjYXRjaCAoZXIpIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gc2hvdWxkIGJlIGltcG9zc2libGUgKi8ge1xuICAgIC8vIElmIGl0IHdhcyBhbiBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdGhlbiBpdCBjYW4ndCBtYXRjaFxuICAgIC8vIGFueXRoaW5nLiAgVGhpcyB0cmljayBsb29rcyBmb3IgYSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGVuZCBvZlxuICAgIC8vIHRoZSBzdHJpbmcsIHdoaWNoIGlzIG9mIGNvdXJzZSBpbXBvc3NpYmxlLCBleGNlcHQgaW4gbXVsdGktbGluZVxuICAgIC8vIG1vZGUsIGJ1dCBpdCdzIG5vdCBhIC9tIHJlZ2V4LlxuICAgIHJldHVybiBuZXcgUmVnRXhwKCckLicpXG4gIH1cblxuICByZWdFeHAuX2dsb2IgPSBwYXR0ZXJuXG4gIHJlZ0V4cC5fc3JjID0gcmVcblxuICByZXR1cm4gcmVnRXhwXG59XG5cbm1pbmltYXRjaC5tYWtlUmUgPSBmdW5jdGlvbiAocGF0dGVybiwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCBvcHRpb25zIHx8IHt9KS5tYWtlUmUoKVxufVxuXG5NaW5pbWF0Y2gucHJvdG90eXBlLm1ha2VSZSA9IG1ha2VSZVxuZnVuY3Rpb24gbWFrZVJlICgpIHtcbiAgaWYgKHRoaXMucmVnZXhwIHx8IHRoaXMucmVnZXhwID09PSBmYWxzZSkgcmV0dXJuIHRoaXMucmVnZXhwXG5cbiAgLy8gYXQgdGhpcyBwb2ludCwgdGhpcy5zZXQgaXMgYSAyZCBhcnJheSBvZiBwYXJ0aWFsXG4gIC8vIHBhdHRlcm4gc3RyaW5ncywgb3IgXCIqKlwiLlxuICAvL1xuICAvLyBJdCdzIGJldHRlciB0byB1c2UgLm1hdGNoKCkuICBUaGlzIGZ1bmN0aW9uIHNob3VsZG4ndFxuICAvLyBiZSB1c2VkLCByZWFsbHksIGJ1dCBpdCdzIHByZXR0eSBjb252ZW5pZW50IHNvbWV0aW1lcyxcbiAgLy8gd2hlbiB5b3UganVzdCB3YW50IHRvIHdvcmsgd2l0aCBhIHJlZ2V4LlxuICB2YXIgc2V0ID0gdGhpcy5zZXRcblxuICBpZiAoIXNldC5sZW5ndGgpIHtcbiAgICB0aGlzLnJlZ2V4cCA9IGZhbHNlXG4gICAgcmV0dXJuIHRoaXMucmVnZXhwXG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcblxuICB2YXIgdHdvU3RhciA9IG9wdGlvbnMubm9nbG9ic3RhciA/IHN0YXJcbiAgICA6IG9wdGlvbnMuZG90ID8gdHdvU3RhckRvdFxuICAgIDogdHdvU3Rhck5vRG90XG4gIHZhciBmbGFncyA9IG9wdGlvbnMubm9jYXNlID8gJ2knIDogJydcblxuICB2YXIgcmUgPSBzZXQubWFwKGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4ubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gKHAgPT09IEdMT0JTVEFSKSA/IHR3b1N0YXJcbiAgICAgIDogKHR5cGVvZiBwID09PSAnc3RyaW5nJykgPyByZWdFeHBFc2NhcGUocClcbiAgICAgIDogcC5fc3JjXG4gICAgfSkuam9pbignXFxcXFxcLycpXG4gIH0pLmpvaW4oJ3wnKVxuXG4gIC8vIG11c3QgbWF0Y2ggZW50aXJlIHBhdHRlcm5cbiAgLy8gZW5kaW5nIGluIGEgKiBvciAqKiB3aWxsIG1ha2UgaXQgbGVzcyBzdHJpY3QuXG4gIHJlID0gJ14oPzonICsgcmUgKyAnKSQnXG5cbiAgLy8gY2FuIG1hdGNoIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3Mgbm90IHRoaXMuXG4gIGlmICh0aGlzLm5lZ2F0ZSkgcmUgPSAnXig/IScgKyByZSArICcpLiokJ1xuXG4gIHRyeSB7XG4gICAgdGhpcy5yZWdleHAgPSBuZXcgUmVnRXhwKHJlLCBmbGFncylcbiAgfSBjYXRjaCAoZXgpIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gc2hvdWxkIGJlIGltcG9zc2libGUgKi8ge1xuICAgIHRoaXMucmVnZXhwID0gZmFsc2VcbiAgfVxuICByZXR1cm4gdGhpcy5yZWdleHBcbn1cblxubWluaW1hdGNoLm1hdGNoID0gZnVuY3Rpb24gKGxpc3QsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIG1tID0gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCBvcHRpb25zKVxuICBsaXN0ID0gbGlzdC5maWx0ZXIoZnVuY3Rpb24gKGYpIHtcbiAgICByZXR1cm4gbW0ubWF0Y2goZilcbiAgfSlcbiAgaWYgKG1tLm9wdGlvbnMubm9udWxsICYmICFsaXN0Lmxlbmd0aCkge1xuICAgIGxpc3QucHVzaChwYXR0ZXJuKVxuICB9XG4gIHJldHVybiBsaXN0XG59XG5cbk1pbmltYXRjaC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiBtYXRjaCAoZiwgcGFydGlhbCkge1xuICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSBwYXJ0aWFsID0gdGhpcy5wYXJ0aWFsXG4gIHRoaXMuZGVidWcoJ21hdGNoJywgZiwgdGhpcy5wYXR0ZXJuKVxuICAvLyBzaG9ydC1jaXJjdWl0IGluIHRoZSBjYXNlIG9mIGJ1c3RlZCB0aGluZ3MuXG4gIC8vIGNvbW1lbnRzLCBldGMuXG4gIGlmICh0aGlzLmNvbW1lbnQpIHJldHVybiBmYWxzZVxuICBpZiAodGhpcy5lbXB0eSkgcmV0dXJuIGYgPT09ICcnXG5cbiAgaWYgKGYgPT09ICcvJyAmJiBwYXJ0aWFsKSByZXR1cm4gdHJ1ZVxuXG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zXG5cbiAgLy8gd2luZG93czogbmVlZCB0byB1c2UgLywgbm90IFxcXG4gIGlmIChwYXRoLnNlcCAhPT0gJy8nKSB7XG4gICAgZiA9IGYuc3BsaXQocGF0aC5zZXApLmpvaW4oJy8nKVxuICB9XG5cbiAgLy8gdHJlYXQgdGhlIHRlc3QgcGF0aCBhcyBhIHNldCBvZiBwYXRocGFydHMuXG4gIGYgPSBmLnNwbGl0KHNsYXNoU3BsaXQpXG4gIHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCAnc3BsaXQnLCBmKVxuXG4gIC8vIGp1c3QgT05FIG9mIHRoZSBwYXR0ZXJuIHNldHMgaW4gdGhpcy5zZXQgbmVlZHMgdG8gbWF0Y2hcbiAgLy8gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHZhbGlkLiAgSWYgbmVnYXRpbmcsIHRoZW4ganVzdCBvbmVcbiAgLy8gbWF0Y2ggbWVhbnMgdGhhdCB3ZSBoYXZlIGZhaWxlZC5cbiAgLy8gRWl0aGVyIHdheSwgcmV0dXJuIG9uIHRoZSBmaXJzdCBoaXQuXG5cbiAgdmFyIHNldCA9IHRoaXMuc2V0XG4gIHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCAnc2V0Jywgc2V0KVxuXG4gIC8vIEZpbmQgdGhlIGJhc2VuYW1lIG9mIHRoZSBwYXRoIGJ5IGxvb2tpbmcgZm9yIHRoZSBsYXN0IG5vbi1lbXB0eSBzZWdtZW50XG4gIHZhciBmaWxlbmFtZVxuICB2YXIgaVxuICBmb3IgKGkgPSBmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgZmlsZW5hbWUgPSBmW2ldXG4gICAgaWYgKGZpbGVuYW1lKSBicmVha1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXR0ZXJuID0gc2V0W2ldXG4gICAgdmFyIGZpbGUgPSBmXG4gICAgaWYgKG9wdGlvbnMubWF0Y2hCYXNlICYmIHBhdHRlcm4ubGVuZ3RoID09PSAxKSB7XG4gICAgICBmaWxlID0gW2ZpbGVuYW1lXVxuICAgIH1cbiAgICB2YXIgaGl0ID0gdGhpcy5tYXRjaE9uZShmaWxlLCBwYXR0ZXJuLCBwYXJ0aWFsKVxuICAgIGlmIChoaXQpIHtcbiAgICAgIGlmIChvcHRpb25zLmZsaXBOZWdhdGUpIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gIXRoaXMubmVnYXRlXG4gICAgfVxuICB9XG5cbiAgLy8gZGlkbid0IGdldCBhbnkgaGl0cy4gIHRoaXMgaXMgc3VjY2VzcyBpZiBpdCdzIGEgbmVnYXRpdmVcbiAgLy8gcGF0dGVybiwgZmFpbHVyZSBvdGhlcndpc2UuXG4gIGlmIChvcHRpb25zLmZsaXBOZWdhdGUpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdGhpcy5uZWdhdGVcbn1cblxuLy8gc2V0IHBhcnRpYWwgdG8gdHJ1ZSB0byB0ZXN0IGlmLCBmb3IgZXhhbXBsZSxcbi8vIFwiL2EvYlwiIG1hdGNoZXMgdGhlIHN0YXJ0IG9mIFwiLyovYi8qL2RcIlxuLy8gUGFydGlhbCBtZWFucywgaWYgeW91IHJ1biBvdXQgb2YgZmlsZSBiZWZvcmUgeW91IHJ1blxuLy8gb3V0IG9mIHBhdHRlcm4sIHRoZW4gdGhhdCdzIGZpbmUsIGFzIGxvbmcgYXMgYWxsXG4vLyB0aGUgcGFydHMgbWF0Y2guXG5NaW5pbWF0Y2gucHJvdG90eXBlLm1hdGNoT25lID0gZnVuY3Rpb24gKGZpbGUsIHBhdHRlcm4sIHBhcnRpYWwpIHtcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcblxuICB0aGlzLmRlYnVnKCdtYXRjaE9uZScsXG4gICAgeyAndGhpcyc6IHRoaXMsIGZpbGU6IGZpbGUsIHBhdHRlcm46IHBhdHRlcm4gfSlcblxuICB0aGlzLmRlYnVnKCdtYXRjaE9uZScsIGZpbGUubGVuZ3RoLCBwYXR0ZXJuLmxlbmd0aClcblxuICBmb3IgKHZhciBmaSA9IDAsXG4gICAgICBwaSA9IDAsXG4gICAgICBmbCA9IGZpbGUubGVuZ3RoLFxuICAgICAgcGwgPSBwYXR0ZXJuLmxlbmd0aFxuICAgICAgOyAoZmkgPCBmbCkgJiYgKHBpIDwgcGwpXG4gICAgICA7IGZpKyssIHBpKyspIHtcbiAgICB0aGlzLmRlYnVnKCdtYXRjaE9uZSBsb29wJylcbiAgICB2YXIgcCA9IHBhdHRlcm5bcGldXG4gICAgdmFyIGYgPSBmaWxlW2ZpXVxuXG4gICAgdGhpcy5kZWJ1ZyhwYXR0ZXJuLCBwLCBmKVxuXG4gICAgLy8gc2hvdWxkIGJlIGltcG9zc2libGUuXG4gICAgLy8gc29tZSBpbnZhbGlkIHJlZ2V4cCBzdHVmZiBpbiB0aGUgc2V0LlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAocCA9PT0gR0xPQlNUQVIpIHtcbiAgICAgIHRoaXMuZGVidWcoJ0dMT0JTVEFSJywgW3BhdHRlcm4sIHAsIGZdKVxuXG4gICAgICAvLyBcIioqXCJcbiAgICAgIC8vIGEvKiovYi8qKi9jIHdvdWxkIG1hdGNoIHRoZSBmb2xsb3dpbmc6XG4gICAgICAvLyBhL2IveC95L3ovY1xuICAgICAgLy8gYS94L3kvei9iL2NcbiAgICAgIC8vIGEvYi94L2IveC9jXG4gICAgICAvLyBhL2IvY1xuICAgICAgLy8gVG8gZG8gdGhpcywgdGFrZSB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBhZnRlclxuICAgICAgLy8gdGhlICoqLCBhbmQgc2VlIGlmIGl0IHdvdWxkIG1hdGNoIHRoZSBmaWxlIHJlbWFpbmRlci5cbiAgICAgIC8vIElmIHNvLCByZXR1cm4gc3VjY2Vzcy5cbiAgICAgIC8vIElmIG5vdCwgdGhlICoqIFwic3dhbGxvd3NcIiBhIHNlZ21lbnQsIGFuZCB0cnkgYWdhaW4uXG4gICAgICAvLyBUaGlzIGlzIHJlY3Vyc2l2ZWx5IGF3ZnVsLlxuICAgICAgLy9cbiAgICAgIC8vIGEvKiovYi8qKi9jIG1hdGNoaW5nIGEvYi94L3kvei9jXG4gICAgICAvLyAtIGEgbWF0Y2hlcyBhXG4gICAgICAvLyAtIGRvdWJsZXN0YXJcbiAgICAgIC8vICAgLSBtYXRjaE9uZShiL3gveS96L2MsIGIvKiovYylcbiAgICAgIC8vICAgICAtIGIgbWF0Y2hlcyBiXG4gICAgICAvLyAgICAgLSBkb3VibGVzdGFyXG4gICAgICAvLyAgICAgICAtIG1hdGNoT25lKHgveS96L2MsIGMpIC0+IG5vXG4gICAgICAvLyAgICAgICAtIG1hdGNoT25lKHkvei9jLCBjKSAtPiBub1xuICAgICAgLy8gICAgICAgLSBtYXRjaE9uZSh6L2MsIGMpIC0+IG5vXG4gICAgICAvLyAgICAgICAtIG1hdGNoT25lKGMsIGMpIHllcywgaGl0XG4gICAgICB2YXIgZnIgPSBmaVxuICAgICAgdmFyIHByID0gcGkgKyAxXG4gICAgICBpZiAocHIgPT09IHBsKSB7XG4gICAgICAgIHRoaXMuZGVidWcoJyoqIGF0IHRoZSBlbmQnKVxuICAgICAgICAvLyBhICoqIGF0IHRoZSBlbmQgd2lsbCBqdXN0IHN3YWxsb3cgdGhlIHJlc3QuXG4gICAgICAgIC8vIFdlIGhhdmUgZm91bmQgYSBtYXRjaC5cbiAgICAgICAgLy8gaG93ZXZlciwgaXQgd2lsbCBub3Qgc3dhbGxvdyAvLngsIHVubGVzc1xuICAgICAgICAvLyBvcHRpb25zLmRvdCBpcyBzZXQuXG4gICAgICAgIC8vIC4gYW5kIC4uIGFyZSAqbmV2ZXIqIG1hdGNoZWQgYnkgKiosIGZvciBleHBsb3NpdmVseVxuICAgICAgICAvLyBleHBvbmVudGlhbCByZWFzb25zLlxuICAgICAgICBmb3IgKDsgZmkgPCBmbDsgZmkrKykge1xuICAgICAgICAgIGlmIChmaWxlW2ZpXSA9PT0gJy4nIHx8IGZpbGVbZmldID09PSAnLi4nIHx8XG4gICAgICAgICAgICAoIW9wdGlvbnMuZG90ICYmIGZpbGVbZmldLmNoYXJBdCgwKSA9PT0gJy4nKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gb2ssIGxldCdzIHNlZSBpZiB3ZSBjYW4gc3dhbGxvdyB3aGF0ZXZlciB3ZSBjYW4uXG4gICAgICB3aGlsZSAoZnIgPCBmbCkge1xuICAgICAgICB2YXIgc3dhbGxvd2VlID0gZmlsZVtmcl1cblxuICAgICAgICB0aGlzLmRlYnVnKCdcXG5nbG9ic3RhciB3aGlsZScsIGZpbGUsIGZyLCBwYXR0ZXJuLCBwciwgc3dhbGxvd2VlKVxuXG4gICAgICAgIC8vIFhYWCByZW1vdmUgdGhpcyBzbGljZS4gIEp1c3QgcGFzcyB0aGUgc3RhcnQgaW5kZXguXG4gICAgICAgIGlmICh0aGlzLm1hdGNoT25lKGZpbGUuc2xpY2UoZnIpLCBwYXR0ZXJuLnNsaWNlKHByKSwgcGFydGlhbCkpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnKCdnbG9ic3RhciBmb3VuZCBtYXRjaCEnLCBmciwgZmwsIHN3YWxsb3dlZSlcbiAgICAgICAgICAvLyBmb3VuZCBhIG1hdGNoLlxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY2FuJ3Qgc3dhbGxvdyBcIi5cIiBvciBcIi4uXCIgZXZlci5cbiAgICAgICAgICAvLyBjYW4gb25seSBzd2FsbG93IFwiLmZvb1wiIHdoZW4gZXhwbGljaXRseSBhc2tlZC5cbiAgICAgICAgICBpZiAoc3dhbGxvd2VlID09PSAnLicgfHwgc3dhbGxvd2VlID09PSAnLi4nIHx8XG4gICAgICAgICAgICAoIW9wdGlvbnMuZG90ICYmIHN3YWxsb3dlZS5jaGFyQXQoMCkgPT09ICcuJykpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ2RvdCBkZXRlY3RlZCEnLCBmaWxlLCBmciwgcGF0dGVybiwgcHIpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vICoqIHN3YWxsb3dzIGEgc2VnbWVudCwgYW5kIGNvbnRpbnVlLlxuICAgICAgICAgIHRoaXMuZGVidWcoJ2dsb2JzdGFyIHN3YWxsb3cgYSBzZWdtZW50LCBhbmQgY29udGludWUnKVxuICAgICAgICAgIGZyKytcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBubyBtYXRjaCB3YXMgZm91bmQuXG4gICAgICAvLyBIb3dldmVyLCBpbiBwYXJ0aWFsIG1vZGUsIHdlIGNhbid0IHNheSB0aGlzIGlzIG5lY2Vzc2FyaWx5IG92ZXIuXG4gICAgICAvLyBJZiB0aGVyZSdzIG1vcmUgKnBhdHRlcm4qIGxlZnQsIHRoZW5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHBhcnRpYWwpIHtcbiAgICAgICAgLy8gcmFuIG91dCBvZiBmaWxlXG4gICAgICAgIHRoaXMuZGVidWcoJ1xcbj4+PiBubyBtYXRjaCwgcGFydGlhbD8nLCBmaWxlLCBmciwgcGF0dGVybiwgcHIpXG4gICAgICAgIGlmIChmciA9PT0gZmwpIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBzb21ldGhpbmcgb3RoZXIgdGhhbiAqKlxuICAgIC8vIG5vbi1tYWdpYyBwYXR0ZXJucyBqdXN0IGhhdmUgdG8gbWF0Y2ggZXhhY3RseVxuICAgIC8vIHBhdHRlcm5zIHdpdGggbWFnaWMgaGF2ZSBiZWVuIHR1cm5lZCBpbnRvIHJlZ2V4cHMuXG4gICAgdmFyIGhpdFxuICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGhpdCA9IGYgPT09IHBcbiAgICAgIHRoaXMuZGVidWcoJ3N0cmluZyBtYXRjaCcsIHAsIGYsIGhpdClcbiAgICB9IGVsc2Uge1xuICAgICAgaGl0ID0gZi5tYXRjaChwKVxuICAgICAgdGhpcy5kZWJ1ZygncGF0dGVybiBtYXRjaCcsIHAsIGYsIGhpdClcbiAgICB9XG5cbiAgICBpZiAoIWhpdCkgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBOb3RlOiBlbmRpbmcgaW4gLyBtZWFucyB0aGF0IHdlJ2xsIGdldCBhIGZpbmFsIFwiXCJcbiAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgcGF0dGVybi4gIFRoaXMgY2FuIG9ubHkgbWF0Y2ggYVxuICAvLyBjb3JyZXNwb25kaW5nIFwiXCIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS5cbiAgLy8gSWYgdGhlIGZpbGUgZW5kcyBpbiAvLCB0aGVuIGl0IGNhbiBvbmx5IG1hdGNoIGFcbiAgLy8gYSBwYXR0ZXJuIHRoYXQgZW5kcyBpbiAvLCB1bmxlc3MgdGhlIHBhdHRlcm4ganVzdFxuICAvLyBkb2Vzbid0IGhhdmUgYW55IG1vcmUgZm9yIGl0LiBCdXQsIGEvYi8gc2hvdWxkICpub3QqXG4gIC8vIG1hdGNoIFwiYS9iLypcIiwgZXZlbiB0aG91Z2ggXCJcIiBtYXRjaGVzIGFnYWluc3QgdGhlXG4gIC8vIFteL10qPyBwYXR0ZXJuLCBleGNlcHQgaW4gcGFydGlhbCBtb2RlLCB3aGVyZSBpdCBtaWdodFxuICAvLyBzaW1wbHkgbm90IGJlIHJlYWNoZWQgeWV0LlxuICAvLyBIb3dldmVyLCBhL2IvIHNob3VsZCBzdGlsbCBzYXRpc2Z5IGEvKlxuXG4gIC8vIG5vdyBlaXRoZXIgd2UgZmVsbCBvZmYgdGhlIGVuZCBvZiB0aGUgcGF0dGVybiwgb3Igd2UncmUgZG9uZS5cbiAgaWYgKGZpID09PSBmbCAmJiBwaSA9PT0gcGwpIHtcbiAgICAvLyByYW4gb3V0IG9mIHBhdHRlcm4gYW5kIGZpbGVuYW1lIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgLy8gYW4gZXhhY3QgaGl0IVxuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSBpZiAoZmkgPT09IGZsKSB7XG4gICAgLy8gcmFuIG91dCBvZiBmaWxlLCBidXQgc3RpbGwgaGFkIHBhdHRlcm4gbGVmdC5cbiAgICAvLyB0aGlzIGlzIG9rIGlmIHdlJ3JlIGRvaW5nIHRoZSBtYXRjaCBhcyBwYXJ0IG9mXG4gICAgLy8gYSBnbG9iIGZzIHRyYXZlcnNhbC5cbiAgICByZXR1cm4gcGFydGlhbFxuICB9IGVsc2UgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8gaWYgKHBpID09PSBwbCkge1xuICAgIC8vIHJhbiBvdXQgb2YgcGF0dGVybiwgc3RpbGwgaGF2ZSBmaWxlIGxlZnQuXG4gICAgLy8gdGhpcyBpcyBvbmx5IGFjY2VwdGFibGUgaWYgd2UncmUgb24gdGhlIHZlcnkgbGFzdFxuICAgIC8vIGVtcHR5IHNlZ21lbnQgb2YgYSBmaWxlIHdpdGggYSB0cmFpbGluZyBzbGFzaC5cbiAgICAvLyBhLyogc2hvdWxkIG1hdGNoIGEvYi9cbiAgICByZXR1cm4gKGZpID09PSBmbCAtIDEpICYmIChmaWxlW2ZpXSA9PT0gJycpXG4gIH1cblxuICAvLyBzaG91bGQgYmUgdW5yZWFjaGFibGUuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHRocm93IG5ldyBFcnJvcignd3RmPycpXG59XG5cbi8vIHJlcGxhY2Ugc3R1ZmYgbGlrZSBcXCogd2l0aCAqXG5mdW5jdGlvbiBnbG9iVW5lc2NhcGUgKHMpIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFxcXCguKS9nLCAnJDEnKVxufVxuXG5mdW5jdGlvbiByZWdFeHBFc2NhcGUgKHMpIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csICdcXFxcJCYnKVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBnbG9iU3luY1xuZ2xvYlN5bmMuR2xvYlN5bmMgPSBHbG9iU3luY1xuXG52YXIgcnAgPSByZXF1aXJlKCdmcy5yZWFscGF0aCcpXG52YXIgbWluaW1hdGNoID0gcmVxdWlyZSgnbWluaW1hdGNoJylcbnZhciBNaW5pbWF0Y2ggPSBtaW5pbWF0Y2guTWluaW1hdGNoXG52YXIgR2xvYiA9IHJlcXVpcmUoJy4vZ2xvYi5qcycpLkdsb2JcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG52YXIgaXNBYnNvbHV0ZSA9IHJlcXVpcmUoJ3BhdGgtaXMtYWJzb2x1dGUnKVxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uLmpzJylcbnZhciBzZXRvcHRzID0gY29tbW9uLnNldG9wdHNcbnZhciBvd25Qcm9wID0gY29tbW9uLm93blByb3BcbnZhciBjaGlsZHJlbklnbm9yZWQgPSBjb21tb24uY2hpbGRyZW5JZ25vcmVkXG52YXIgaXNJZ25vcmVkID0gY29tbW9uLmlzSWdub3JlZFxuXG5mdW5jdGlvbiBnbG9iU3luYyAocGF0dGVybiwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMylcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBwcm92aWRlZCB0byBzeW5jIGdsb2JcXG4nK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZTogaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ub2RlLWdsb2IvaXNzdWVzLzE2NycpXG5cbiAgcmV0dXJuIG5ldyBHbG9iU3luYyhwYXR0ZXJuLCBvcHRpb25zKS5mb3VuZFxufVxuXG5mdW5jdGlvbiBHbG9iU3luYyAocGF0dGVybiwgb3B0aW9ucykge1xuICBpZiAoIXBhdHRlcm4pXG4gICAgdGhyb3cgbmV3IEVycm9yKCdtdXN0IHByb3ZpZGUgcGF0dGVybicpXG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDMpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iXFxuJytcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3Mvbm9kZS1nbG9iL2lzc3Vlcy8xNjcnKVxuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHbG9iU3luYykpXG4gICAgcmV0dXJuIG5ldyBHbG9iU3luYyhwYXR0ZXJuLCBvcHRpb25zKVxuXG4gIHNldG9wdHModGhpcywgcGF0dGVybiwgb3B0aW9ucylcblxuICBpZiAodGhpcy5ub3Byb2Nlc3MpXG4gICAgcmV0dXJuIHRoaXNcblxuICB2YXIgbiA9IHRoaXMubWluaW1hdGNoLnNldC5sZW5ndGhcbiAgdGhpcy5tYXRjaGVzID0gbmV3IEFycmF5KG4pXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSArKykge1xuICAgIHRoaXMuX3Byb2Nlc3ModGhpcy5taW5pbWF0Y2guc2V0W2ldLCBpLCBmYWxzZSlcbiAgfVxuICB0aGlzLl9maW5pc2goKVxufVxuXG5HbG9iU3luYy5wcm90b3R5cGUuX2ZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgYXNzZXJ0Lm9rKHRoaXMgaW5zdGFuY2VvZiBHbG9iU3luYylcbiAgaWYgKHRoaXMucmVhbHBhdGgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICB0aGlzLm1hdGNoZXMuZm9yRWFjaChmdW5jdGlvbiAobWF0Y2hzZXQsIGluZGV4KSB7XG4gICAgICB2YXIgc2V0ID0gc2VsZi5tYXRjaGVzW2luZGV4XSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgIGZvciAodmFyIHAgaW4gbWF0Y2hzZXQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwID0gc2VsZi5fbWFrZUFicyhwKVxuICAgICAgICAgIHZhciByZWFsID0gcnAucmVhbHBhdGhTeW5jKHAsIHNlbGYucmVhbHBhdGhDYWNoZSlcbiAgICAgICAgICBzZXRbcmVhbF0gPSB0cnVlXG4gICAgICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICAgICAgaWYgKGVyLnN5c2NhbGwgPT09ICdzdGF0JylcbiAgICAgICAgICAgIHNldFtzZWxmLl9tYWtlQWJzKHApXSA9IHRydWVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBjb21tb24uZmluaXNoKHRoaXMpXG59XG5cblxuR2xvYlN5bmMucHJvdG90eXBlLl9wcm9jZXNzID0gZnVuY3Rpb24gKHBhdHRlcm4sIGluZGV4LCBpbkdsb2JTdGFyKSB7XG4gIGFzc2VydC5vayh0aGlzIGluc3RhbmNlb2YgR2xvYlN5bmMpXG5cbiAgLy8gR2V0IHRoZSBmaXJzdCBbbl0gcGFydHMgb2YgcGF0dGVybiB0aGF0IGFyZSBhbGwgc3RyaW5ncy5cbiAgdmFyIG4gPSAwXG4gIHdoaWxlICh0eXBlb2YgcGF0dGVybltuXSA9PT0gJ3N0cmluZycpIHtcbiAgICBuICsrXG4gIH1cbiAgLy8gbm93IG4gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvbmUgdGhhdCBpcyAqbm90KiBhIHN0cmluZy5cblxuICAvLyBTZWUgaWYgdGhlcmUncyBhbnl0aGluZyBlbHNlXG4gIHZhciBwcmVmaXhcbiAgc3dpdGNoIChuKSB7XG4gICAgLy8gaWYgbm90LCB0aGVuIHRoaXMgaXMgcmF0aGVyIHNpbXBsZVxuICAgIGNhc2UgcGF0dGVybi5sZW5ndGg6XG4gICAgICB0aGlzLl9wcm9jZXNzU2ltcGxlKHBhdHRlcm4uam9pbignLycpLCBpbmRleClcbiAgICAgIHJldHVyblxuXG4gICAgY2FzZSAwOlxuICAgICAgLy8gcGF0dGVybiAqc3RhcnRzKiB3aXRoIHNvbWUgbm9uLXRyaXZpYWwgaXRlbS5cbiAgICAgIC8vIGdvaW5nIHRvIHJlYWRkaXIoY3dkKSwgYnV0IG5vdCBpbmNsdWRlIHRoZSBwcmVmaXggaW4gbWF0Y2hlcy5cbiAgICAgIHByZWZpeCA9IG51bGxcbiAgICAgIGJyZWFrXG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gcGF0dGVybiBoYXMgc29tZSBzdHJpbmcgYml0cyBpbiB0aGUgZnJvbnQuXG4gICAgICAvLyB3aGF0ZXZlciBpdCBzdGFydHMgd2l0aCwgd2hldGhlciB0aGF0J3MgJ2Fic29sdXRlJyBsaWtlIC9mb28vYmFyLFxuICAgICAgLy8gb3IgJ3JlbGF0aXZlJyBsaWtlICcuLi9iYXonXG4gICAgICBwcmVmaXggPSBwYXR0ZXJuLnNsaWNlKDAsIG4pLmpvaW4oJy8nKVxuICAgICAgYnJlYWtcbiAgfVxuXG4gIHZhciByZW1haW4gPSBwYXR0ZXJuLnNsaWNlKG4pXG5cbiAgLy8gZ2V0IHRoZSBsaXN0IG9mIGVudHJpZXMuXG4gIHZhciByZWFkXG4gIGlmIChwcmVmaXggPT09IG51bGwpXG4gICAgcmVhZCA9ICcuJ1xuICBlbHNlIGlmIChpc0Fic29sdXRlKHByZWZpeCkgfHxcbiAgICAgIGlzQWJzb2x1dGUocGF0dGVybi5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwID09PSAnc3RyaW5nJyA/IHAgOiAnWypdJ1xuICAgICAgfSkuam9pbignLycpKSkge1xuICAgIGlmICghcHJlZml4IHx8ICFpc0Fic29sdXRlKHByZWZpeCkpXG4gICAgICBwcmVmaXggPSAnLycgKyBwcmVmaXhcbiAgICByZWFkID0gcHJlZml4XG4gIH0gZWxzZVxuICAgIHJlYWQgPSBwcmVmaXhcblxuICB2YXIgYWJzID0gdGhpcy5fbWFrZUFicyhyZWFkKVxuXG4gIC8vaWYgaWdub3JlZCwgc2tpcCBwcm9jZXNzaW5nXG4gIGlmIChjaGlsZHJlbklnbm9yZWQodGhpcywgcmVhZCkpXG4gICAgcmV0dXJuXG5cbiAgdmFyIGlzR2xvYlN0YXIgPSByZW1haW5bMF0gPT09IG1pbmltYXRjaC5HTE9CU1RBUlxuICBpZiAoaXNHbG9iU3RhcilcbiAgICB0aGlzLl9wcm9jZXNzR2xvYlN0YXIocHJlZml4LCByZWFkLCBhYnMsIHJlbWFpbiwgaW5kZXgsIGluR2xvYlN0YXIpXG4gIGVsc2VcbiAgICB0aGlzLl9wcm9jZXNzUmVhZGRpcihwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3Rhcilcbn1cblxuXG5HbG9iU3luYy5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyID0gZnVuY3Rpb24gKHByZWZpeCwgcmVhZCwgYWJzLCByZW1haW4sIGluZGV4LCBpbkdsb2JTdGFyKSB7XG4gIHZhciBlbnRyaWVzID0gdGhpcy5fcmVhZGRpcihhYnMsIGluR2xvYlN0YXIpXG5cbiAgLy8gaWYgdGhlIGFicyBpc24ndCBhIGRpciwgdGhlbiBub3RoaW5nIGNhbiBtYXRjaCFcbiAgaWYgKCFlbnRyaWVzKVxuICAgIHJldHVyblxuXG4gIC8vIEl0IHdpbGwgb25seSBtYXRjaCBkb3QgZW50cmllcyBpZiBpdCBzdGFydHMgd2l0aCBhIGRvdCwgb3IgaWZcbiAgLy8gZG90IGlzIHNldC4gIFN0dWZmIGxpa2UgQCguZm9vfC5iYXIpIGlzbid0IGFsbG93ZWQuXG4gIHZhciBwbiA9IHJlbWFpblswXVxuICB2YXIgbmVnYXRlID0gISF0aGlzLm1pbmltYXRjaC5uZWdhdGVcbiAgdmFyIHJhd0dsb2IgPSBwbi5fZ2xvYlxuICB2YXIgZG90T2sgPSB0aGlzLmRvdCB8fCByYXdHbG9iLmNoYXJBdCgwKSA9PT0gJy4nXG5cbiAgdmFyIG1hdGNoZWRFbnRyaWVzID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGUgPSBlbnRyaWVzW2ldXG4gICAgaWYgKGUuY2hhckF0KDApICE9PSAnLicgfHwgZG90T2spIHtcbiAgICAgIHZhciBtXG4gICAgICBpZiAobmVnYXRlICYmICFwcmVmaXgpIHtcbiAgICAgICAgbSA9ICFlLm1hdGNoKHBuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbSA9IGUubWF0Y2gocG4pXG4gICAgICB9XG4gICAgICBpZiAobSlcbiAgICAgICAgbWF0Y2hlZEVudHJpZXMucHVzaChlKVxuICAgIH1cbiAgfVxuXG4gIHZhciBsZW4gPSBtYXRjaGVkRW50cmllcy5sZW5ndGhcbiAgLy8gSWYgdGhlcmUgYXJlIG5vIG1hdGNoZWQgZW50cmllcywgdGhlbiBub3RoaW5nIG1hdGNoZXMuXG4gIGlmIChsZW4gPT09IDApXG4gICAgcmV0dXJuXG5cbiAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCByZW1haW5pbmcgcGF0dGVybiBiaXQsIHRoZW4gbm8gbmVlZCBmb3JcbiAgLy8gYW4gYWRkaXRpb25hbCBzdGF0ICp1bmxlc3MqIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgbWFyayBvclxuICAvLyBzdGF0IGV4cGxpY2l0bHkuICBXZSBrbm93IHRoZXkgZXhpc3QsIHNpbmNlIHJlYWRkaXIgcmV0dXJuZWRcbiAgLy8gdGhlbS5cblxuICBpZiAocmVtYWluLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5tYXJrICYmICF0aGlzLnN0YXQpIHtcbiAgICBpZiAoIXRoaXMubWF0Y2hlc1tpbmRleF0pXG4gICAgICB0aGlzLm1hdGNoZXNbaW5kZXhdID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKyspIHtcbiAgICAgIHZhciBlID0gbWF0Y2hlZEVudHJpZXNbaV1cbiAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgaWYgKHByZWZpeC5zbGljZSgtMSkgIT09ICcvJylcbiAgICAgICAgICBlID0gcHJlZml4ICsgJy8nICsgZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZSA9IHByZWZpeCArIGVcbiAgICAgIH1cblxuICAgICAgaWYgKGUuY2hhckF0KDApID09PSAnLycgJiYgIXRoaXMubm9tb3VudCkge1xuICAgICAgICBlID0gcGF0aC5qb2luKHRoaXMucm9vdCwgZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuX2VtaXRNYXRjaChpbmRleCwgZSlcbiAgICB9XG4gICAgLy8gVGhpcyB3YXMgdGhlIGxhc3Qgb25lLCBhbmQgbm8gc3RhdHMgd2VyZSBuZWVkZWRcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIG5vdyB0ZXN0IGFsbCBtYXRjaGVkIGVudHJpZXMgYXMgc3RhbmQtaW5zIGZvciB0aGF0IHBhcnRcbiAgLy8gb2YgdGhlIHBhdHRlcm4uXG4gIHJlbWFpbi5zaGlmdCgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICsrKSB7XG4gICAgdmFyIGUgPSBtYXRjaGVkRW50cmllc1tpXVxuICAgIHZhciBuZXdQYXR0ZXJuXG4gICAgaWYgKHByZWZpeClcbiAgICAgIG5ld1BhdHRlcm4gPSBbcHJlZml4LCBlXVxuICAgIGVsc2VcbiAgICAgIG5ld1BhdHRlcm4gPSBbZV1cbiAgICB0aGlzLl9wcm9jZXNzKG5ld1BhdHRlcm4uY29uY2F0KHJlbWFpbiksIGluZGV4LCBpbkdsb2JTdGFyKVxuICB9XG59XG5cblxuR2xvYlN5bmMucHJvdG90eXBlLl9lbWl0TWF0Y2ggPSBmdW5jdGlvbiAoaW5kZXgsIGUpIHtcbiAgaWYgKGlzSWdub3JlZCh0aGlzLCBlKSlcbiAgICByZXR1cm5cblxuICB2YXIgYWJzID0gdGhpcy5fbWFrZUFicyhlKVxuXG4gIGlmICh0aGlzLm1hcmspXG4gICAgZSA9IHRoaXMuX21hcmsoZSlcblxuICBpZiAodGhpcy5hYnNvbHV0ZSkge1xuICAgIGUgPSBhYnNcbiAgfVxuXG4gIGlmICh0aGlzLm1hdGNoZXNbaW5kZXhdW2VdKVxuICAgIHJldHVyblxuXG4gIGlmICh0aGlzLm5vZGlyKSB7XG4gICAgdmFyIGMgPSB0aGlzLmNhY2hlW2Fic11cbiAgICBpZiAoYyA9PT0gJ0RJUicgfHwgQXJyYXkuaXNBcnJheShjKSlcbiAgICAgIHJldHVyblxuICB9XG5cbiAgdGhpcy5tYXRjaGVzW2luZGV4XVtlXSA9IHRydWVcblxuICBpZiAodGhpcy5zdGF0KVxuICAgIHRoaXMuX3N0YXQoZSlcbn1cblxuXG5HbG9iU3luYy5wcm90b3R5cGUuX3JlYWRkaXJJbkdsb2JTdGFyID0gZnVuY3Rpb24gKGFicykge1xuICAvLyBmb2xsb3cgYWxsIHN5bWxpbmtlZCBkaXJlY3RvcmllcyBmb3JldmVyXG4gIC8vIGp1c3QgcHJvY2VlZCBhcyBpZiB0aGlzIGlzIGEgbm9uLWdsb2JzdGFyIHNpdHVhdGlvblxuICBpZiAodGhpcy5mb2xsb3cpXG4gICAgcmV0dXJuIHRoaXMuX3JlYWRkaXIoYWJzLCBmYWxzZSlcblxuICB2YXIgZW50cmllc1xuICB2YXIgbHN0YXRcbiAgdmFyIHN0YXRcbiAgdHJ5IHtcbiAgICBsc3RhdCA9IHRoaXMuZnMubHN0YXRTeW5jKGFicylcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIC8vIGxzdGF0IGZhaWxlZCwgZG9lc24ndCBleGlzdFxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICB2YXIgaXNTeW0gPSBsc3RhdCAmJiBsc3RhdC5pc1N5bWJvbGljTGluaygpXG4gIHRoaXMuc3ltbGlua3NbYWJzXSA9IGlzU3ltXG5cbiAgLy8gSWYgaXQncyBub3QgYSBzeW1saW5rIG9yIGEgZGlyLCB0aGVuIGl0J3MgZGVmaW5pdGVseSBhIHJlZ3VsYXIgZmlsZS5cbiAgLy8gZG9uJ3QgYm90aGVyIGRvaW5nIGEgcmVhZGRpciBpbiB0aGF0IGNhc2UuXG4gIGlmICghaXNTeW0gJiYgbHN0YXQgJiYgIWxzdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgdGhpcy5jYWNoZVthYnNdID0gJ0ZJTEUnXG4gIGVsc2VcbiAgICBlbnRyaWVzID0gdGhpcy5fcmVhZGRpcihhYnMsIGZhbHNlKVxuXG4gIHJldHVybiBlbnRyaWVzXG59XG5cbkdsb2JTeW5jLnByb3RvdHlwZS5fcmVhZGRpciA9IGZ1bmN0aW9uIChhYnMsIGluR2xvYlN0YXIpIHtcbiAgdmFyIGVudHJpZXNcblxuICBpZiAoaW5HbG9iU3RhciAmJiAhb3duUHJvcCh0aGlzLnN5bWxpbmtzLCBhYnMpKVxuICAgIHJldHVybiB0aGlzLl9yZWFkZGlySW5HbG9iU3RhcihhYnMpXG5cbiAgaWYgKG93blByb3AodGhpcy5jYWNoZSwgYWJzKSkge1xuICAgIHZhciBjID0gdGhpcy5jYWNoZVthYnNdXG4gICAgaWYgKCFjIHx8IGMgPT09ICdGSUxFJylcbiAgICAgIHJldHVybiBudWxsXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSlcbiAgICAgIHJldHVybiBjXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkZGlyRW50cmllcyhhYnMsIHRoaXMuZnMucmVhZGRpclN5bmMoYWJzKSlcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICB0aGlzLl9yZWFkZGlyRXJyb3IoYWJzLCBlcilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbkdsb2JTeW5jLnByb3RvdHlwZS5fcmVhZGRpckVudHJpZXMgPSBmdW5jdGlvbiAoYWJzLCBlbnRyaWVzKSB7XG4gIC8vIGlmIHdlIGhhdmVuJ3QgYXNrZWQgdG8gc3RhdCBldmVyeXRoaW5nLCB0aGVuIGp1c3RcbiAgLy8gYXNzdW1lIHRoYXQgZXZlcnl0aGluZyBpbiB0aGVyZSBleGlzdHMsIHNvIHdlIGNhbiBhdm9pZFxuICAvLyBoYXZpbmcgdG8gc3RhdCBpdCBhIHNlY29uZCB0aW1lLlxuICBpZiAoIXRoaXMubWFyayAmJiAhdGhpcy5zdGF0KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSArKykge1xuICAgICAgdmFyIGUgPSBlbnRyaWVzW2ldXG4gICAgICBpZiAoYWJzID09PSAnLycpXG4gICAgICAgIGUgPSBhYnMgKyBlXG4gICAgICBlbHNlXG4gICAgICAgIGUgPSBhYnMgKyAnLycgKyBlXG4gICAgICB0aGlzLmNhY2hlW2VdID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuY2FjaGVbYWJzXSA9IGVudHJpZXNcblxuICAvLyBtYXJrIGFuZCBjYWNoZSBkaXItbmVzc1xuICByZXR1cm4gZW50cmllc1xufVxuXG5HbG9iU3luYy5wcm90b3R5cGUuX3JlYWRkaXJFcnJvciA9IGZ1bmN0aW9uIChmLCBlcikge1xuICAvLyBoYW5kbGUgZXJyb3JzLCBhbmQgY2FjaGUgdGhlIGluZm9ybWF0aW9uXG4gIHN3aXRjaCAoZXIuY29kZSkge1xuICAgIGNhc2UgJ0VOT1RTVVAnOiAvLyBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYi9pc3N1ZXMvMjA1XG4gICAgY2FzZSAnRU5PVERJUic6IC8vIHRvdGFsbHkgbm9ybWFsLiBtZWFucyBpdCAqZG9lcyogZXhpc3QuXG4gICAgICB2YXIgYWJzID0gdGhpcy5fbWFrZUFicyhmKVxuICAgICAgdGhpcy5jYWNoZVthYnNdID0gJ0ZJTEUnXG4gICAgICBpZiAoYWJzID09PSB0aGlzLmN3ZEFicykge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoZXIuY29kZSArICcgaW52YWxpZCBjd2QgJyArIHRoaXMuY3dkKVxuICAgICAgICBlcnJvci5wYXRoID0gdGhpcy5jd2RcbiAgICAgICAgZXJyb3IuY29kZSA9IGVyLmNvZGVcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdFTk9FTlQnOiAvLyBub3QgdGVycmlibHkgdW51c3VhbFxuICAgIGNhc2UgJ0VMT09QJzpcbiAgICBjYXNlICdFTkFNRVRPT0xPTkcnOlxuICAgIGNhc2UgJ1VOS05PV04nOlxuICAgICAgdGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGYpXSA9IGZhbHNlXG4gICAgICBicmVha1xuXG4gICAgZGVmYXVsdDogLy8gc29tZSB1bnVzdWFsIGVycm9yLiAgVHJlYXQgYXMgZmFpbHVyZS5cbiAgICAgIHRoaXMuY2FjaGVbdGhpcy5fbWFrZUFicyhmKV0gPSBmYWxzZVxuICAgICAgaWYgKHRoaXMuc3RyaWN0KVxuICAgICAgICB0aHJvdyBlclxuICAgICAgaWYgKCF0aGlzLnNpbGVudClcbiAgICAgICAgY29uc29sZS5lcnJvcignZ2xvYiBlcnJvcicsIGVyKVxuICAgICAgYnJlYWtcbiAgfVxufVxuXG5HbG9iU3luYy5wcm90b3R5cGUuX3Byb2Nlc3NHbG9iU3RhciA9IGZ1bmN0aW9uIChwcmVmaXgsIHJlYWQsIGFicywgcmVtYWluLCBpbmRleCwgaW5HbG9iU3Rhcikge1xuXG4gIHZhciBlbnRyaWVzID0gdGhpcy5fcmVhZGRpcihhYnMsIGluR2xvYlN0YXIpXG5cbiAgLy8gbm8gZW50cmllcyBtZWFucyBub3QgYSBkaXIsIHNvIGl0IGNhbiBuZXZlciBoYXZlIG1hdGNoZXNcbiAgLy8gZm9vLnR4dC8qKiBkb2Vzbid0IG1hdGNoIGZvby50eHRcbiAgaWYgKCFlbnRyaWVzKVxuICAgIHJldHVyblxuXG4gIC8vIHRlc3Qgd2l0aG91dCB0aGUgZ2xvYnN0YXIsIGFuZCB3aXRoIGV2ZXJ5IGNoaWxkIGJvdGggYmVsb3dcbiAgLy8gYW5kIHJlcGxhY2luZyB0aGUgZ2xvYnN0YXIuXG4gIHZhciByZW1haW5XaXRob3V0R2xvYlN0YXIgPSByZW1haW4uc2xpY2UoMSlcbiAgdmFyIGdzcHJlZiA9IHByZWZpeCA/IFsgcHJlZml4IF0gOiBbXVxuICB2YXIgbm9HbG9iU3RhciA9IGdzcHJlZi5jb25jYXQocmVtYWluV2l0aG91dEdsb2JTdGFyKVxuXG4gIC8vIHRoZSBub0dsb2JTdGFyIHBhdHRlcm4gZXhpdHMgdGhlIGluR2xvYlN0YXIgc3RhdGVcbiAgdGhpcy5fcHJvY2Vzcyhub0dsb2JTdGFyLCBpbmRleCwgZmFsc2UpXG5cbiAgdmFyIGxlbiA9IGVudHJpZXMubGVuZ3RoXG4gIHZhciBpc1N5bSA9IHRoaXMuc3ltbGlua3NbYWJzXVxuXG4gIC8vIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgd2UncmUgaW4gYSBnbG9ic3RhciwgdGhlbiBzdG9wXG4gIGlmIChpc1N5bSAmJiBpbkdsb2JTdGFyKVxuICAgIHJldHVyblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgZSA9IGVudHJpZXNbaV1cbiAgICBpZiAoZS5jaGFyQXQoMCkgPT09ICcuJyAmJiAhdGhpcy5kb3QpXG4gICAgICBjb250aW51ZVxuXG4gICAgLy8gdGhlc2UgdHdvIGNhc2VzIGVudGVyIHRoZSBpbkdsb2JTdGFyIHN0YXRlXG4gICAgdmFyIGluc3RlYWQgPSBnc3ByZWYuY29uY2F0KGVudHJpZXNbaV0sIHJlbWFpbldpdGhvdXRHbG9iU3RhcilcbiAgICB0aGlzLl9wcm9jZXNzKGluc3RlYWQsIGluZGV4LCB0cnVlKVxuXG4gICAgdmFyIGJlbG93ID0gZ3NwcmVmLmNvbmNhdChlbnRyaWVzW2ldLCByZW1haW4pXG4gICAgdGhpcy5fcHJvY2VzcyhiZWxvdywgaW5kZXgsIHRydWUpXG4gIH1cbn1cblxuR2xvYlN5bmMucHJvdG90eXBlLl9wcm9jZXNzU2ltcGxlID0gZnVuY3Rpb24gKHByZWZpeCwgaW5kZXgpIHtcbiAgLy8gWFhYIHJldmlldyB0aGlzLiAgU2hvdWxkbid0IGl0IGJlIGRvaW5nIHRoZSBtb3VudGluZyBldGNcbiAgLy8gYmVmb3JlIGRvaW5nIHN0YXQ/ICBraW5kYSB3ZWlyZD9cbiAgdmFyIGV4aXN0cyA9IHRoaXMuX3N0YXQocHJlZml4KVxuXG4gIGlmICghdGhpcy5tYXRjaGVzW2luZGV4XSlcbiAgICB0aGlzLm1hdGNoZXNbaW5kZXhdID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gIC8vIElmIGl0IGRvZXNuJ3QgZXhpc3QsIHRoZW4ganVzdCBtYXJrIHRoZSBsYWNrIG9mIHJlc3VsdHNcbiAgaWYgKCFleGlzdHMpXG4gICAgcmV0dXJuXG5cbiAgaWYgKHByZWZpeCAmJiBpc0Fic29sdXRlKHByZWZpeCkgJiYgIXRoaXMubm9tb3VudCkge1xuICAgIHZhciB0cmFpbCA9IC9bXFwvXFxcXF0kLy50ZXN0KHByZWZpeClcbiAgICBpZiAocHJlZml4LmNoYXJBdCgwKSA9PT0gJy8nKSB7XG4gICAgICBwcmVmaXggPSBwYXRoLmpvaW4odGhpcy5yb290LCBwcmVmaXgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWZpeCA9IHBhdGgucmVzb2x2ZSh0aGlzLnJvb3QsIHByZWZpeClcbiAgICAgIGlmICh0cmFpbClcbiAgICAgICAgcHJlZml4ICs9ICcvJ1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKVxuICAgIHByZWZpeCA9IHByZWZpeC5yZXBsYWNlKC9cXFxcL2csICcvJylcblxuICAvLyBNYXJrIHRoaXMgYXMgYSBtYXRjaFxuICB0aGlzLl9lbWl0TWF0Y2goaW5kZXgsIHByZWZpeClcbn1cblxuLy8gUmV0dXJucyBlaXRoZXIgJ0RJUicsICdGSUxFJywgb3IgZmFsc2Vcbkdsb2JTeW5jLnByb3RvdHlwZS5fc3RhdCA9IGZ1bmN0aW9uIChmKSB7XG4gIHZhciBhYnMgPSB0aGlzLl9tYWtlQWJzKGYpXG4gIHZhciBuZWVkRGlyID0gZi5zbGljZSgtMSkgPT09ICcvJ1xuXG4gIGlmIChmLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZVxuXG4gIGlmICghdGhpcy5zdGF0ICYmIG93blByb3AodGhpcy5jYWNoZSwgYWJzKSkge1xuICAgIHZhciBjID0gdGhpcy5jYWNoZVthYnNdXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSlcbiAgICAgIGMgPSAnRElSJ1xuXG4gICAgLy8gSXQgZXhpc3RzLCBidXQgbWF5YmUgbm90IGhvdyB3ZSBuZWVkIGl0XG4gICAgaWYgKCFuZWVkRGlyIHx8IGMgPT09ICdESVInKVxuICAgICAgcmV0dXJuIGNcblxuICAgIGlmIChuZWVkRGlyICYmIGMgPT09ICdGSUxFJylcbiAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgLy8gb3RoZXJ3aXNlIHdlIGhhdmUgdG8gc3RhdCwgYmVjYXVzZSBtYXliZSBjPXRydWVcbiAgICAvLyBpZiB3ZSBrbm93IGl0IGV4aXN0cywgYnV0IG5vdCB3aGF0IGl0IGlzLlxuICB9XG5cbiAgdmFyIGV4aXN0c1xuICB2YXIgc3RhdCA9IHRoaXMuc3RhdENhY2hlW2Fic11cbiAgaWYgKCFzdGF0KSB7XG4gICAgdmFyIGxzdGF0XG4gICAgdHJ5IHtcbiAgICAgIGxzdGF0ID0gdGhpcy5mcy5sc3RhdFN5bmMoYWJzKVxuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICBpZiAoZXIgJiYgKGVyLmNvZGUgPT09ICdFTk9FTlQnIHx8IGVyLmNvZGUgPT09ICdFTk9URElSJykpIHtcbiAgICAgICAgdGhpcy5zdGF0Q2FjaGVbYWJzXSA9IGZhbHNlXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsc3RhdCAmJiBsc3RhdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGF0ID0gdGhpcy5mcy5zdGF0U3luYyhhYnMpXG4gICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICBzdGF0ID0gbHN0YXRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdCA9IGxzdGF0XG4gICAgfVxuICB9XG5cbiAgdGhpcy5zdGF0Q2FjaGVbYWJzXSA9IHN0YXRcblxuICB2YXIgYyA9IHRydWVcbiAgaWYgKHN0YXQpXG4gICAgYyA9IHN0YXQuaXNEaXJlY3RvcnkoKSA/ICdESVInIDogJ0ZJTEUnXG5cbiAgdGhpcy5jYWNoZVthYnNdID0gdGhpcy5jYWNoZVthYnNdIHx8IGNcblxuICBpZiAobmVlZERpciAmJiBjID09PSAnRklMRScpXG4gICAgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIGNcbn1cblxuR2xvYlN5bmMucHJvdG90eXBlLl9tYXJrID0gZnVuY3Rpb24gKHApIHtcbiAgcmV0dXJuIGNvbW1vbi5tYXJrKHRoaXMsIHApXG59XG5cbkdsb2JTeW5jLnByb3RvdHlwZS5fbWFrZUFicyA9IGZ1bmN0aW9uIChmKSB7XG4gIHJldHVybiBjb21tb24ubWFrZUFicyh0aGlzLCBmKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVcblxudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIG9iai5fX3Byb3RvX19cbn1cblxuZnVuY3Rpb24gY2xvbmUgKG9iaikge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKVxuICAgIHJldHVybiBvYmpcblxuICBpZiAob2JqIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgIHZhciBjb3B5ID0geyBfX3Byb3RvX186IGdldFByb3RvdHlwZU9mKG9iaikgfVxuICBlbHNlXG4gICAgdmFyIGNvcHkgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29weSwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSlcbiAgfSlcblxuICByZXR1cm4gY29weVxufVxuIiwidmFyIGZzID0gcmVxdWlyZSgnZnMnKVxudmFyIHBvbHlmaWxscyA9IHJlcXVpcmUoJy4vcG9seWZpbGxzLmpzJylcbnZhciBsZWdhY3kgPSByZXF1aXJlKCcuL2xlZ2FjeS1zdHJlYW1zLmpzJylcbnZhciBjbG9uZSA9IHJlcXVpcmUoJy4vY2xvbmUuanMnKVxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIG5vZGUgMC54IHBvbHlmaWxsICovXG52YXIgZ3JhY2VmdWxRdWV1ZVxudmFyIHByZXZpb3VzU3ltYm9sXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlIC0gbm9kZSAwLnggcG9seWZpbGwgKi9cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nKSB7XG4gIGdyYWNlZnVsUXVldWUgPSBTeW1ib2wuZm9yKCdncmFjZWZ1bC1mcy5xdWV1ZScpXG4gIC8vIFRoaXMgaXMgdXNlZCBpbiB0ZXN0aW5nIGJ5IGZ1dHVyZSB2ZXJzaW9uc1xuICBwcmV2aW91c1N5bWJvbCA9IFN5bWJvbC5mb3IoJ2dyYWNlZnVsLWZzLnByZXZpb3VzJylcbn0gZWxzZSB7XG4gIGdyYWNlZnVsUXVldWUgPSAnX19fZ3JhY2VmdWwtZnMucXVldWUnXG4gIHByZXZpb3VzU3ltYm9sID0gJ19fX2dyYWNlZnVsLWZzLnByZXZpb3VzJ1xufVxuXG5mdW5jdGlvbiBub29wICgpIHt9XG5cbmZ1bmN0aW9uIHB1Ymxpc2hRdWV1ZShjb250ZXh0LCBxdWV1ZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udGV4dCwgZ3JhY2VmdWxRdWV1ZSwge1xuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9XG4gIH0pXG59XG5cbnZhciBkZWJ1ZyA9IG5vb3BcbmlmICh1dGlsLmRlYnVnbG9nKVxuICBkZWJ1ZyA9IHV0aWwuZGVidWdsb2coJ2dmczQnKVxuZWxzZSBpZiAoL1xcYmdmczRcXGIvaS50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJycpKVxuICBkZWJ1ZyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBtID0gdXRpbC5mb3JtYXQuYXBwbHkodXRpbCwgYXJndW1lbnRzKVxuICAgIG0gPSAnR0ZTNDogJyArIG0uc3BsaXQoL1xcbi8pLmpvaW4oJ1xcbkdGUzQ6ICcpXG4gICAgY29uc29sZS5lcnJvcihtKVxuICB9XG5cbi8vIE9uY2UgdGltZSBpbml0aWFsaXphdGlvblxuaWYgKCFmc1tncmFjZWZ1bFF1ZXVlXSkge1xuICAvLyBUaGlzIHF1ZXVlIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgbG9hZGVkIGluc3RhbmNlc1xuICB2YXIgcXVldWUgPSBnbG9iYWxbZ3JhY2VmdWxRdWV1ZV0gfHwgW11cbiAgcHVibGlzaFF1ZXVlKGZzLCBxdWV1ZSlcblxuICAvLyBQYXRjaCBmcy5jbG9zZS9jbG9zZVN5bmMgdG8gc2hhcmVkIHF1ZXVlIHZlcnNpb24sIGJlY2F1c2Ugd2UgbmVlZFxuICAvLyB0byByZXRyeSgpIHdoZW5ldmVyIGEgY2xvc2UgaGFwcGVucyAqYW55d2hlcmUqIGluIHRoZSBwcm9ncmFtLlxuICAvLyBUaGlzIGlzIGVzc2VudGlhbCB3aGVuIG11bHRpcGxlIGdyYWNlZnVsLWZzIGluc3RhbmNlcyBhcmVcbiAgLy8gaW4gcGxheSBhdCB0aGUgc2FtZSB0aW1lLlxuICBmcy5jbG9zZSA9IChmdW5jdGlvbiAoZnMkY2xvc2UpIHtcbiAgICBmdW5jdGlvbiBjbG9zZSAoZmQsIGNiKSB7XG4gICAgICByZXR1cm4gZnMkY2xvc2UuY2FsbChmcywgZmQsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBncmFjZWZ1bC1mcyBzaGFyZWQgcXVldWVcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXNldFF1ZXVlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2xvc2UsIHByZXZpb3VzU3ltYm9sLCB7XG4gICAgICB2YWx1ZTogZnMkY2xvc2VcbiAgICB9KVxuICAgIHJldHVybiBjbG9zZVxuICB9KShmcy5jbG9zZSlcblxuICBmcy5jbG9zZVN5bmMgPSAoZnVuY3Rpb24gKGZzJGNsb3NlU3luYykge1xuICAgIGZ1bmN0aW9uIGNsb3NlU3luYyAoZmQpIHtcbiAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ3JhY2VmdWwtZnMgc2hhcmVkIHF1ZXVlXG4gICAgICBmcyRjbG9zZVN5bmMuYXBwbHkoZnMsIGFyZ3VtZW50cylcbiAgICAgIHJlc2V0UXVldWUoKVxuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9zZVN5bmMsIHByZXZpb3VzU3ltYm9sLCB7XG4gICAgICB2YWx1ZTogZnMkY2xvc2VTeW5jXG4gICAgfSlcbiAgICByZXR1cm4gY2xvc2VTeW5jXG4gIH0pKGZzLmNsb3NlU3luYylcblxuICBpZiAoL1xcYmdmczRcXGIvaS50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJycpKSB7XG4gICAgcHJvY2Vzcy5vbignZXhpdCcsIGZ1bmN0aW9uKCkge1xuICAgICAgZGVidWcoZnNbZ3JhY2VmdWxRdWV1ZV0pXG4gICAgICByZXF1aXJlKCdhc3NlcnQnKS5lcXVhbChmc1tncmFjZWZ1bFF1ZXVlXS5sZW5ndGgsIDApXG4gICAgfSlcbiAgfVxufVxuXG5pZiAoIWdsb2JhbFtncmFjZWZ1bFF1ZXVlXSkge1xuICBwdWJsaXNoUXVldWUoZ2xvYmFsLCBmc1tncmFjZWZ1bFF1ZXVlXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2goY2xvbmUoZnMpKVxuaWYgKHByb2Nlc3MuZW52LlRFU1RfR1JBQ0VGVUxfRlNfR0xPQkFMX1BBVENIICYmICFmcy5fX3BhdGNoZWQpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHBhdGNoKGZzKVxuICAgIGZzLl9fcGF0Y2hlZCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHBhdGNoIChmcykge1xuICAvLyBFdmVyeXRoaW5nIHRoYXQgcmVmZXJlbmNlcyB0aGUgb3BlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGluIGhlcmVcbiAgcG9seWZpbGxzKGZzKVxuICBmcy5ncmFjZWZ1bGlmeSA9IHBhdGNoXG5cbiAgZnMuY3JlYXRlUmVhZFN0cmVhbSA9IGNyZWF0ZVJlYWRTdHJlYW1cbiAgZnMuY3JlYXRlV3JpdGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbVxuICB2YXIgZnMkcmVhZEZpbGUgPSBmcy5yZWFkRmlsZVxuICBmcy5yZWFkRmlsZSA9IHJlYWRGaWxlXG4gIGZ1bmN0aW9uIHJlYWRGaWxlIChwYXRoLCBvcHRpb25zLCBjYikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gb3B0aW9ucywgb3B0aW9ucyA9IG51bGxcblxuICAgIHJldHVybiBnbyRyZWFkRmlsZShwYXRoLCBvcHRpb25zLCBjYilcblxuICAgIGZ1bmN0aW9uIGdvJHJlYWRGaWxlIChwYXRoLCBvcHRpb25zLCBjYiwgc3RhcnRUaW1lKSB7XG4gICAgICByZXR1cm4gZnMkcmVhZEZpbGUocGF0aCwgb3B0aW9ucywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyRyZWFkRmlsZSwgW3BhdGgsIG9wdGlvbnMsIGNiXSwgZXJyLCBzdGFydFRpbWUgfHwgRGF0ZS5ub3coKSwgRGF0ZS5ub3coKV0pXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdmFyIGZzJHdyaXRlRmlsZSA9IGZzLndyaXRlRmlsZVxuICBmcy53cml0ZUZpbGUgPSB3cml0ZUZpbGVcbiAgZnVuY3Rpb24gd3JpdGVGaWxlIChwYXRoLCBkYXRhLCBvcHRpb25zLCBjYikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gb3B0aW9ucywgb3B0aW9ucyA9IG51bGxcblxuICAgIHJldHVybiBnbyR3cml0ZUZpbGUocGF0aCwgZGF0YSwgb3B0aW9ucywgY2IpXG5cbiAgICBmdW5jdGlvbiBnbyR3cml0ZUZpbGUgKHBhdGgsIGRhdGEsIG9wdGlvbnMsIGNiLCBzdGFydFRpbWUpIHtcbiAgICAgIHJldHVybiBmcyR3cml0ZUZpbGUocGF0aCwgZGF0YSwgb3B0aW9ucywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyR3cml0ZUZpbGUsIFtwYXRoLCBkYXRhLCBvcHRpb25zLCBjYl0sIGVyciwgc3RhcnRUaW1lIHx8IERhdGUubm93KCksIERhdGUubm93KCldKVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHZhciBmcyRhcHBlbmRGaWxlID0gZnMuYXBwZW5kRmlsZVxuICBpZiAoZnMkYXBwZW5kRmlsZSlcbiAgICBmcy5hcHBlbmRGaWxlID0gYXBwZW5kRmlsZVxuICBmdW5jdGlvbiBhcHBlbmRGaWxlIChwYXRoLCBkYXRhLCBvcHRpb25zLCBjYikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gb3B0aW9ucywgb3B0aW9ucyA9IG51bGxcblxuICAgIHJldHVybiBnbyRhcHBlbmRGaWxlKHBhdGgsIGRhdGEsIG9wdGlvbnMsIGNiKVxuXG4gICAgZnVuY3Rpb24gZ28kYXBwZW5kRmlsZSAocGF0aCwgZGF0YSwgb3B0aW9ucywgY2IsIHN0YXJ0VGltZSkge1xuICAgICAgcmV0dXJuIGZzJGFwcGVuZEZpbGUocGF0aCwgZGF0YSwgb3B0aW9ucywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyRhcHBlbmRGaWxlLCBbcGF0aCwgZGF0YSwgb3B0aW9ucywgY2JdLCBlcnIsIHN0YXJ0VGltZSB8fCBEYXRlLm5vdygpLCBEYXRlLm5vdygpXSlcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGNiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2YXIgZnMkY29weUZpbGUgPSBmcy5jb3B5RmlsZVxuICBpZiAoZnMkY29weUZpbGUpXG4gICAgZnMuY29weUZpbGUgPSBjb3B5RmlsZVxuICBmdW5jdGlvbiBjb3B5RmlsZSAoc3JjLCBkZXN0LCBmbGFncywgY2IpIHtcbiAgICBpZiAodHlwZW9mIGZsYWdzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYiA9IGZsYWdzXG4gICAgICBmbGFncyA9IDBcbiAgICB9XG4gICAgcmV0dXJuIGdvJGNvcHlGaWxlKHNyYywgZGVzdCwgZmxhZ3MsIGNiKVxuXG4gICAgZnVuY3Rpb24gZ28kY29weUZpbGUgKHNyYywgZGVzdCwgZmxhZ3MsIGNiLCBzdGFydFRpbWUpIHtcbiAgICAgIHJldHVybiBmcyRjb3B5RmlsZShzcmMsIGRlc3QsIGZsYWdzLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgJiYgKGVyci5jb2RlID09PSAnRU1GSUxFJyB8fCBlcnIuY29kZSA9PT0gJ0VORklMRScpKVxuICAgICAgICAgIGVucXVldWUoW2dvJGNvcHlGaWxlLCBbc3JjLCBkZXN0LCBmbGFncywgY2JdLCBlcnIsIHN0YXJ0VGltZSB8fCBEYXRlLm5vdygpLCBEYXRlLm5vdygpXSlcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGNiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2YXIgZnMkcmVhZGRpciA9IGZzLnJlYWRkaXJcbiAgZnMucmVhZGRpciA9IHJlYWRkaXJcbiAgdmFyIG5vUmVhZGRpck9wdGlvblZlcnNpb25zID0gL152WzAtNV1cXC4vXG4gIGZ1bmN0aW9uIHJlYWRkaXIgKHBhdGgsIG9wdGlvbnMsIGNiKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKVxuICAgICAgY2IgPSBvcHRpb25zLCBvcHRpb25zID0gbnVsbFxuXG4gICAgdmFyIGdvJHJlYWRkaXIgPSBub1JlYWRkaXJPcHRpb25WZXJzaW9ucy50ZXN0KHByb2Nlc3MudmVyc2lvbilcbiAgICAgID8gZnVuY3Rpb24gZ28kcmVhZGRpciAocGF0aCwgb3B0aW9ucywgY2IsIHN0YXJ0VGltZSkge1xuICAgICAgICByZXR1cm4gZnMkcmVhZGRpcihwYXRoLCBmcyRyZWFkZGlyQ2FsbGJhY2soXG4gICAgICAgICAgcGF0aCwgb3B0aW9ucywgY2IsIHN0YXJ0VGltZVxuICAgICAgICApKVxuICAgICAgfVxuICAgICAgOiBmdW5jdGlvbiBnbyRyZWFkZGlyIChwYXRoLCBvcHRpb25zLCBjYiwgc3RhcnRUaW1lKSB7XG4gICAgICAgIHJldHVybiBmcyRyZWFkZGlyKHBhdGgsIG9wdGlvbnMsIGZzJHJlYWRkaXJDYWxsYmFjayhcbiAgICAgICAgICBwYXRoLCBvcHRpb25zLCBjYiwgc3RhcnRUaW1lXG4gICAgICAgICkpXG4gICAgICB9XG5cbiAgICByZXR1cm4gZ28kcmVhZGRpcihwYXRoLCBvcHRpb25zLCBjYilcblxuICAgIGZ1bmN0aW9uIGZzJHJlYWRkaXJDYWxsYmFjayAocGF0aCwgb3B0aW9ucywgY2IsIHN0YXJ0VGltZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlcnIsIGZpbGVzKSB7XG4gICAgICAgIGlmIChlcnIgJiYgKGVyci5jb2RlID09PSAnRU1GSUxFJyB8fCBlcnIuY29kZSA9PT0gJ0VORklMRScpKVxuICAgICAgICAgIGVucXVldWUoW1xuICAgICAgICAgICAgZ28kcmVhZGRpcixcbiAgICAgICAgICAgIFtwYXRoLCBvcHRpb25zLCBjYl0sXG4gICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICBzdGFydFRpbWUgfHwgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIERhdGUubm93KClcbiAgICAgICAgICBdKVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMuc29ydClcbiAgICAgICAgICAgIGZpbGVzLnNvcnQoKVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGNiLmNhbGwodGhpcywgZXJyLCBmaWxlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLnZlcnNpb24uc3Vic3RyKDAsIDQpID09PSAndjAuOCcpIHtcbiAgICB2YXIgbGVnU3RyZWFtcyA9IGxlZ2FjeShmcylcbiAgICBSZWFkU3RyZWFtID0gbGVnU3RyZWFtcy5SZWFkU3RyZWFtXG4gICAgV3JpdGVTdHJlYW0gPSBsZWdTdHJlYW1zLldyaXRlU3RyZWFtXG4gIH1cblxuICB2YXIgZnMkUmVhZFN0cmVhbSA9IGZzLlJlYWRTdHJlYW1cbiAgaWYgKGZzJFJlYWRTdHJlYW0pIHtcbiAgICBSZWFkU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZnMkUmVhZFN0cmVhbS5wcm90b3R5cGUpXG4gICAgUmVhZFN0cmVhbS5wcm90b3R5cGUub3BlbiA9IFJlYWRTdHJlYW0kb3BlblxuICB9XG5cbiAgdmFyIGZzJFdyaXRlU3RyZWFtID0gZnMuV3JpdGVTdHJlYW1cbiAgaWYgKGZzJFdyaXRlU3RyZWFtKSB7XG4gICAgV3JpdGVTdHJlYW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShmcyRXcml0ZVN0cmVhbS5wcm90b3R5cGUpXG4gICAgV3JpdGVTdHJlYW0ucHJvdG90eXBlLm9wZW4gPSBXcml0ZVN0cmVhbSRvcGVuXG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnMsICdSZWFkU3RyZWFtJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWRTdHJlYW1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKHZhbCkge1xuICAgICAgUmVhZFN0cmVhbSA9IHZhbFxuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSlcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZzLCAnV3JpdGVTdHJlYW0nLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gV3JpdGVTdHJlYW1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKHZhbCkge1xuICAgICAgV3JpdGVTdHJlYW0gPSB2YWxcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pXG5cbiAgLy8gbGVnYWN5IG5hbWVzXG4gIHZhciBGaWxlUmVhZFN0cmVhbSA9IFJlYWRTdHJlYW1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZzLCAnRmlsZVJlYWRTdHJlYW0nLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gRmlsZVJlYWRTdHJlYW1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKHZhbCkge1xuICAgICAgRmlsZVJlYWRTdHJlYW0gPSB2YWxcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pXG4gIHZhciBGaWxlV3JpdGVTdHJlYW0gPSBXcml0ZVN0cmVhbVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnMsICdGaWxlV3JpdGVTdHJlYW0nLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gRmlsZVdyaXRlU3RyZWFtXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIEZpbGVXcml0ZVN0cmVhbSA9IHZhbFxuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSlcblxuICBmdW5jdGlvbiBSZWFkU3RyZWFtIChwYXRoLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBSZWFkU3RyZWFtKVxuICAgICAgcmV0dXJuIGZzJFJlYWRTdHJlYW0uYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpc1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBSZWFkU3RyZWFtLmFwcGx5KE9iamVjdC5jcmVhdGUoUmVhZFN0cmVhbS5wcm90b3R5cGUpLCBhcmd1bWVudHMpXG4gIH1cblxuICBmdW5jdGlvbiBSZWFkU3RyZWFtJG9wZW4gKCkge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIG9wZW4odGhhdC5wYXRoLCB0aGF0LmZsYWdzLCB0aGF0Lm1vZGUsIGZ1bmN0aW9uIChlcnIsIGZkKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGF0LmF1dG9DbG9zZSlcbiAgICAgICAgICB0aGF0LmRlc3Ryb3koKVxuXG4gICAgICAgIHRoYXQuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGF0LmZkID0gZmRcbiAgICAgICAgdGhhdC5lbWl0KCdvcGVuJywgZmQpXG4gICAgICAgIHRoYXQucmVhZCgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIFdyaXRlU3RyZWFtIChwYXRoLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBXcml0ZVN0cmVhbSlcbiAgICAgIHJldHVybiBmcyRXcml0ZVN0cmVhbS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0aGlzXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIFdyaXRlU3RyZWFtLmFwcGx5KE9iamVjdC5jcmVhdGUoV3JpdGVTdHJlYW0ucHJvdG90eXBlKSwgYXJndW1lbnRzKVxuICB9XG5cbiAgZnVuY3Rpb24gV3JpdGVTdHJlYW0kb3BlbiAoKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgb3Blbih0aGF0LnBhdGgsIHRoYXQuZmxhZ3MsIHRoYXQubW9kZSwgZnVuY3Rpb24gKGVyciwgZmQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhhdC5kZXN0cm95KClcbiAgICAgICAgdGhhdC5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoYXQuZmQgPSBmZFxuICAgICAgICB0aGF0LmVtaXQoJ29wZW4nLCBmZClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUmVhZFN0cmVhbSAocGF0aCwgb3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgZnMuUmVhZFN0cmVhbShwYXRoLCBvcHRpb25zKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlV3JpdGVTdHJlYW0gKHBhdGgsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IGZzLldyaXRlU3RyZWFtKHBhdGgsIG9wdGlvbnMpXG4gIH1cblxuICB2YXIgZnMkb3BlbiA9IGZzLm9wZW5cbiAgZnMub3BlbiA9IG9wZW5cbiAgZnVuY3Rpb24gb3BlbiAocGF0aCwgZmxhZ3MsIG1vZGUsIGNiKSB7XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnZnVuY3Rpb24nKVxuICAgICAgY2IgPSBtb2RlLCBtb2RlID0gbnVsbFxuXG4gICAgcmV0dXJuIGdvJG9wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsIGNiKVxuXG4gICAgZnVuY3Rpb24gZ28kb3BlbiAocGF0aCwgZmxhZ3MsIG1vZGUsIGNiLCBzdGFydFRpbWUpIHtcbiAgICAgIHJldHVybiBmcyRvcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyRvcGVuLCBbcGF0aCwgZmxhZ3MsIG1vZGUsIGNiXSwgZXJyLCBzdGFydFRpbWUgfHwgRGF0ZS5ub3coKSwgRGF0ZS5ub3coKV0pXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZzXG59XG5cbmZ1bmN0aW9uIGVucXVldWUgKGVsZW0pIHtcbiAgZGVidWcoJ0VOUVVFVUUnLCBlbGVtWzBdLm5hbWUsIGVsZW1bMV0pXG4gIGZzW2dyYWNlZnVsUXVldWVdLnB1c2goZWxlbSlcbiAgcmV0cnkoKVxufVxuXG4vLyBrZWVwIHRyYWNrIG9mIHRoZSB0aW1lb3V0IGJldHdlZW4gcmV0cnkoKSBjYWxsc1xudmFyIHJldHJ5VGltZXJcblxuLy8gcmVzZXQgdGhlIHN0YXJ0VGltZSBhbmQgbGFzdFRpbWUgdG8gbm93XG4vLyB0aGlzIHJlc2V0cyB0aGUgc3RhcnQgb2YgdGhlIDYwIHNlY29uZCBvdmVyYWxsIHRpbWVvdXQgYXMgd2VsbCBhcyB0aGVcbi8vIGRlbGF5IGJldHdlZW4gYXR0ZW1wdHMgc28gdGhhdCB3ZSdsbCByZXRyeSB0aGVzZSBqb2JzIHNvb25lclxuZnVuY3Rpb24gcmVzZXRRdWV1ZSAoKSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdygpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZnNbZ3JhY2VmdWxRdWV1ZV0ubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBlbnRyaWVzIHRoYXQgYXJlIG9ubHkgYSBsZW5ndGggb2YgMiBhcmUgZnJvbSBhbiBvbGRlciB2ZXJzaW9uLCBkb24ndFxuICAgIC8vIGJvdGhlciBtb2RpZnlpbmcgdGhvc2Ugc2luY2UgdGhleSdsbCBiZSByZXRyaWVkIGFueXdheS5cbiAgICBpZiAoZnNbZ3JhY2VmdWxRdWV1ZV1baV0ubGVuZ3RoID4gMikge1xuICAgICAgZnNbZ3JhY2VmdWxRdWV1ZV1baV1bM10gPSBub3cgLy8gc3RhcnRUaW1lXG4gICAgICBmc1tncmFjZWZ1bFF1ZXVlXVtpXVs0XSA9IG5vdyAvLyBsYXN0VGltZVxuICAgIH1cbiAgfVxuICAvLyBjYWxsIHJldHJ5IHRvIG1ha2Ugc3VyZSB3ZSdyZSBhY3RpdmVseSBwcm9jZXNzaW5nIHRoZSBxdWV1ZVxuICByZXRyeSgpXG59XG5cbmZ1bmN0aW9uIHJldHJ5ICgpIHtcbiAgLy8gY2xlYXIgdGhlIHRpbWVyIGFuZCByZW1vdmUgaXQgdG8gaGVscCBwcmV2ZW50IHVuaW50ZW5kZWQgY29uY3VycmVuY3lcbiAgY2xlYXJUaW1lb3V0KHJldHJ5VGltZXIpXG4gIHJldHJ5VGltZXIgPSB1bmRlZmluZWRcblxuICBpZiAoZnNbZ3JhY2VmdWxRdWV1ZV0ubGVuZ3RoID09PSAwKVxuICAgIHJldHVyblxuXG4gIHZhciBlbGVtID0gZnNbZ3JhY2VmdWxRdWV1ZV0uc2hpZnQoKVxuICB2YXIgZm4gPSBlbGVtWzBdXG4gIHZhciBhcmdzID0gZWxlbVsxXVxuICAvLyB0aGVzZSBpdGVtcyBtYXkgYmUgdW5zZXQgaWYgdGhleSB3ZXJlIGFkZGVkIGJ5IGFuIG9sZGVyIGdyYWNlZnVsLWZzXG4gIHZhciBlcnIgPSBlbGVtWzJdXG4gIHZhciBzdGFydFRpbWUgPSBlbGVtWzNdXG4gIHZhciBsYXN0VGltZSA9IGVsZW1bNF1cblxuICAvLyBpZiB3ZSBkb24ndCBoYXZlIGEgc3RhcnRUaW1lIHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgaWYgd2UndmUgd2FpdGVkXG4gIC8vIGxvbmcgZW5vdWdoLCBzbyBnbyBhaGVhZCBhbmQgcmV0cnkgdGhpcyBpdGVtIG5vd1xuICBpZiAoc3RhcnRUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICBkZWJ1ZygnUkVUUlknLCBmbi5uYW1lLCBhcmdzKVxuICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpXG4gIH0gZWxzZSBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA+PSA2MDAwMCkge1xuICAgIC8vIGl0J3MgYmVlbiBtb3JlIHRoYW4gNjAgc2Vjb25kcyB0b3RhbCwgYmFpbCBub3dcbiAgICBkZWJ1ZygnVElNRU9VVCcsIGZuLm5hbWUsIGFyZ3MpXG4gICAgdmFyIGNiID0gYXJncy5wb3AoKVxuICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICBjYi5jYWxsKG51bGwsIGVycilcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiB0aGUgbGFzdCBhdHRlbXB0IGFuZCByaWdodCBub3dcbiAgICB2YXIgc2luY2VBdHRlbXB0ID0gRGF0ZS5ub3coKSAtIGxhc3RUaW1lXG4gICAgLy8gdGhlIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gd2hlbiB3ZSBmaXJzdCB0cmllZCwgYW5kIHdoZW4gd2UgbGFzdCB0cmllZFxuICAgIC8vIHJvdW5kZWQgdXAgdG8gYXQgbGVhc3QgMVxuICAgIHZhciBzaW5jZVN0YXJ0ID0gTWF0aC5tYXgobGFzdFRpbWUgLSBzdGFydFRpbWUsIDEpXG4gICAgLy8gYmFja29mZi4gd2FpdCBsb25nZXIgdGhhbiB0aGUgdG90YWwgdGltZSB3ZSd2ZSBiZWVuIHJldHJ5aW5nLCBidXQgb25seVxuICAgIC8vIHVwIHRvIGEgbWF4aW11bSBvZiAxMDBtc1xuICAgIHZhciBkZXNpcmVkRGVsYXkgPSBNYXRoLm1pbihzaW5jZVN0YXJ0ICogMS4yLCAxMDApXG4gICAgLy8gaXQncyBiZWVuIGxvbmcgZW5vdWdoIHNpbmNlIHRoZSBsYXN0IHJldHJ5LCBkbyBpdCBhZ2FpblxuICAgIGlmIChzaW5jZUF0dGVtcHQgPj0gZGVzaXJlZERlbGF5KSB7XG4gICAgICBkZWJ1ZygnUkVUUlknLCBmbi5uYW1lLCBhcmdzKVxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncy5jb25jYXQoW3N0YXJ0VGltZV0pKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiB3ZSBjYW4ndCBkbyB0aGlzIGpvYiB5ZXQsIHB1c2ggaXQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcbiAgICAgIC8vIGFuZCBsZXQgdGhlIG5leHQgaXRlcmF0aW9uIGNoZWNrIGFnYWluXG4gICAgICBmc1tncmFjZWZ1bFF1ZXVlXS5wdXNoKGVsZW0pXG4gICAgfVxuICB9XG5cbiAgLy8gc2NoZWR1bGUgb3VyIG5leHQgcnVuIGlmIG9uZSBpc24ndCBhbHJlYWR5IHNjaGVkdWxlZFxuICBpZiAocmV0cnlUaW1lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0cnlUaW1lciA9IHNldFRpbWVvdXQocmV0cnksIDApXG4gIH1cbn1cbiIsInZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW1cblxubW9kdWxlLmV4cG9ydHMgPSBsZWdhY3lcblxuZnVuY3Rpb24gbGVnYWN5IChmcykge1xuICByZXR1cm4ge1xuICAgIFJlYWRTdHJlYW06IFJlYWRTdHJlYW0sXG4gICAgV3JpdGVTdHJlYW06IFdyaXRlU3RyZWFtXG4gIH1cblxuICBmdW5jdGlvbiBSZWFkU3RyZWFtIChwYXRoLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRTdHJlYW0pKSByZXR1cm4gbmV3IFJlYWRTdHJlYW0ocGF0aCwgb3B0aW9ucyk7XG5cbiAgICBTdHJlYW0uY2FsbCh0aGlzKTtcblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5mZCA9IG51bGw7XG4gICAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuZmxhZ3MgPSAncic7XG4gICAgdGhpcy5tb2RlID0gNDM4OyAvKj0wNjY2Ki9cbiAgICB0aGlzLmJ1ZmZlclNpemUgPSA2NCAqIDEwMjQ7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIC8vIE1peGluIG9wdGlvbnMgaW50byB0aGlzXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaW5kZXhdO1xuICAgICAgdGhpc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVuY29kaW5nKSB0aGlzLnNldEVuY29kaW5nKHRoaXMuZW5jb2RpbmcpO1xuXG4gICAgaWYgKHRoaXMuc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCdudW1iZXInICE9PSB0eXBlb2YgdGhpcy5zdGFydCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ3N0YXJ0IG11c3QgYmUgYSBOdW1iZXInKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZW5kID0gSW5maW5pdHk7XG4gICAgICB9IGVsc2UgaWYgKCdudW1iZXInICE9PSB0eXBlb2YgdGhpcy5lbmQpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdlbmQgbXVzdCBiZSBhIE51bWJlcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdGFydCA+IHRoaXMuZW5kKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc3RhcnQgbXVzdCBiZSA8PSBlbmQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZkICE9PSBudWxsKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLl9yZWFkKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmcy5vcGVuKHRoaXMucGF0aCwgdGhpcy5mbGFncywgdGhpcy5tb2RlLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgc2VsZi5yZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZmQgPSBmZDtcbiAgICAgIHNlbGYuZW1pdCgnb3BlbicsIGZkKTtcbiAgICAgIHNlbGYuX3JlYWQoKTtcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gV3JpdGVTdHJlYW0gKHBhdGgsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgV3JpdGVTdHJlYW0pKSByZXR1cm4gbmV3IFdyaXRlU3RyZWFtKHBhdGgsIG9wdGlvbnMpO1xuXG4gICAgU3RyZWFtLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgIHRoaXMuZmQgPSBudWxsO1xuICAgIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gICAgdGhpcy5mbGFncyA9ICd3JztcbiAgICB0aGlzLmVuY29kaW5nID0gJ2JpbmFyeSc7XG4gICAgdGhpcy5tb2RlID0gNDM4OyAvKj0wNjY2Ki9cbiAgICB0aGlzLmJ5dGVzV3JpdHRlbiA9IDA7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIC8vIE1peGluIG9wdGlvbnMgaW50byB0aGlzXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaW5kZXhdO1xuICAgICAgdGhpc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICgnbnVtYmVyJyAhPT0gdHlwZW9mIHRoaXMuc3RhcnQpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdzdGFydCBtdXN0IGJlIGEgTnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdGFydCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdGFydCBtdXN0IGJlID49IHplcm8nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0O1xuICAgIH1cblxuICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xuICAgIHRoaXMuX3F1ZXVlID0gW107XG5cbiAgICBpZiAodGhpcy5mZCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fb3BlbiA9IGZzLm9wZW47XG4gICAgICB0aGlzLl9xdWV1ZS5wdXNoKFt0aGlzLl9vcGVuLCB0aGlzLnBhdGgsIHRoaXMuZmxhZ3MsIHRoaXMubW9kZSwgdW5kZWZpbmVkXSk7XG4gICAgICB0aGlzLmZsdXNoKCk7XG4gICAgfVxuICB9XG59XG4iLCJ2YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnY29uc3RhbnRzJylcblxudmFyIG9yaWdDd2QgPSBwcm9jZXNzLmN3ZFxudmFyIGN3ZCA9IG51bGxcblxudmFyIHBsYXRmb3JtID0gcHJvY2Vzcy5lbnYuR1JBQ0VGVUxfRlNfUExBVEZPUk0gfHwgcHJvY2Vzcy5wbGF0Zm9ybVxuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uKCkge1xuICBpZiAoIWN3ZClcbiAgICBjd2QgPSBvcmlnQ3dkLmNhbGwocHJvY2VzcylcbiAgcmV0dXJuIGN3ZFxufVxudHJ5IHtcbiAgcHJvY2Vzcy5jd2QoKVxufSBjYXRjaCAoZXIpIHt9XG5cbi8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIHVudGlsIG5vZGUuanMgMTIgaXMgcmVxdWlyZWRcbmlmICh0eXBlb2YgcHJvY2Vzcy5jaGRpciA9PT0gJ2Z1bmN0aW9uJykge1xuICB2YXIgY2hkaXIgPSBwcm9jZXNzLmNoZGlyXG4gIHByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZCkge1xuICAgIGN3ZCA9IG51bGxcbiAgICBjaGRpci5jYWxsKHByb2Nlc3MsIGQpXG4gIH1cbiAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByb2Nlc3MuY2hkaXIsIGNoZGlyKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoIChmcykge1xuICAvLyAocmUtKWltcGxlbWVudCBzb21lIHRoaW5ncyB0aGF0IGFyZSBrbm93biBidXN0ZWQgb3IgbWlzc2luZy5cblxuICAvLyBsY2htb2QsIGJyb2tlbiBwcmlvciB0byAwLjYuMlxuICAvLyBiYWNrLXBvcnQgdGhlIGZpeCBoZXJlLlxuICBpZiAoY29uc3RhbnRzLmhhc093blByb3BlcnR5KCdPX1NZTUxJTksnKSAmJlxuICAgICAgcHJvY2Vzcy52ZXJzaW9uLm1hdGNoKC9edjBcXC42XFwuWzAtMl18XnYwXFwuNVxcLi8pKSB7XG4gICAgcGF0Y2hMY2htb2QoZnMpXG4gIH1cblxuICAvLyBsdXRpbWVzIGltcGxlbWVudGF0aW9uLCBvciBuby1vcFxuICBpZiAoIWZzLmx1dGltZXMpIHtcbiAgICBwYXRjaEx1dGltZXMoZnMpXG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ3JhY2VmdWwtZnMvaXNzdWVzLzRcbiAgLy8gQ2hvd24gc2hvdWxkIG5vdCBmYWlsIG9uIGVpbnZhbCBvciBlcGVybSBpZiBub24tcm9vdC5cbiAgLy8gSXQgc2hvdWxkIG5vdCBmYWlsIG9uIGVub3N5cyBldmVyLCBhcyB0aGlzIGp1c3QgaW5kaWNhdGVzXG4gIC8vIHRoYXQgYSBmcyBkb2Vzbid0IHN1cHBvcnQgdGhlIGludGVuZGVkIG9wZXJhdGlvbi5cblxuICBmcy5jaG93biA9IGNob3duRml4KGZzLmNob3duKVxuICBmcy5mY2hvd24gPSBjaG93bkZpeChmcy5mY2hvd24pXG4gIGZzLmxjaG93biA9IGNob3duRml4KGZzLmxjaG93bilcblxuICBmcy5jaG1vZCA9IGNobW9kRml4KGZzLmNobW9kKVxuICBmcy5mY2htb2QgPSBjaG1vZEZpeChmcy5mY2htb2QpXG4gIGZzLmxjaG1vZCA9IGNobW9kRml4KGZzLmxjaG1vZClcblxuICBmcy5jaG93blN5bmMgPSBjaG93bkZpeFN5bmMoZnMuY2hvd25TeW5jKVxuICBmcy5mY2hvd25TeW5jID0gY2hvd25GaXhTeW5jKGZzLmZjaG93blN5bmMpXG4gIGZzLmxjaG93blN5bmMgPSBjaG93bkZpeFN5bmMoZnMubGNob3duU3luYylcblxuICBmcy5jaG1vZFN5bmMgPSBjaG1vZEZpeFN5bmMoZnMuY2htb2RTeW5jKVxuICBmcy5mY2htb2RTeW5jID0gY2htb2RGaXhTeW5jKGZzLmZjaG1vZFN5bmMpXG4gIGZzLmxjaG1vZFN5bmMgPSBjaG1vZEZpeFN5bmMoZnMubGNobW9kU3luYylcblxuICBmcy5zdGF0ID0gc3RhdEZpeChmcy5zdGF0KVxuICBmcy5mc3RhdCA9IHN0YXRGaXgoZnMuZnN0YXQpXG4gIGZzLmxzdGF0ID0gc3RhdEZpeChmcy5sc3RhdClcblxuICBmcy5zdGF0U3luYyA9IHN0YXRGaXhTeW5jKGZzLnN0YXRTeW5jKVxuICBmcy5mc3RhdFN5bmMgPSBzdGF0Rml4U3luYyhmcy5mc3RhdFN5bmMpXG4gIGZzLmxzdGF0U3luYyA9IHN0YXRGaXhTeW5jKGZzLmxzdGF0U3luYylcblxuICAvLyBpZiBsY2htb2QvbGNob3duIGRvIG5vdCBleGlzdCwgdGhlbiBtYWtlIHRoZW0gbm8tb3BzXG4gIGlmIChmcy5jaG1vZCAmJiAhZnMubGNobW9kKSB7XG4gICAgZnMubGNobW9kID0gZnVuY3Rpb24gKHBhdGgsIG1vZGUsIGNiKSB7XG4gICAgICBpZiAoY2IpIHByb2Nlc3MubmV4dFRpY2soY2IpXG4gICAgfVxuICAgIGZzLmxjaG1vZFN5bmMgPSBmdW5jdGlvbiAoKSB7fVxuICB9XG4gIGlmIChmcy5jaG93biAmJiAhZnMubGNob3duKSB7XG4gICAgZnMubGNob3duID0gZnVuY3Rpb24gKHBhdGgsIHVpZCwgZ2lkLCBjYikge1xuICAgICAgaWYgKGNiKSBwcm9jZXNzLm5leHRUaWNrKGNiKVxuICAgIH1cbiAgICBmcy5sY2hvd25TeW5jID0gZnVuY3Rpb24gKCkge31cbiAgfVxuXG4gIC8vIG9uIFdpbmRvd3MsIEEvViBzb2Z0d2FyZSBjYW4gbG9jayB0aGUgZGlyZWN0b3J5LCBjYXVzaW5nIHRoaXNcbiAgLy8gdG8gZmFpbCB3aXRoIGFuIEVBQ0NFUyBvciBFUEVSTSBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIG5ld2x5XG4gIC8vIGNyZWF0ZWQgZmlsZXMuICBUcnkgYWdhaW4gb24gZmFpbHVyZSwgZm9yIHVwIHRvIDYwIHNlY29uZHMuXG5cbiAgLy8gU2V0IHRoZSB0aW1lb3V0IHRoaXMgbG9uZyBiZWNhdXNlIHNvbWUgV2luZG93cyBBbnRpLVZpcnVzLCBzdWNoIGFzIFBhcml0eVxuICAvLyBiaXQ5LCBtYXkgbG9jayBmaWxlcyBmb3IgdXAgdG8gYSBtaW51dGUsIGNhdXNpbmcgbnBtIHBhY2thZ2UgaW5zdGFsbFxuICAvLyBmYWlsdXJlcy4gQWxzbywgdGFrZSBjYXJlIHRvIHlpZWxkIHRoZSBzY2hlZHVsZXIuIFdpbmRvd3Mgc2NoZWR1bGluZyBnaXZlc1xuICAvLyBDUFUgdG8gYSBidXN5IGxvb3BpbmcgcHJvY2Vzcywgd2hpY2ggY2FuIGNhdXNlIHRoZSBwcm9ncmFtIGNhdXNpbmcgdGhlIGxvY2tcbiAgLy8gY29udGVudGlvbiB0byBiZSBzdGFydmVkIG9mIENQVSBieSBub2RlLCBzbyB0aGUgY29udGVudGlvbiBkb2Vzbid0IHJlc29sdmUuXG4gIGlmIChwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgZnMucmVuYW1lID0gdHlwZW9mIGZzLnJlbmFtZSAhPT0gJ2Z1bmN0aW9uJyA/IGZzLnJlbmFtZVxuICAgIDogKGZ1bmN0aW9uIChmcyRyZW5hbWUpIHtcbiAgICAgIGZ1bmN0aW9uIHJlbmFtZSAoZnJvbSwgdG8sIGNiKSB7XG4gICAgICAgIHZhciBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgdmFyIGJhY2tvZmYgPSAwO1xuICAgICAgICBmcyRyZW5hbWUoZnJvbSwgdG8sIGZ1bmN0aW9uIENCIChlcikge1xuICAgICAgICAgIGlmIChlclxuICAgICAgICAgICAgICAmJiAoZXIuY29kZSA9PT0gXCJFQUNDRVNcIiB8fCBlci5jb2RlID09PSBcIkVQRVJNXCIgfHwgZXIuY29kZSA9PT0gXCJFQlVTWVwiKVxuICAgICAgICAgICAgICAmJiBEYXRlLm5vdygpIC0gc3RhcnQgPCA2MDAwMCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgZnMuc3RhdCh0bywgZnVuY3Rpb24gKHN0YXRlciwgc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGVyICYmIHN0YXRlci5jb2RlID09PSBcIkVOT0VOVFwiKVxuICAgICAgICAgICAgICAgICAgZnMkcmVuYW1lKGZyb20sIHRvLCBDQik7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgY2IoZXIpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCBiYWNrb2ZmKVxuICAgICAgICAgICAgaWYgKGJhY2tvZmYgPCAxMDApXG4gICAgICAgICAgICAgIGJhY2tvZmYgKz0gMTA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYikgY2IoZXIpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSBPYmplY3Quc2V0UHJvdG90eXBlT2YocmVuYW1lLCBmcyRyZW5hbWUpXG4gICAgICByZXR1cm4gcmVuYW1lXG4gICAgfSkoZnMucmVuYW1lKVxuICB9XG5cbiAgLy8gaWYgcmVhZCgpIHJldHVybnMgRUFHQUlOLCB0aGVuIGp1c3QgdHJ5IGl0IGFnYWluLlxuICBmcy5yZWFkID0gdHlwZW9mIGZzLnJlYWQgIT09ICdmdW5jdGlvbicgPyBmcy5yZWFkXG4gIDogKGZ1bmN0aW9uIChmcyRyZWFkKSB7XG4gICAgZnVuY3Rpb24gcmVhZCAoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYWxsYmFja18pIHtcbiAgICAgIHZhciBjYWxsYmFja1xuICAgICAgaWYgKGNhbGxiYWNrXyAmJiB0eXBlb2YgY2FsbGJhY2tfID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBlYWdDb3VudGVyID0gMFxuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIChlciwgXywgX18pIHtcbiAgICAgICAgICBpZiAoZXIgJiYgZXIuY29kZSA9PT0gJ0VBR0FJTicgJiYgZWFnQ291bnRlciA8IDEwKSB7XG4gICAgICAgICAgICBlYWdDb3VudGVyICsrXG4gICAgICAgICAgICByZXR1cm4gZnMkcmVhZC5jYWxsKGZzLCBmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjYWxsYmFja18uYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZnMkcmVhZC5jYWxsKGZzLCBmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrKVxuICAgIH1cblxuICAgIC8vIFRoaXMgZW5zdXJlcyBgdXRpbC5wcm9taXNpZnlgIHdvcmtzIGFzIGl0IGRvZXMgZm9yIG5hdGl2ZSBgZnMucmVhZGAuXG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlYWQsIGZzJHJlYWQpXG4gICAgcmV0dXJuIHJlYWRcbiAgfSkoZnMucmVhZClcblxuICBmcy5yZWFkU3luYyA9IHR5cGVvZiBmcy5yZWFkU3luYyAhPT0gJ2Z1bmN0aW9uJyA/IGZzLnJlYWRTeW5jXG4gIDogKGZ1bmN0aW9uIChmcyRyZWFkU3luYykgeyByZXR1cm4gZnVuY3Rpb24gKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgIHZhciBlYWdDb3VudGVyID0gMFxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZnMkcmVhZFN5bmMuY2FsbChmcywgZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFQUdBSU4nICYmIGVhZ0NvdW50ZXIgPCAxMCkge1xuICAgICAgICAgIGVhZ0NvdW50ZXIgKytcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVyXG4gICAgICB9XG4gICAgfVxuICB9fSkoZnMucmVhZFN5bmMpXG5cbiAgZnVuY3Rpb24gcGF0Y2hMY2htb2QgKGZzKSB7XG4gICAgZnMubGNobW9kID0gZnVuY3Rpb24gKHBhdGgsIG1vZGUsIGNhbGxiYWNrKSB7XG4gICAgICBmcy5vcGVuKCBwYXRoXG4gICAgICAgICAgICAgLCBjb25zdGFudHMuT19XUk9OTFkgfCBjb25zdGFudHMuT19TWU1MSU5LXG4gICAgICAgICAgICAgLCBtb2RlXG4gICAgICAgICAgICAgLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhlcnIpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJlZmVyIHRvIHJldHVybiB0aGUgY2htb2QgZXJyb3IsIGlmIG9uZSBvY2N1cnMsXG4gICAgICAgIC8vIGJ1dCBzdGlsbCB0cnkgdG8gY2xvc2UsIGFuZCByZXBvcnQgY2xvc2luZyBlcnJvcnMgaWYgdGhleSBvY2N1ci5cbiAgICAgICAgZnMuZmNobW9kKGZkLCBtb2RlLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgZnMuY2xvc2UoZmQsIGZ1bmN0aW9uKGVycjIpIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soZXJyIHx8IGVycjIpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZnMubGNobW9kU3luYyA9IGZ1bmN0aW9uIChwYXRoLCBtb2RlKSB7XG4gICAgICB2YXIgZmQgPSBmcy5vcGVuU3luYyhwYXRoLCBjb25zdGFudHMuT19XUk9OTFkgfCBjb25zdGFudHMuT19TWU1MSU5LLCBtb2RlKVxuXG4gICAgICAvLyBwcmVmZXIgdG8gcmV0dXJuIHRoZSBjaG1vZCBlcnJvciwgaWYgb25lIG9jY3VycyxcbiAgICAgIC8vIGJ1dCBzdGlsbCB0cnkgdG8gY2xvc2UsIGFuZCByZXBvcnQgY2xvc2luZyBlcnJvcnMgaWYgdGhleSBvY2N1ci5cbiAgICAgIHZhciB0aHJldyA9IHRydWVcbiAgICAgIHZhciByZXRcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldCA9IGZzLmZjaG1vZFN5bmMoZmQsIG1vZGUpXG4gICAgICAgIHRocmV3ID0gZmFsc2VcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmICh0aHJldykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICAgICAgfSBjYXRjaCAoZXIpIHt9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnMuY2xvc2VTeW5jKGZkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGF0Y2hMdXRpbWVzIChmcykge1xuICAgIGlmIChjb25zdGFudHMuaGFzT3duUHJvcGVydHkoXCJPX1NZTUxJTktcIikgJiYgZnMuZnV0aW1lcykge1xuICAgICAgZnMubHV0aW1lcyA9IGZ1bmN0aW9uIChwYXRoLCBhdCwgbXQsIGNiKSB7XG4gICAgICAgIGZzLm9wZW4ocGF0aCwgY29uc3RhbnRzLk9fU1lNTElOSywgZnVuY3Rpb24gKGVyLCBmZCkge1xuICAgICAgICAgIGlmIChlcikge1xuICAgICAgICAgICAgaWYgKGNiKSBjYihlcilcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBmcy5mdXRpbWVzKGZkLCBhdCwgbXQsIGZ1bmN0aW9uIChlcikge1xuICAgICAgICAgICAgZnMuY2xvc2UoZmQsIGZ1bmN0aW9uIChlcjIpIHtcbiAgICAgICAgICAgICAgaWYgKGNiKSBjYihlciB8fCBlcjIpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZzLmx1dGltZXNTeW5jID0gZnVuY3Rpb24gKHBhdGgsIGF0LCBtdCkge1xuICAgICAgICB2YXIgZmQgPSBmcy5vcGVuU3luYyhwYXRoLCBjb25zdGFudHMuT19TWU1MSU5LKVxuICAgICAgICB2YXIgcmV0XG4gICAgICAgIHZhciB0aHJldyA9IHRydWVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXQgPSBmcy5mdXRpbWVzU3luYyhmZCwgYXQsIG10KVxuICAgICAgICAgIHRocmV3ID0gZmFsc2VcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodGhyZXcpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGZzLmNsb3NlU3luYyhmZClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVyKSB7fVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoZnMuZnV0aW1lcykge1xuICAgICAgZnMubHV0aW1lcyA9IGZ1bmN0aW9uIChfYSwgX2IsIF9jLCBjYikgeyBpZiAoY2IpIHByb2Nlc3MubmV4dFRpY2soY2IpIH1cbiAgICAgIGZzLmx1dGltZXNTeW5jID0gZnVuY3Rpb24gKCkge31cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaG1vZEZpeCAob3JpZykge1xuICAgIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgbW9kZSwgY2IpIHtcbiAgICAgIHJldHVybiBvcmlnLmNhbGwoZnMsIHRhcmdldCwgbW9kZSwgZnVuY3Rpb24gKGVyKSB7XG4gICAgICAgIGlmIChjaG93bkVyT2soZXIpKSBlciA9IG51bGxcbiAgICAgICAgaWYgKGNiKSBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNobW9kRml4U3luYyAob3JpZykge1xuICAgIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgbW9kZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG9yaWcuY2FsbChmcywgdGFyZ2V0LCBtb2RlKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgaWYgKCFjaG93bkVyT2soZXIpKSB0aHJvdyBlclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgZnVuY3Rpb24gY2hvd25GaXggKG9yaWcpIHtcbiAgICBpZiAoIW9yaWcpIHJldHVybiBvcmlnXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHVpZCwgZ2lkLCBjYikge1xuICAgICAgcmV0dXJuIG9yaWcuY2FsbChmcywgdGFyZ2V0LCB1aWQsIGdpZCwgZnVuY3Rpb24gKGVyKSB7XG4gICAgICAgIGlmIChjaG93bkVyT2soZXIpKSBlciA9IG51bGxcbiAgICAgICAgaWYgKGNiKSBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNob3duRml4U3luYyAob3JpZykge1xuICAgIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdWlkLCBnaWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBvcmlnLmNhbGwoZnMsIHRhcmdldCwgdWlkLCBnaWQpXG4gICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICBpZiAoIWNob3duRXJPayhlcikpIHRocm93IGVyXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhdEZpeCAob3JpZykge1xuICAgIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBOb2RlIGVycm9uZW91c2x5IHJldHVybmVkIHNpZ25lZCBpbnRlZ2VycyBmb3JcbiAgICAvLyB1aWQgKyBnaWQuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIG9wdGlvbnMsIGNiKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2IgPSBvcHRpb25zXG4gICAgICAgIG9wdGlvbnMgPSBudWxsXG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBjYWxsYmFjayAoZXIsIHN0YXRzKSB7XG4gICAgICAgIGlmIChzdGF0cykge1xuICAgICAgICAgIGlmIChzdGF0cy51aWQgPCAwKSBzdGF0cy51aWQgKz0gMHgxMDAwMDAwMDBcbiAgICAgICAgICBpZiAoc3RhdHMuZ2lkIDwgMCkgc3RhdHMuZ2lkICs9IDB4MTAwMDAwMDAwXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNiKSBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9ucyA/IG9yaWcuY2FsbChmcywgdGFyZ2V0LCBvcHRpb25zLCBjYWxsYmFjaylcbiAgICAgICAgOiBvcmlnLmNhbGwoZnMsIHRhcmdldCwgY2FsbGJhY2spXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhdEZpeFN5bmMgKG9yaWcpIHtcbiAgICBpZiAoIW9yaWcpIHJldHVybiBvcmlnXG4gICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgTm9kZSBlcnJvbmVvdXNseSByZXR1cm5lZCBzaWduZWQgaW50ZWdlcnMgZm9yXG4gICAgLy8gdWlkICsgZ2lkLlxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgc3RhdHMgPSBvcHRpb25zID8gb3JpZy5jYWxsKGZzLCB0YXJnZXQsIG9wdGlvbnMpXG4gICAgICAgIDogb3JpZy5jYWxsKGZzLCB0YXJnZXQpXG4gICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgaWYgKHN0YXRzLnVpZCA8IDApIHN0YXRzLnVpZCArPSAweDEwMDAwMDAwMFxuICAgICAgICBpZiAoc3RhdHMuZ2lkIDwgMCkgc3RhdHMuZ2lkICs9IDB4MTAwMDAwMDAwXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdHM7XG4gICAgfVxuICB9XG5cbiAgLy8gRU5PU1lTIG1lYW5zIHRoYXQgdGhlIGZzIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgb3AuIEp1c3QgaWdub3JlXG4gIC8vIHRoYXQsIGJlY2F1c2UgaXQgZG9lc24ndCBtYXR0ZXIuXG4gIC8vXG4gIC8vIGlmIHRoZXJlJ3Mgbm8gZ2V0dWlkLCBvciBpZiBnZXR1aWQoKSBpcyBzb21ldGhpbmcgb3RoZXJcbiAgLy8gdGhhbiAwLCBhbmQgdGhlIGVycm9yIGlzIEVJTlZBTCBvciBFUEVSTSwgdGhlbiBqdXN0IGlnbm9yZVxuICAvLyBpdC5cbiAgLy9cbiAgLy8gVGhpcyBzcGVjaWZpYyBjYXNlIGlzIGEgc2lsZW50IGZhaWx1cmUgaW4gY3AsIGluc3RhbGwsIHRhcixcbiAgLy8gYW5kIG1vc3Qgb3RoZXIgdW5peCB0b29scyB0aGF0IG1hbmFnZSBwZXJtaXNzaW9ucy5cbiAgLy9cbiAgLy8gV2hlbiBydW5uaW5nIGFzIHJvb3QsIG9yIGlmIG90aGVyIHR5cGVzIG9mIGVycm9ycyBhcmVcbiAgLy8gZW5jb3VudGVyZWQsIHRoZW4gaXQncyBzdHJpY3QuXG4gIGZ1bmN0aW9uIGNob3duRXJPayAoZXIpIHtcbiAgICBpZiAoIWVyKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIGlmIChlci5jb2RlID09PSBcIkVOT1NZU1wiKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIHZhciBub25yb290ID0gIXByb2Nlc3MuZ2V0dWlkIHx8IHByb2Nlc3MuZ2V0dWlkKCkgIT09IDBcbiAgICBpZiAobm9ucm9vdCkge1xuICAgICAgaWYgKGVyLmNvZGUgPT09IFwiRUlOVkFMXCIgfHwgZXIuY29kZSA9PT0gXCJFUEVSTVwiKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iLCJ2YXIgd3JhcHB5ID0gcmVxdWlyZSgnd3JhcHB5JylcbnZhciByZXFzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxudmFyIG9uY2UgPSByZXF1aXJlKCdvbmNlJylcblxubW9kdWxlLmV4cG9ydHMgPSB3cmFwcHkoaW5mbGlnaHQpXG5cbmZ1bmN0aW9uIGluZmxpZ2h0IChrZXksIGNiKSB7XG4gIGlmIChyZXFzW2tleV0pIHtcbiAgICByZXFzW2tleV0ucHVzaChjYilcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2Uge1xuICAgIHJlcXNba2V5XSA9IFtjYl1cbiAgICByZXR1cm4gbWFrZXJlcyhrZXkpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZXJlcyAoa2V5KSB7XG4gIHJldHVybiBvbmNlKGZ1bmN0aW9uIFJFUyAoKSB7XG4gICAgdmFyIGNicyA9IHJlcXNba2V5XVxuICAgIHZhciBsZW4gPSBjYnMubGVuZ3RoXG4gICAgdmFyIGFyZ3MgPSBzbGljZShhcmd1bWVudHMpXG5cbiAgICAvLyBYWFggSXQncyBzb21ld2hhdCBhbWJpZ3VvdXMgd2hldGhlciBhIG5ldyBjYWxsYmFjayBhZGRlZCBpbiB0aGlzXG4gICAgLy8gcGFzcyBzaG91bGQgYmUgcXVldWVkIGZvciBsYXRlciBleGVjdXRpb24gaWYgc29tZXRoaW5nIGluIHRoZVxuICAgIC8vIGxpc3Qgb2YgY2FsbGJhY2tzIHRocm93cywgb3IgaWYgaXQgc2hvdWxkIGp1c3QgYmUgZGlzY2FyZGVkLlxuICAgIC8vIEhvd2V2ZXIsIGl0J3Mgc3VjaCBhbiBlZGdlIGNhc2UgdGhhdCBpdCBoYXJkbHkgbWF0dGVycywgYW5kIGVpdGhlclxuICAgIC8vIGNob2ljZSBpcyBsaWtlbHkgYXMgc3VycHJpc2luZyBhcyB0aGUgb3RoZXIuXG4gICAgLy8gQXMgaXQgaGFwcGVucywgd2UgZG8gZ28gYWhlYWQgYW5kIHNjaGVkdWxlIGl0IGZvciBsYXRlciBleGVjdXRpb24uXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY2JzW2ldLmFwcGx5KG51bGwsIGFyZ3MpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChjYnMubGVuZ3RoID4gbGVuKSB7XG4gICAgICAgIC8vIGFkZGVkIG1vcmUgaW4gdGhlIGludGVyaW0uXG4gICAgICAgIC8vIGRlLXphbGdvLCBqdXN0IGluIGNhc2UsIGJ1dCBkb24ndCBjYWxsIGFnYWluLlxuICAgICAgICBjYnMuc3BsaWNlKDAsIGxlbilcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgUkVTLmFwcGx5KG51bGwsIGFyZ3MpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgcmVxc1trZXldXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBzbGljZSAoYXJncykge1xuICB2YXIgbGVuZ3RoID0gYXJncy5sZW5ndGhcbiAgdmFyIGFycmF5ID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IGFyZ3NbaV1cbiAgcmV0dXJuIGFycmF5XG59XG4iLCJ0cnkge1xuICB2YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHR5cGVvZiB1dGlsLmluaGVyaXRzICE9PSAnZnVuY3Rpb24nKSB0aHJvdyAnJztcbiAgbW9kdWxlLmV4cG9ydHMgPSB1dGlsLmluaGVyaXRzO1xufSBjYXRjaCAoZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaW5oZXJpdHNfYnJvd3Nlci5qcycpO1xufVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgaWYgKHN1cGVyQ3Rvcikge1xuICAgICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICAgIH1cbiAgfVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJ2YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBQYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgUmVhZGFibGU6IFJlYWRhYmxlLFxuICBXcml0YWJsZTogV3JpdGFibGVcbn07XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFBhc3NUaHJvdWdoKTtcbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFBhc3NUaHJvdWdoKTtcblxuLy8gUGF0Y2ggdGhlIGdpdmVuIG1ldGhvZCBvZiBpbnN0YW5jZSBzbyB0aGF0IHRoZSBjYWxsYmFja1xuLy8gaXMgZXhlY3V0ZWQgb25jZSwgYmVmb3JlIHRoZSBhY3R1YWwgbWV0aG9kIGlzIGNhbGxlZCB0aGVcbi8vIGZpcnN0IHRpbWUuXG5mdW5jdGlvbiBiZWZvcmVGaXJzdENhbGwoaW5zdGFuY2UsIG1ldGhvZCwgY2FsbGJhY2spIHtcbiAgaW5zdGFuY2VbbWV0aG9kXSA9IGZ1bmN0aW9uKCkge1xuICAgIGRlbGV0ZSBpbnN0YW5jZVttZXRob2RdO1xuICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHRoaXNbbWV0aG9kXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBSZWFkYWJsZShmbiwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKVxuICAgIHJldHVybiBuZXcgUmVhZGFibGUoZm4sIG9wdGlvbnMpO1xuXG4gIFBhc3NUaHJvdWdoLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgYmVmb3JlRmlyc3RDYWxsKHRoaXMsICdfcmVhZCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzb3VyY2UgPSBmbi5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHZhciBlbWl0ID0gdGhpcy5lbWl0LmJpbmQodGhpcywgJ2Vycm9yJyk7XG4gICAgc291cmNlLm9uKCdlcnJvcicsIGVtaXQpO1xuICAgIHNvdXJjZS5waXBlKHRoaXMpO1xuICB9KTtcblxuICB0aGlzLmVtaXQoJ3JlYWRhYmxlJyk7XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKGZuLCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBXcml0YWJsZSkpXG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZShmbiwgb3B0aW9ucyk7XG5cbiAgUGFzc1Rocm91Z2guY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBiZWZvcmVGaXJzdENhbGwodGhpcywgJ193cml0ZScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkZXN0aW5hdGlvbiA9IGZuLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdmFyIGVtaXQgPSB0aGlzLmVtaXQuYmluZCh0aGlzLCAnZXJyb3InKTtcbiAgICBkZXN0aW5hdGlvbi5vbignZXJyb3InLCBlbWl0KTtcbiAgICB0aGlzLnBpcGUoZGVzdGluYXRpb24pO1xuICB9KTtcblxuICB0aGlzLmVtaXQoJ3dyaXRhYmxlJyk7XG59XG5cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnV0aWwuaW5oZXJpdHMoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gYXZvaWQgc2NvcGUgY3JlZXAsIHRoZSBrZXlzIGFycmF5IGNhbiB0aGVuIGJlIGNvbGxlY3RlZFxuICB2YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcblxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIG9uZW5kKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcG5hLm5leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgdGhpcy5lbmQoKTtcblxuICBwbmEubmV4dFRpY2soY2IsIGVycik7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge30pLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IE9iamVjdC5jcmVhdGUocmVxdWlyZSgnY29yZS11dGlsLWlzJykpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgZGVidWcgPSB2b2lkIDA7XG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uICgpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXJMaXN0ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QnKTtcbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGtQcm94eUV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyKGV2ZW50LCBmbik7XG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xufVxuXG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgcmVhZGFibGVId20gPSBvcHRpb25zLnJlYWRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmIChyZWFkYWJsZUh3bSB8fCByZWFkYWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHJlYWRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZFxuICAvLyBpbW1lZGlhdGVseSwgb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZVxuICAvLyBhbnkgYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3QgcmVhZCBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcbiAgdGhpcy5hd2FpdERyYWluID0gMDtcblxuICAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcblxuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5wdXNoKG51bGwpO1xuICBjYihlcnIpO1xufTtcblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cbiAgICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIGVuY29kaW5nLCBmYWxzZSwgc2tpcENodW5rQ2hlY2spO1xufTtcblxuLy8gVW5zaGlmdCBzaG91bGQgKmFsd2F5cyogYmUgc29tZXRoaW5nIGRpcmVjdGx5IG91dCBvZiByZWFkKClcblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuICAgIGlmIChlcikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50JykpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG4vLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKTtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IGVuYztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CXG52YXIgTUFYX0hXTSA9IDB4ODAwMDAwO1xuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47XG4gIC8vIERvbid0IGhhdmUgZW5vdWdoXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzdGF0ZS5sZW5ndGg7XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGEgYnVuY2ggb2YgZGF0YSBpbiB0aGUgYnVmZmVyLCB0aGVuIGp1c3QgdHJpZ2dlclxuICAvLyB0aGUgJ3JlYWRhYmxlJyBldmVudCBhbmQgbW92ZSBvbi5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBkZWJ1ZygncmVhZDogZW1pdFJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7ZWxzZSBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7XG5cbiAgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkge1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIGVuZFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cblxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG4gIHZhciBkb1JlYWQgPSBzdGF0ZS5uZWVkUmVhZGFibGU7XG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKTtcblxuICAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWU7XG4gICAgZGVidWcoJ2xlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrJywgZG9SZWFkKTtcbiAgfVxuXG4gIC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgICAvLyBpZiB0aGUgbGVuZ3RoIGlzIGN1cnJlbnRseSB6ZXJvLCB0aGVuIHdlICpuZWVkKiBhIHJlYWRhYmxlIGV2ZW50LlxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG4gICAgc3RhdGUuc3luYyA9IGZhbHNlO1xuICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cbiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO1xuICB9XG5cbiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTtcblxuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwbmEubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHBuYS5uZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUsIHVucGlwZUluZm8pIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHVucGlwZUluZm8gPSB7IGhhc1VucGlwZWQ6IGZhbHNlIH07XG5cbiAgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7XG5cbiAgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzO1xuXG4gICAgLy8gZ290IGEgbWF0Y2guXG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICBpZiAoZGVzdCkgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHNsb3cgY2FzZS4gbXVsdGlwbGUgcGlwZSBkZXN0aW5hdGlvbnMuXG5cbiAgaWYgKCFkZXN0KSB7XG4gICAgLy8gcmVtb3ZlIGFsbC5cbiAgICB2YXIgZGVzdHMgPSBzdGF0ZS5waXBlcztcbiAgICB2YXIgbGVuID0gc3RhdGUucGlwZXNDb3VudDtcbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdHNbaV0uZW1pdCgndW5waXBlJywgdGhpcywgeyBoYXNVbnBpcGVkOiBmYWxzZSB9KTtcbiAgICB9cmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG5cbiAgc3RhdGUucGlwZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3RhdGUucGlwZXNDb3VudCAtPSAxO1xuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTtcblxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldiwgZm4pO1xuXG4gIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgLy8gU3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHRoaXMucmVzdW1lKCk7XG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgX3RoaXMucHVzaChjaHVuayk7XG4gICAgfVxuXG4gICAgX3RoaXMucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH1cblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICB0aGlzLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gT2JqZWN0LmNyZWF0ZShyZXF1aXJlKCdjb3JlLXV0aWwtaXMnKSk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qIDxyZXBsYWNlbWVudD4gKi9cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcG5hLm5leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fSkuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBpZiBfZmluYWwgaGFzIGJlZW4gY2FsbGVkXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTtcblxuICAvLyBkcmFpbiBldmVudCBmbGFnLlxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTtcblxuLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgaWYgKHJlYWxIYXNJbnN0YW5jZS5jYWxsKHRoaXMsIG9iamVjdCkpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHRoaXMgIT09IFdyaXRhYmxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHtcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB9XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmluYWwgPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZpbmFsID0gb3B0aW9ucy5maW5hbDtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHBuYS5uZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBjYikge1xuICB2YXIgdmFsaWQgPSB0cnVlO1xuICB2YXIgZXIgPSBmYWxzZTtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcblxuICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcDtcblxuICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcblxuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcbiAgICBwbmEubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY2FsbGVyIGV4cGVjdCB0aGlzIHRvIGhhcHBlbiBiZWZvcmUgaWZcbiAgICAvLyBpdCBpcyBhc3luY1xuICAgIGNiKGVyKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdFxuICAgIC8vIGFsd2F5cyBmb2xsb3cgZXJyb3JcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcblxuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuXG4gIGlmIChlcikgb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYik7ZWxzZSB7XG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXRcbiAgICB2YXIgZmluaXNoZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICAvKjxyZXBsYWNlbWVudD4qL1xuICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgICAgLyo8L3JlcGxhY2VtZW50PiovXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07XG4gICAgICAvLyBpZiB3ZSBkaWRuJ3QgY2FsbCB0aGUgb253cml0ZSBpbW1lZGlhdGVseSwgdGhlblxuICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy5cbiAgICAgIC8vIGFsc28sIHRoYXQgbWVhbnMgdGhhdCB0aGUgY2h1bmsgYW5kIGNiIGFyZSBjdXJyZW50bHlcbiAgICAgIC8vIGJlaW5nIHByb2Nlc3NlZCwgc28gbW92ZSB0aGUgYnVmZmVyIGNvdW50ZXIgcGFzdCB0aGVtLlxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ193cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH1cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICAgIHN0YXRlLmZpbmFsQ2FsbGVkID0gdHJ1ZTtcbiAgICAgIHBuYS5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcG5hLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cblxuICAvLyByZXVzZSB0aGUgZnJlZSBjb3JrUmVxLlxuICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5lbmQoKTtcbiAgY2IoZXJyKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIHNyYy5jb3B5KHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gdW5zaGlmdCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgLS10aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgfXJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgcCA9IHAubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICByZXR1cm4gQnVmZmVyTGlzdDtcbn0oKTtcblxuaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHtcbiAgbW9kdWxlLmV4cG9ydHMucHJvdG90eXBlW3V0aWwuaW5zcGVjdC5jdXN0b21dID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSB1dGlsLmluc3BlY3QoeyBsZW5ndGg6IHRoaXMubGVuZ3RoIH0pO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vLyB1bmRvY3VtZW50ZWQgY2IoKSBBUEksIG5lZWRlZCBmb3IgY29yZSwgbm90IGZvciBwdWJsaWMgQVBJXG5mdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB2YXIgd3JpdGFibGVEZXN0cm95ZWQgPSB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuXG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCB0aGlzLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgaWYgKCFfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgX3RoaXMsIGVycik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgc2VsZi5lbWl0KCdlcnJvcicsIGVycik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZXN0cm95OiBkZXN0cm95LFxuICB1bmRlc3Ryb3k6IHVuZGVzdHJveVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3JlYWRhYmxlJykuUGFzc1Rocm91Z2hcbiIsInZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKTtcbmlmIChwcm9jZXNzLmVudi5SRUFEQUJMRV9TVFJFQU0gPT09ICdkaXNhYmxlJyAmJiBTdHJlYW0pIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG4gIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbS5SZWFkYWJsZTtcbiAgZXhwb3J0cy5SZWFkYWJsZSA9IFN0cmVhbS5SZWFkYWJsZTtcbiAgZXhwb3J0cy5Xcml0YWJsZSA9IFN0cmVhbS5Xcml0YWJsZTtcbiAgZXhwb3J0cy5EdXBsZXggPSBTdHJlYW0uRHVwbGV4O1xuICBleHBvcnRzLlRyYW5zZm9ybSA9IFN0cmVhbS5UcmFuc2Zvcm07XG4gIGV4cG9ydHMuUGFzc1Rocm91Z2ggPSBTdHJlYW0uUGFzc1Rocm91Z2g7XG4gIGV4cG9ydHMuU3RyZWFtID0gU3RyZWFtO1xufSBlbHNlIHtcbiAgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuICBleHBvcnRzLlN0cmVhbSA9IFN0cmVhbSB8fCBleHBvcnRzO1xuICBleHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbiAgZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbiAgZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuICBleHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG4gIGV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gIC8vIFNhZmFyaSA4LjEgbWFrZXMgYGFyZ3VtZW50cy5jYWxsZWVgIGVudW1lcmFibGUgaW4gc3RyaWN0IG1vZGUuXG4gIC8vIFNhZmFyaSA5IG1ha2VzIGBhcmd1bWVudHMubGVuZ3RoYCBlbnVtZXJhYmxlIGluIHN0cmljdCBtb2RlLlxuICB2YXIgcmVzdWx0ID0gKGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSlcbiAgICA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZylcbiAgICA6IFtdO1xuXG4gIHZhciBsZW5ndGggPSByZXN1bHQubGVuZ3RoLFxuICAgICAgc2tpcEluZGV4ZXMgPSAhIWxlbmd0aDtcblxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChrZXkgPT0gJ2xlbmd0aCcgfHwgaXNJbmRleChrZXksIGxlbmd0aCkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25JbkRlZmF1bHRzKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqVmFsdWU7XG59XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gYXJyYXk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkID8gc291cmNlW2tleV0gOiBuZXdWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8IHJlSXNVaW50LnRlc3QodmFsdWUpKSAmJlxuICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcbiAgLy8gU2FmYXJpIDguMSBtYWtlcyBgYXJndW1lbnRzLmNhbGxlZWAgZW51bWVyYWJsZSBpbiBzdHJpY3QgbW9kZS5cbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAoIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKSB8fCBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBhcmdzVGFnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOC05IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5IGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBpc09iamVjdCh2YWx1ZSkgPyBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gKiB9XG4gKlxuICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xufSk7XG5cbi8qKlxuICogQXNzaWducyBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gKiBPbmNlIGEgcHJvcGVydHkgaXMgc2V0LCBhZGRpdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2FtZSBwcm9wZXJ0eSBhcmUgaWdub3JlZC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xudmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICBhcmdzLnB1c2godW5kZWZpbmVkLCBhc3NpZ25JbkRlZmF1bHRzKTtcbiAgcmV0dXJuIGFwcGx5KGFzc2lnbkluV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IDA7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPyBhcnJheS5sZW5ndGggOiAwLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgaWYgKHZhbHVlICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QgaW4gSUUgPCA5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNIb3N0T2JqZWN0KHZhbHVlKSB7XG4gIC8vIE1hbnkgaG9zdCBvYmplY3RzIGFyZSBgT2JqZWN0YCBvYmplY3RzIHRoYXQgY2FuIGNvZXJjZSB0byBzdHJpbmdzXG4gIC8vIGRlc3BpdGUgaGF2aW5nIGltcHJvcGVybHkgZGVmaW5lZCBgdG9TdHJpbmdgIG1ldGhvZHMuXG4gIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gISEodmFsdWUgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbCxcbiAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpLFxuICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICByZXR1cm4gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA/IGVudHJpZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA/IHZhbHVlcy5sZW5ndGggOiAwO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZGlmZmVyZW5jZWAgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoaXRlcmF0ZWUpIHtcbiAgICB2YWx1ZXMgPSBhcnJheU1hcCh2YWx1ZXMsIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICB9XG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICB9XG4gIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB2YWx1ZXMgPSBuZXcgU2V0Q2FjaGUodmFsdWVzKTtcbiAgfVxuICBvdXRlcjpcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gKGlzRnVuY3Rpb24odmFsdWUpIHx8IGlzSG9zdE9iamVjdCh2YWx1ZSkpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSBhcnJheTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBgYXJyYXlgIHZhbHVlcyBub3QgaW5jbHVkZWQgaW4gdGhlIG90aGVyIGdpdmVuIGFycmF5c1xuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGVcbiAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGZpcnN0IGFycmF5LlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBzZWUgXy53aXRob3V0LCBfLnhvclxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRpZmZlcmVuY2UoWzIsIDFdLCBbMiwgM10pO1xuICogLy8gPT4gWzFdXG4gKi9cbnZhciBkaWZmZXJlbmNlID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgOiBbXTtcbn0pO1xuXG4vKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcbiAgLy8gU2FmYXJpIDguMSBtYWtlcyBgYXJndW1lbnRzLmNhbGxlZWAgZW51bWVyYWJsZSBpbiBzdHJpY3QgbW9kZS5cbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAoIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKSB8fCBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBhcmdzVGFnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOC05IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5IGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBpc09iamVjdCh2YWx1ZSkgPyBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmZXJlbmNlO1xuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2wsXG4gICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IDA7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcbiAgLy8gU2FmYXJpIDguMSBtYWtlcyBgYXJndW1lbnRzLmNhbGxlZWAgZW51bWVyYWJsZSBpbiBzdHJpY3QgbW9kZS5cbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAoIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKSB8fCBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBhcmdzVGFnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOC05IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5IGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBpc09iamVjdCh2YWx1ZSkgPyBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuO1xuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0IGluIElFIDwgOS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSG9zdE9iamVjdCh2YWx1ZSkge1xuICAvLyBNYW55IGhvc3Qgb2JqZWN0cyBhcmUgYE9iamVjdGAgb2JqZWN0cyB0aGF0IGNhbiBjb2VyY2UgdG8gc3RyaW5nc1xuICAvLyBkZXNwaXRlIGhhdmluZyBpbXByb3Blcmx5IGRlZmluZWQgYHRvU3RyaW5nYCBtZXRob2RzLlxuICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gIGlmICh2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9ICEhKHZhbHVlICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8XG4gICAgICBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSAhPSBvYmplY3RUYWcgfHwgaXNIb3N0T2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiZcbiAgICBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJiBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPyBhcnJheS5sZW5ndGggOiAwO1xuICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IDA7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgaWYgKHZhbHVlICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0IGluIElFIDwgOS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSG9zdE9iamVjdCh2YWx1ZSkge1xuICAvLyBNYW55IGhvc3Qgb2JqZWN0cyBhcmUgYE9iamVjdGAgb2JqZWN0cyB0aGF0IGNhbiBjb2VyY2UgdG8gc3RyaW5nc1xuICAvLyBkZXNwaXRlIGhhdmluZyBpbXByb3Blcmx5IGRlZmluZWQgYHRvU3RyaW5nYCBtZXRob2RzLlxuICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gIGlmICh2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9ICEhKHZhbHVlICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2wsXG4gICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgICBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZSxcbiAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKSxcbiAgICBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpLFxuICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICByZXR1cm4gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA/IGVudHJpZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA/IHZhbHVlcy5sZW5ndGggOiAwO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IChpc0Z1bmN0aW9uKHZhbHVlKSB8fCBpc0hvc3RPYmplY3QodmFsdWUpKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gYXJyYXk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIC8vIFNhZmFyaSA4LjEgbWFrZXMgYGFyZ3VtZW50cy5jYWxsZWVgIGVudW1lcmFibGUgaW4gc3RyaWN0IG1vZGUuXG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgfHwgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gYXJnc1RhZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDgtOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gaXNPYmplY3QodmFsdWUpID8gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pb247XG4iLCJjb25zdCBpc1dpbmRvd3MgPSB0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgcHJvY2VzcyAmJlxuICBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInXG5tb2R1bGUuZXhwb3J0cyA9IGlzV2luZG93cyA/IHsgc2VwOiAnXFxcXCcgfSA6IHsgc2VwOiAnLycgfVxuIiwiY29uc3QgbWluaW1hdGNoID0gbW9kdWxlLmV4cG9ydHMgPSAocCwgcGF0dGVybiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGFzc2VydFZhbGlkUGF0dGVybihwYXR0ZXJuKVxuXG4gIC8vIHNob3J0Y3V0OiBjb21tZW50cyBtYXRjaCBub3RoaW5nLlxuICBpZiAoIW9wdGlvbnMubm9jb21tZW50ICYmIHBhdHRlcm4uY2hhckF0KDApID09PSAnIycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBuZXcgTWluaW1hdGNoKHBhdHRlcm4sIG9wdGlvbnMpLm1hdGNoKHApXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWluaW1hdGNoXG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCcuL2xpYi9wYXRoLmpzJylcbm1pbmltYXRjaC5zZXAgPSBwYXRoLnNlcFxuXG5jb25zdCBHTE9CU1RBUiA9IFN5bWJvbCgnZ2xvYnN0YXIgKionKVxubWluaW1hdGNoLkdMT0JTVEFSID0gR0xPQlNUQVJcbmNvbnN0IGV4cGFuZCA9IHJlcXVpcmUoJ2JyYWNlLWV4cGFuc2lvbicpXG5cbmNvbnN0IHBsVHlwZXMgPSB7XG4gICchJzogeyBvcGVuOiAnKD86KD8hKD86JywgY2xvc2U6ICcpKVteL10qPyknfSxcbiAgJz8nOiB7IG9wZW46ICcoPzonLCBjbG9zZTogJyk/JyB9LFxuICAnKyc6IHsgb3BlbjogJyg/OicsIGNsb3NlOiAnKSsnIH0sXG4gICcqJzogeyBvcGVuOiAnKD86JywgY2xvc2U6ICcpKicgfSxcbiAgJ0AnOiB7IG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbn1cblxuLy8gYW55IHNpbmdsZSB0aGluZyBvdGhlciB0aGFuIC9cbi8vIGRvbid0IG5lZWQgdG8gZXNjYXBlIC8gd2hlbiB1c2luZyBuZXcgUmVnRXhwKClcbmNvbnN0IHFtYXJrID0gJ1teL10nXG5cbi8vICogPT4gYW55IG51bWJlciBvZiBjaGFyYWN0ZXJzXG5jb25zdCBzdGFyID0gcW1hcmsgKyAnKj8nXG5cbi8vICoqIHdoZW4gZG90cyBhcmUgYWxsb3dlZC4gIEFueXRoaW5nIGdvZXMsIGV4Y2VwdCAuLiBhbmQgLlxuLy8gbm90ICheIG9yIC8gZm9sbG93ZWQgYnkgb25lIG9yIHR3byBkb3RzIGZvbGxvd2VkIGJ5ICQgb3IgLyksXG4vLyBmb2xsb3dlZCBieSBhbnl0aGluZywgYW55IG51bWJlciBvZiB0aW1lcy5cbmNvbnN0IHR3b1N0YXJEb3QgPSAnKD86KD8hKD86XFxcXFxcL3xeKSg/OlxcXFwuezEsMn0pKCR8XFxcXFxcLykpLikqPydcblxuLy8gbm90IGEgXiBvciAvIGZvbGxvd2VkIGJ5IGEgZG90LFxuLy8gZm9sbG93ZWQgYnkgYW55dGhpbmcsIGFueSBudW1iZXIgb2YgdGltZXMuXG5jb25zdCB0d29TdGFyTm9Eb3QgPSAnKD86KD8hKD86XFxcXFxcL3xeKVxcXFwuKS4pKj8nXG5cbi8vIFwiYWJjXCIgLT4geyBhOnRydWUsIGI6dHJ1ZSwgYzp0cnVlIH1cbmNvbnN0IGNoYXJTZXQgPSBzID0+IHMuc3BsaXQoJycpLnJlZHVjZSgoc2V0LCBjKSA9PiB7XG4gIHNldFtjXSA9IHRydWVcbiAgcmV0dXJuIHNldFxufSwge30pXG5cbi8vIGNoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVzY2FwZWQgaW4gUmVnRXhwLlxuY29uc3QgcmVTcGVjaWFscyA9IGNoYXJTZXQoJygpLip7fSs/W11eJFxcXFwhJylcblxuLy8gY2hhcmFjdGVycyB0aGF0IGluZGljYXRlIHdlIGhhdmUgdG8gYWRkIHRoZSBwYXR0ZXJuIHN0YXJ0XG5jb25zdCBhZGRQYXR0ZXJuU3RhcnRTZXQgPSBjaGFyU2V0KCdbLignKVxuXG4vLyBub3JtYWxpemVzIHNsYXNoZXMuXG5jb25zdCBzbGFzaFNwbGl0ID0gL1xcLysvXG5cbm1pbmltYXRjaC5maWx0ZXIgPSAocGF0dGVybiwgb3B0aW9ucyA9IHt9KSA9PlxuICAocCwgaSwgbGlzdCkgPT4gbWluaW1hdGNoKHAsIHBhdHRlcm4sIG9wdGlvbnMpXG5cbmNvbnN0IGV4dCA9IChhLCBiID0ge30pID0+IHtcbiAgY29uc3QgdCA9IHt9XG4gIE9iamVjdC5rZXlzKGEpLmZvckVhY2goayA9PiB0W2tdID0gYVtrXSlcbiAgT2JqZWN0LmtleXMoYikuZm9yRWFjaChrID0+IHRba10gPSBiW2tdKVxuICByZXR1cm4gdFxufVxuXG5taW5pbWF0Y2guZGVmYXVsdHMgPSBkZWYgPT4ge1xuICBpZiAoIWRlZiB8fCB0eXBlb2YgZGVmICE9PSAnb2JqZWN0JyB8fCAhT2JqZWN0LmtleXMoZGVmKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWluaW1hdGNoXG4gIH1cblxuICBjb25zdCBvcmlnID0gbWluaW1hdGNoXG5cbiAgY29uc3QgbSA9IChwLCBwYXR0ZXJuLCBvcHRpb25zKSA9PiBvcmlnKHAsIHBhdHRlcm4sIGV4dChkZWYsIG9wdGlvbnMpKVxuICBtLk1pbmltYXRjaCA9IGNsYXNzIE1pbmltYXRjaCBleHRlbmRzIG9yaWcuTWluaW1hdGNoIHtcbiAgICBjb25zdHJ1Y3RvciAocGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgc3VwZXIocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpXG4gICAgfVxuICB9XG4gIG0uTWluaW1hdGNoLmRlZmF1bHRzID0gb3B0aW9ucyA9PiBvcmlnLmRlZmF1bHRzKGV4dChkZWYsIG9wdGlvbnMpKS5NaW5pbWF0Y2hcbiAgbS5maWx0ZXIgPSAocGF0dGVybiwgb3B0aW9ucykgPT4gb3JpZy5maWx0ZXIocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpXG4gIG0uZGVmYXVsdHMgPSBvcHRpb25zID0+IG9yaWcuZGVmYXVsdHMoZXh0KGRlZiwgb3B0aW9ucykpXG4gIG0ubWFrZVJlID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IG9yaWcubWFrZVJlKHBhdHRlcm4sIGV4dChkZWYsIG9wdGlvbnMpKVxuICBtLmJyYWNlRXhwYW5kID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IG9yaWcuYnJhY2VFeHBhbmQocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpXG4gIG0ubWF0Y2ggPSAobGlzdCwgcGF0dGVybiwgb3B0aW9ucykgPT4gb3JpZy5tYXRjaChsaXN0LCBwYXR0ZXJuLCBleHQoZGVmLCBvcHRpb25zKSlcblxuICByZXR1cm4gbVxufVxuXG5cblxuXG5cbi8vIEJyYWNlIGV4cGFuc2lvbjpcbi8vIGF7YixjfWQgLT4gYWJkIGFjZFxuLy8gYXtiLH1jIC0+IGFiYyBhY1xuLy8gYXswLi4zfWQgLT4gYTBkIGExZCBhMmQgYTNkXG4vLyBhe2IsY3tkLGV9Zn1nIC0+IGFiZyBhY2RmZyBhY2VmZ1xuLy8gYXtiLGN9ZHtlLGZ9ZyAtPiBhYmRlZyBhY2RlZyBhYmRlZyBhYmRmZ1xuLy9cbi8vIEludmFsaWQgc2V0cyBhcmUgbm90IGV4cGFuZGVkLlxuLy8gYXsyLi59YiAtPiBhezIuLn1iXG4vLyBhe2J9YyAtPiBhe2J9Y1xubWluaW1hdGNoLmJyYWNlRXhwYW5kID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IGJyYWNlRXhwYW5kKHBhdHRlcm4sIG9wdGlvbnMpXG5cbmNvbnN0IGJyYWNlRXhwYW5kID0gKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBhc3NlcnRWYWxpZFBhdHRlcm4ocGF0dGVybilcblxuICAvLyBUaGFua3MgdG8gWWV0aW5nIExpIDxodHRwczovL2dpdGh1Yi5jb20veWV0aW5nbGk+IGZvclxuICAvLyBpbXByb3ZpbmcgdGhpcyByZWdleHAgdG8gYXZvaWQgYSBSZURPUyB2dWxuZXJhYmlsaXR5LlxuICBpZiAob3B0aW9ucy5ub2JyYWNlIHx8ICEvXFx7KD86KD8hXFx7KS4pKlxcfS8udGVzdChwYXR0ZXJuKSkge1xuICAgIC8vIHNob3J0Y3V0LiBubyBuZWVkIHRvIGV4cGFuZC5cbiAgICByZXR1cm4gW3BhdHRlcm5dXG4gIH1cblxuICByZXR1cm4gZXhwYW5kKHBhdHRlcm4pXG59XG5cbmNvbnN0IE1BWF9QQVRURVJOX0xFTkdUSCA9IDEwMjQgKiA2NFxuY29uc3QgYXNzZXJ0VmFsaWRQYXR0ZXJuID0gcGF0dGVybiA9PiB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhdHRlcm4nKVxuICB9XG5cbiAgaWYgKHBhdHRlcm4ubGVuZ3RoID4gTUFYX1BBVFRFUk5fTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGF0dGVybiBpcyB0b28gbG9uZycpXG4gIH1cbn1cblxuLy8gcGFyc2UgYSBjb21wb25lbnQgb2YgdGhlIGV4cGFuZGVkIHNldC5cbi8vIEF0IHRoaXMgcG9pbnQsIG5vIHBhdHRlcm4gbWF5IGNvbnRhaW4gXCIvXCIgaW4gaXRcbi8vIHNvIHdlJ3JlIGdvaW5nIHRvIHJldHVybiBhIDJkIGFycmF5LCB3aGVyZSBlYWNoIGVudHJ5IGlzIHRoZSBmdWxsXG4vLyBwYXR0ZXJuLCBzcGxpdCBvbiAnLycsIGFuZCB0aGVuIHR1cm5lZCBpbnRvIGEgcmVndWxhciBleHByZXNzaW9uLlxuLy8gQSByZWdleHAgaXMgbWFkZSBhdCB0aGUgZW5kIHdoaWNoIGpvaW5zIGVhY2ggYXJyYXkgd2l0aCBhblxuLy8gZXNjYXBlZCAvLCBhbmQgYW5vdGhlciBmdWxsIG9uZSB3aGljaCBqb2lucyBlYWNoIHJlZ2V4cCB3aXRoIHwuXG4vL1xuLy8gRm9sbG93aW5nIHRoZSBsZWFkIG9mIEJhc2ggNC4xLCBub3RlIHRoYXQgXCIqKlwiIG9ubHkgaGFzIHNwZWNpYWwgbWVhbmluZ1xuLy8gd2hlbiBpdCBpcyB0aGUgKm9ubHkqIHRoaW5nIGluIGEgcGF0aCBwb3J0aW9uLiAgT3RoZXJ3aXNlLCBhbnkgc2VyaWVzXG4vLyBvZiAqIGlzIGVxdWl2YWxlbnQgdG8gYSBzaW5nbGUgKi4gIEdsb2JzdGFyIGJlaGF2aW9yIGlzIGVuYWJsZWQgYnlcbi8vIGRlZmF1bHQsIGFuZCBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBvcHRpb25zLm5vZ2xvYnN0YXIuXG5jb25zdCBTVUJQQVJTRSA9IFN5bWJvbCgnc3VicGFyc2UnKVxuXG5taW5pbWF0Y2gubWFrZVJlID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+XG4gIG5ldyBNaW5pbWF0Y2gocGF0dGVybiwgb3B0aW9ucyB8fCB7fSkubWFrZVJlKClcblxubWluaW1hdGNoLm1hdGNoID0gKGxpc3QsIHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBtbSA9IG5ldyBNaW5pbWF0Y2gocGF0dGVybiwgb3B0aW9ucylcbiAgbGlzdCA9IGxpc3QuZmlsdGVyKGYgPT4gbW0ubWF0Y2goZikpXG4gIGlmIChtbS5vcHRpb25zLm5vbnVsbCAmJiAhbGlzdC5sZW5ndGgpIHtcbiAgICBsaXN0LnB1c2gocGF0dGVybilcbiAgfVxuICByZXR1cm4gbGlzdFxufVxuXG4vLyByZXBsYWNlIHN0dWZmIGxpa2UgXFwqIHdpdGggKlxuY29uc3QgZ2xvYlVuZXNjYXBlID0gcyA9PiBzLnJlcGxhY2UoL1xcXFwoLikvZywgJyQxJylcbmNvbnN0IGNoYXJVbmVzY2FwZSA9IHMgPT4gcy5yZXBsYWNlKC9cXFxcKFteLVxcXV0pL2csICckMScpXG5jb25zdCByZWdFeHBFc2NhcGUgPSBzID0+IHMucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csICdcXFxcJCYnKVxuY29uc3QgYnJhRXhwRXNjYXBlID0gcyA9PiBzLnJlcGxhY2UoL1tbXFxdXFxcXF0vZywgJ1xcXFwkJicpXG5cbmNsYXNzIE1pbmltYXRjaCB7XG4gIGNvbnN0cnVjdG9yIChwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgYXNzZXJ0VmFsaWRQYXR0ZXJuKHBhdHRlcm4pXG5cbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fVxuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMuc2V0ID0gW11cbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuXG4gICAgdGhpcy53aW5kb3dzUGF0aHNOb0VzY2FwZSA9ICEhb3B0aW9ucy53aW5kb3dzUGF0aHNOb0VzY2FwZSB8fFxuICAgICAgb3B0aW9ucy5hbGxvd1dpbmRvd3NFc2NhcGUgPT09IGZhbHNlXG4gICAgaWYgKHRoaXMud2luZG93c1BhdGhzTm9Fc2NhcGUpIHtcbiAgICAgIHRoaXMucGF0dGVybiA9IHRoaXMucGF0dGVybi5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgICB9XG4gICAgdGhpcy5yZWdleHAgPSBudWxsXG4gICAgdGhpcy5uZWdhdGUgPSBmYWxzZVxuICAgIHRoaXMuY29tbWVudCA9IGZhbHNlXG4gICAgdGhpcy5lbXB0eSA9IGZhbHNlXG4gICAgdGhpcy5wYXJ0aWFsID0gISFvcHRpb25zLnBhcnRpYWxcblxuICAgIC8vIG1ha2UgdGhlIHNldCBvZiByZWdleHBzIGV0Yy5cbiAgICB0aGlzLm1ha2UoKVxuICB9XG5cbiAgZGVidWcgKCkge31cblxuICBtYWtlICgpIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5wYXR0ZXJuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuXG4gICAgLy8gZW1wdHkgcGF0dGVybnMgYW5kIGNvbW1lbnRzIG1hdGNoIG5vdGhpbmcuXG4gICAgaWYgKCFvcHRpb25zLm5vY29tbWVudCAmJiBwYXR0ZXJuLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgICB0aGlzLmNvbW1lbnQgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKCFwYXR0ZXJuKSB7XG4gICAgICB0aGlzLmVtcHR5ID0gdHJ1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gc3RlcCAxOiBmaWd1cmUgb3V0IG5lZ2F0aW9uLCBldGMuXG4gICAgdGhpcy5wYXJzZU5lZ2F0ZSgpXG5cbiAgICAvLyBzdGVwIDI6IGV4cGFuZCBicmFjZXNcbiAgICBsZXQgc2V0ID0gdGhpcy5nbG9iU2V0ID0gdGhpcy5icmFjZUV4cGFuZCgpXG5cbiAgICBpZiAob3B0aW9ucy5kZWJ1ZykgdGhpcy5kZWJ1ZyA9ICguLi5hcmdzKSA9PiBjb25zb2xlLmVycm9yKC4uLmFyZ3MpXG5cbiAgICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgc2V0KVxuXG4gICAgLy8gc3RlcCAzOiBub3cgd2UgaGF2ZSBhIHNldCwgc28gdHVybiBlYWNoIG9uZSBpbnRvIGEgc2VyaWVzIG9mIHBhdGgtcG9ydGlvblxuICAgIC8vIG1hdGNoaW5nIHBhdHRlcm5zLlxuICAgIC8vIFRoZXNlIHdpbGwgYmUgcmVnZXhwcywgZXhjZXB0IGluIHRoZSBjYXNlIG9mIFwiKipcIiwgd2hpY2ggaXNcbiAgICAvLyBzZXQgdG8gdGhlIEdMT0JTVEFSIG9iamVjdCBmb3IgZ2xvYnN0YXIgYmVoYXZpb3IsXG4gICAgLy8gYW5kIHdpbGwgbm90IGNvbnRhaW4gYW55IC8gY2hhcmFjdGVyc1xuICAgIHNldCA9IHRoaXMuZ2xvYlBhcnRzID0gc2V0Lm1hcChzID0+IHMuc3BsaXQoc2xhc2hTcGxpdCkpXG5cbiAgICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgc2V0KVxuXG4gICAgLy8gZ2xvYiAtLT4gcmVnZXhwc1xuICAgIHNldCA9IHNldC5tYXAoKHMsIHNpLCBzZXQpID0+IHMubWFwKHRoaXMucGFyc2UsIHRoaXMpKVxuXG4gICAgdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sIHNldClcblxuICAgIC8vIGZpbHRlciBvdXQgZXZlcnl0aGluZyB0aGF0IGRpZG4ndCBjb21waWxlIHByb3Blcmx5LlxuICAgIHNldCA9IHNldC5maWx0ZXIocyA9PiBzLmluZGV4T2YoZmFsc2UpID09PSAtMSlcblxuICAgIHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCBzZXQpXG5cbiAgICB0aGlzLnNldCA9IHNldFxuICB9XG5cbiAgcGFyc2VOZWdhdGUgKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubm9uZWdhdGUpIHJldHVyblxuXG4gICAgY29uc3QgcGF0dGVybiA9IHRoaXMucGF0dGVyblxuICAgIGxldCBuZWdhdGUgPSBmYWxzZVxuICAgIGxldCBuZWdhdGVPZmZzZXQgPSAwXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdHRlcm4ubGVuZ3RoICYmIHBhdHRlcm4uY2hhckF0KGkpID09PSAnISc7IGkrKykge1xuICAgICAgbmVnYXRlID0gIW5lZ2F0ZVxuICAgICAgbmVnYXRlT2Zmc2V0KytcbiAgICB9XG5cbiAgICBpZiAobmVnYXRlT2Zmc2V0KSB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKG5lZ2F0ZU9mZnNldClcbiAgICB0aGlzLm5lZ2F0ZSA9IG5lZ2F0ZVxuICB9XG5cbiAgLy8gc2V0IHBhcnRpYWwgdG8gdHJ1ZSB0byB0ZXN0IGlmLCBmb3IgZXhhbXBsZSxcbiAgLy8gXCIvYS9iXCIgbWF0Y2hlcyB0aGUgc3RhcnQgb2YgXCIvKi9iLyovZFwiXG4gIC8vIFBhcnRpYWwgbWVhbnMsIGlmIHlvdSBydW4gb3V0IG9mIGZpbGUgYmVmb3JlIHlvdSBydW5cbiAgLy8gb3V0IG9mIHBhdHRlcm4sIHRoZW4gdGhhdCdzIGZpbmUsIGFzIGxvbmcgYXMgYWxsXG4gIC8vIHRoZSBwYXJ0cyBtYXRjaC5cbiAgbWF0Y2hPbmUgKGZpbGUsIHBhdHRlcm4sIHBhcnRpYWwpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuXG4gICAgdGhpcy5kZWJ1ZygnbWF0Y2hPbmUnLFxuICAgICAgeyAndGhpcyc6IHRoaXMsIGZpbGU6IGZpbGUsIHBhdHRlcm46IHBhdHRlcm4gfSlcblxuICAgIHRoaXMuZGVidWcoJ21hdGNoT25lJywgZmlsZS5sZW5ndGgsIHBhdHRlcm4ubGVuZ3RoKVxuXG4gICAgZm9yICh2YXIgZmkgPSAwLFxuICAgICAgICBwaSA9IDAsXG4gICAgICAgIGZsID0gZmlsZS5sZW5ndGgsXG4gICAgICAgIHBsID0gcGF0dGVybi5sZW5ndGhcbiAgICAgICAgOyAoZmkgPCBmbCkgJiYgKHBpIDwgcGwpXG4gICAgICAgIDsgZmkrKywgcGkrKykge1xuICAgICAgdGhpcy5kZWJ1ZygnbWF0Y2hPbmUgbG9vcCcpXG4gICAgICB2YXIgcCA9IHBhdHRlcm5bcGldXG4gICAgICB2YXIgZiA9IGZpbGVbZmldXG5cbiAgICAgIHRoaXMuZGVidWcocGF0dGVybiwgcCwgZilcblxuICAgICAgLy8gc2hvdWxkIGJlIGltcG9zc2libGUuXG4gICAgICAvLyBzb21lIGludmFsaWQgcmVnZXhwIHN0dWZmIGluIHRoZSBzZXQuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChwID09PSBHTE9CU1RBUikge1xuICAgICAgICB0aGlzLmRlYnVnKCdHTE9CU1RBUicsIFtwYXR0ZXJuLCBwLCBmXSlcblxuICAgICAgICAvLyBcIioqXCJcbiAgICAgICAgLy8gYS8qKi9iLyoqL2Mgd291bGQgbWF0Y2ggdGhlIGZvbGxvd2luZzpcbiAgICAgICAgLy8gYS9iL3gveS96L2NcbiAgICAgICAgLy8gYS94L3kvei9iL2NcbiAgICAgICAgLy8gYS9iL3gvYi94L2NcbiAgICAgICAgLy8gYS9iL2NcbiAgICAgICAgLy8gVG8gZG8gdGhpcywgdGFrZSB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBhZnRlclxuICAgICAgICAvLyB0aGUgKiosIGFuZCBzZWUgaWYgaXQgd291bGQgbWF0Y2ggdGhlIGZpbGUgcmVtYWluZGVyLlxuICAgICAgICAvLyBJZiBzbywgcmV0dXJuIHN1Y2Nlc3MuXG4gICAgICAgIC8vIElmIG5vdCwgdGhlICoqIFwic3dhbGxvd3NcIiBhIHNlZ21lbnQsIGFuZCB0cnkgYWdhaW4uXG4gICAgICAgIC8vIFRoaXMgaXMgcmVjdXJzaXZlbHkgYXdmdWwuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIGEvKiovYi8qKi9jIG1hdGNoaW5nIGEvYi94L3kvei9jXG4gICAgICAgIC8vIC0gYSBtYXRjaGVzIGFcbiAgICAgICAgLy8gLSBkb3VibGVzdGFyXG4gICAgICAgIC8vICAgLSBtYXRjaE9uZShiL3gveS96L2MsIGIvKiovYylcbiAgICAgICAgLy8gICAgIC0gYiBtYXRjaGVzIGJcbiAgICAgICAgLy8gICAgIC0gZG91Ymxlc3RhclxuICAgICAgICAvLyAgICAgICAtIG1hdGNoT25lKHgveS96L2MsIGMpIC0+IG5vXG4gICAgICAgIC8vICAgICAgIC0gbWF0Y2hPbmUoeS96L2MsIGMpIC0+IG5vXG4gICAgICAgIC8vICAgICAgIC0gbWF0Y2hPbmUoei9jLCBjKSAtPiBub1xuICAgICAgICAvLyAgICAgICAtIG1hdGNoT25lKGMsIGMpIHllcywgaGl0XG4gICAgICAgIHZhciBmciA9IGZpXG4gICAgICAgIHZhciBwciA9IHBpICsgMVxuICAgICAgICBpZiAocHIgPT09IHBsKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1ZygnKiogYXQgdGhlIGVuZCcpXG4gICAgICAgICAgLy8gYSAqKiBhdCB0aGUgZW5kIHdpbGwganVzdCBzd2FsbG93IHRoZSByZXN0LlxuICAgICAgICAgIC8vIFdlIGhhdmUgZm91bmQgYSBtYXRjaC5cbiAgICAgICAgICAvLyBob3dldmVyLCBpdCB3aWxsIG5vdCBzd2FsbG93IC8ueCwgdW5sZXNzXG4gICAgICAgICAgLy8gb3B0aW9ucy5kb3QgaXMgc2V0LlxuICAgICAgICAgIC8vIC4gYW5kIC4uIGFyZSAqbmV2ZXIqIG1hdGNoZWQgYnkgKiosIGZvciBleHBsb3NpdmVseVxuICAgICAgICAgIC8vIGV4cG9uZW50aWFsIHJlYXNvbnMuXG4gICAgICAgICAgZm9yICg7IGZpIDwgZmw7IGZpKyspIHtcbiAgICAgICAgICAgIGlmIChmaWxlW2ZpXSA9PT0gJy4nIHx8IGZpbGVbZmldID09PSAnLi4nIHx8XG4gICAgICAgICAgICAgICghb3B0aW9ucy5kb3QgJiYgZmlsZVtmaV0uY2hhckF0KDApID09PSAnLicpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9rLCBsZXQncyBzZWUgaWYgd2UgY2FuIHN3YWxsb3cgd2hhdGV2ZXIgd2UgY2FuLlxuICAgICAgICB3aGlsZSAoZnIgPCBmbCkge1xuICAgICAgICAgIHZhciBzd2FsbG93ZWUgPSBmaWxlW2ZyXVxuXG4gICAgICAgICAgdGhpcy5kZWJ1ZygnXFxuZ2xvYnN0YXIgd2hpbGUnLCBmaWxlLCBmciwgcGF0dGVybiwgcHIsIHN3YWxsb3dlZSlcblxuICAgICAgICAgIC8vIFhYWCByZW1vdmUgdGhpcyBzbGljZS4gIEp1c3QgcGFzcyB0aGUgc3RhcnQgaW5kZXguXG4gICAgICAgICAgaWYgKHRoaXMubWF0Y2hPbmUoZmlsZS5zbGljZShmciksIHBhdHRlcm4uc2xpY2UocHIpLCBwYXJ0aWFsKSkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZygnZ2xvYnN0YXIgZm91bmQgbWF0Y2ghJywgZnIsIGZsLCBzd2FsbG93ZWUpXG4gICAgICAgICAgICAvLyBmb3VuZCBhIG1hdGNoLlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2FuJ3Qgc3dhbGxvdyBcIi5cIiBvciBcIi4uXCIgZXZlci5cbiAgICAgICAgICAgIC8vIGNhbiBvbmx5IHN3YWxsb3cgXCIuZm9vXCIgd2hlbiBleHBsaWNpdGx5IGFza2VkLlxuICAgICAgICAgICAgaWYgKHN3YWxsb3dlZSA9PT0gJy4nIHx8IHN3YWxsb3dlZSA9PT0gJy4uJyB8fFxuICAgICAgICAgICAgICAoIW9wdGlvbnMuZG90ICYmIHN3YWxsb3dlZS5jaGFyQXQoMCkgPT09ICcuJykpIHtcbiAgICAgICAgICAgICAgdGhpcy5kZWJ1ZygnZG90IGRldGVjdGVkIScsIGZpbGUsIGZyLCBwYXR0ZXJuLCBwcilcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gKiogc3dhbGxvd3MgYSBzZWdtZW50LCBhbmQgY29udGludWUuXG4gICAgICAgICAgICB0aGlzLmRlYnVnKCdnbG9ic3RhciBzd2FsbG93IGEgc2VnbWVudCwgYW5kIGNvbnRpbnVlJylcbiAgICAgICAgICAgIGZyKytcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBubyBtYXRjaCB3YXMgZm91bmQuXG4gICAgICAgIC8vIEhvd2V2ZXIsIGluIHBhcnRpYWwgbW9kZSwgd2UgY2FuJ3Qgc2F5IHRoaXMgaXMgbmVjZXNzYXJpbHkgb3Zlci5cbiAgICAgICAgLy8gSWYgdGhlcmUncyBtb3JlICpwYXR0ZXJuKiBsZWZ0LCB0aGVuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAocGFydGlhbCkge1xuICAgICAgICAgIC8vIHJhbiBvdXQgb2YgZmlsZVxuICAgICAgICAgIHRoaXMuZGVidWcoJ1xcbj4+PiBubyBtYXRjaCwgcGFydGlhbD8nLCBmaWxlLCBmciwgcGF0dGVybiwgcHIpXG4gICAgICAgICAgaWYgKGZyID09PSBmbCkgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgLy8gc29tZXRoaW5nIG90aGVyIHRoYW4gKipcbiAgICAgIC8vIG5vbi1tYWdpYyBwYXR0ZXJucyBqdXN0IGhhdmUgdG8gbWF0Y2ggZXhhY3RseVxuICAgICAgLy8gcGF0dGVybnMgd2l0aCBtYWdpYyBoYXZlIGJlZW4gdHVybmVkIGludG8gcmVnZXhwcy5cbiAgICAgIHZhciBoaXRcbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaGl0ID0gZiA9PT0gcFxuICAgICAgICB0aGlzLmRlYnVnKCdzdHJpbmcgbWF0Y2gnLCBwLCBmLCBoaXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoaXQgPSBmLm1hdGNoKHApXG4gICAgICAgIHRoaXMuZGVidWcoJ3BhdHRlcm4gbWF0Y2gnLCBwLCBmLCBoaXQpXG4gICAgICB9XG5cbiAgICAgIGlmICghaGl0KSByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBlbmRpbmcgaW4gLyBtZWFucyB0aGF0IHdlJ2xsIGdldCBhIGZpbmFsIFwiXCJcbiAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuLiAgVGhpcyBjYW4gb25seSBtYXRjaCBhXG4gICAgLy8gY29ycmVzcG9uZGluZyBcIlwiIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4gICAgLy8gSWYgdGhlIGZpbGUgZW5kcyBpbiAvLCB0aGVuIGl0IGNhbiBvbmx5IG1hdGNoIGFcbiAgICAvLyBhIHBhdHRlcm4gdGhhdCBlbmRzIGluIC8sIHVubGVzcyB0aGUgcGF0dGVybiBqdXN0XG4gICAgLy8gZG9lc24ndCBoYXZlIGFueSBtb3JlIGZvciBpdC4gQnV0LCBhL2IvIHNob3VsZCAqbm90KlxuICAgIC8vIG1hdGNoIFwiYS9iLypcIiwgZXZlbiB0aG91Z2ggXCJcIiBtYXRjaGVzIGFnYWluc3QgdGhlXG4gICAgLy8gW14vXSo/IHBhdHRlcm4sIGV4Y2VwdCBpbiBwYXJ0aWFsIG1vZGUsIHdoZXJlIGl0IG1pZ2h0XG4gICAgLy8gc2ltcGx5IG5vdCBiZSByZWFjaGVkIHlldC5cbiAgICAvLyBIb3dldmVyLCBhL2IvIHNob3VsZCBzdGlsbCBzYXRpc2Z5IGEvKlxuXG4gICAgLy8gbm93IGVpdGhlciB3ZSBmZWxsIG9mZiB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuLCBvciB3ZSdyZSBkb25lLlxuICAgIGlmIChmaSA9PT0gZmwgJiYgcGkgPT09IHBsKSB7XG4gICAgICAvLyByYW4gb3V0IG9mIHBhdHRlcm4gYW5kIGZpbGVuYW1lIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgICAvLyBhbiBleGFjdCBoaXQhXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoZmkgPT09IGZsKSB7XG4gICAgICAvLyByYW4gb3V0IG9mIGZpbGUsIGJ1dCBzdGlsbCBoYWQgcGF0dGVybiBsZWZ0LlxuICAgICAgLy8gdGhpcyBpcyBvayBpZiB3ZSdyZSBkb2luZyB0aGUgbWF0Y2ggYXMgcGFydCBvZlxuICAgICAgLy8gYSBnbG9iIGZzIHRyYXZlcnNhbC5cbiAgICAgIHJldHVybiBwYXJ0aWFsXG4gICAgfSBlbHNlIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIGlmIChwaSA9PT0gcGwpIHtcbiAgICAgIC8vIHJhbiBvdXQgb2YgcGF0dGVybiwgc3RpbGwgaGF2ZSBmaWxlIGxlZnQuXG4gICAgICAvLyB0aGlzIGlzIG9ubHkgYWNjZXB0YWJsZSBpZiB3ZSdyZSBvbiB0aGUgdmVyeSBsYXN0XG4gICAgICAvLyBlbXB0eSBzZWdtZW50IG9mIGEgZmlsZSB3aXRoIGEgdHJhaWxpbmcgc2xhc2guXG4gICAgICAvLyBhLyogc2hvdWxkIG1hdGNoIGEvYi9cbiAgICAgIHJldHVybiAoZmkgPT09IGZsIC0gMSkgJiYgKGZpbGVbZmldID09PSAnJylcbiAgICB9XG5cbiAgICAvLyBzaG91bGQgYmUgdW5yZWFjaGFibGUuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3d0Zj8nKVxuICB9XG5cbiAgYnJhY2VFeHBhbmQgKCkge1xuICAgIHJldHVybiBicmFjZUV4cGFuZCh0aGlzLnBhdHRlcm4sIHRoaXMub3B0aW9ucylcbiAgfVxuXG4gIHBhcnNlIChwYXR0ZXJuLCBpc1N1Yikge1xuICAgIGFzc2VydFZhbGlkUGF0dGVybihwYXR0ZXJuKVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuXG4gICAgLy8gc2hvcnRjdXRzXG4gICAgaWYgKHBhdHRlcm4gPT09ICcqKicpIHtcbiAgICAgIGlmICghb3B0aW9ucy5ub2dsb2JzdGFyKVxuICAgICAgICByZXR1cm4gR0xPQlNUQVJcbiAgICAgIGVsc2VcbiAgICAgICAgcGF0dGVybiA9ICcqJ1xuICAgIH1cbiAgICBpZiAocGF0dGVybiA9PT0gJycpIHJldHVybiAnJ1xuXG4gICAgbGV0IHJlID0gJydcbiAgICBsZXQgaGFzTWFnaWMgPSBmYWxzZVxuICAgIGxldCBlc2NhcGluZyA9IGZhbHNlXG4gICAgLy8gPyA9PiBvbmUgc2luZ2xlIGNoYXJhY3RlclxuICAgIGNvbnN0IHBhdHRlcm5MaXN0U3RhY2sgPSBbXVxuICAgIGNvbnN0IG5lZ2F0aXZlTGlzdHMgPSBbXVxuICAgIGxldCBzdGF0ZUNoYXJcbiAgICBsZXQgaW5DbGFzcyA9IGZhbHNlXG4gICAgbGV0IHJlQ2xhc3NTdGFydCA9IC0xXG4gICAgbGV0IGNsYXNzU3RhcnQgPSAtMVxuICAgIGxldCBjc1xuICAgIGxldCBwbFxuICAgIGxldCBzcFxuICAgIC8vIC4gYW5kIC4uIG5ldmVyIG1hdGNoIGFueXRoaW5nIHRoYXQgZG9lc24ndCBzdGFydCB3aXRoIC4sXG4gICAgLy8gZXZlbiB3aGVuIG9wdGlvbnMuZG90IGlzIHNldC4gIEhvd2V2ZXIsIGlmIHRoZSBwYXR0ZXJuXG4gICAgLy8gc3RhcnRzIHdpdGggLiwgdGhlbiB0cmF2ZXJzYWwgcGF0dGVybnMgY2FuIG1hdGNoLlxuICAgIGxldCBkb3RUcmF2QWxsb3dlZCA9IHBhdHRlcm4uY2hhckF0KDApID09PSAnLidcbiAgICBsZXQgZG90RmlsZUFsbG93ZWQgPSBvcHRpb25zLmRvdCB8fCBkb3RUcmF2QWxsb3dlZFxuICAgIGNvbnN0IHBhdHRlcm5TdGFydCA9ICgpID0+XG4gICAgICBkb3RUcmF2QWxsb3dlZFxuICAgICAgICA/ICcnXG4gICAgICAgIDogZG90RmlsZUFsbG93ZWRcbiAgICAgICAgPyAnKD8hKD86XnxcXFxcLylcXFxcLnsxLDJ9KD86JHxcXFxcLykpJ1xuICAgICAgICA6ICcoPyFcXFxcLiknXG4gICAgY29uc3Qgc3ViUGF0dGVyblN0YXJ0ID0gKHApID0+XG4gICAgICBwLmNoYXJBdCgwKSA9PT0gJy4nXG4gICAgICAgID8gJydcbiAgICAgICAgOiBvcHRpb25zLmRvdFxuICAgICAgICA/ICcoPyEoPzpefFxcXFwvKVxcXFwuezEsMn0oPzokfFxcXFwvKSknXG4gICAgICAgIDogJyg/IVxcXFwuKSdcblxuXG4gICAgY29uc3QgY2xlYXJTdGF0ZUNoYXIgPSAoKSA9PiB7XG4gICAgICBpZiAoc3RhdGVDaGFyKSB7XG4gICAgICAgIC8vIHdlIGhhZCBzb21lIHN0YXRlLXRyYWNraW5nIGNoYXJhY3RlclxuICAgICAgICAvLyB0aGF0IHdhc24ndCBjb25zdW1lZCBieSB0aGlzIHBhc3MuXG4gICAgICAgIHN3aXRjaCAoc3RhdGVDaGFyKSB7XG4gICAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgICByZSArPSBzdGFyXG4gICAgICAgICAgICBoYXNNYWdpYyA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJz8nOlxuICAgICAgICAgICAgcmUgKz0gcW1hcmtcbiAgICAgICAgICAgIGhhc01hZ2ljID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlICs9ICdcXFxcJyArIHN0YXRlQ2hhclxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWJ1ZygnY2xlYXJTdGF0ZUNoYXIgJWogJWonLCBzdGF0ZUNoYXIsIHJlKVxuICAgICAgICBzdGF0ZUNoYXIgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBjOyAoaSA8IHBhdHRlcm4ubGVuZ3RoKSAmJiAoYyA9IHBhdHRlcm4uY2hhckF0KGkpKTsgaSsrKSB7XG4gICAgICB0aGlzLmRlYnVnKCclc1xcdCVzICVzICVqJywgcGF0dGVybiwgaSwgcmUsIGMpXG5cbiAgICAgIC8vIHNraXAgb3ZlciBhbnkgdGhhdCBhcmUgZXNjYXBlZC5cbiAgICAgIGlmIChlc2NhcGluZykge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIGNvbXBsZXRlbHkgbm90IGFsbG93ZWQsIGV2ZW4gZXNjYXBlZC4gKi9cbiAgICAgICAgaWYgKGMgPT09ICcvJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlU3BlY2lhbHNbY10pIHtcbiAgICAgICAgICByZSArPSAnXFxcXCdcbiAgICAgICAgfVxuICAgICAgICByZSArPSBjXG4gICAgICAgIGVzY2FwaW5nID0gZmFsc2VcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGNhc2UgJy8nOiB7XG4gICAgICAgICAgLy8gU2hvdWxkIGFscmVhZHkgYmUgcGF0aC1zcGxpdCBieSBub3cuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICBpZiAoaW5DbGFzcyAmJiBwYXR0ZXJuLmNoYXJBdChpICsgMSkgPT09ICctJykge1xuICAgICAgICAgICAgcmUgKz0gY1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjbGVhclN0YXRlQ2hhcigpXG4gICAgICAgICAgZXNjYXBpbmcgPSB0cnVlXG4gICAgICAgIGNvbnRpbnVlXG5cbiAgICAgICAgLy8gdGhlIHZhcmlvdXMgc3RhdGVDaGFyIHZhbHVlc1xuICAgICAgICAvLyBmb3IgdGhlIFwiZXh0Z2xvYlwiIHN0dWZmLlxuICAgICAgICBjYXNlICc/JzpcbiAgICAgICAgY2FzZSAnKic6XG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICBjYXNlICdAJzpcbiAgICAgICAgY2FzZSAnISc6XG4gICAgICAgICAgdGhpcy5kZWJ1ZygnJXNcXHQlcyAlcyAlaiA8LS0gc3RhdGVDaGFyJywgcGF0dGVybiwgaSwgcmUsIGMpXG5cbiAgICAgICAgICAvLyBhbGwgb2YgdGhvc2UgYXJlIGxpdGVyYWxzIGluc2lkZSBhIGNsYXNzLCBleGNlcHQgdGhhdFxuICAgICAgICAgIC8vIHRoZSBnbG9iIFshYV0gbWVhbnMgW15hXSBpbiByZWdleHBcbiAgICAgICAgICBpZiAoaW5DbGFzcykge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZygnICBpbiBjbGFzcycpXG4gICAgICAgICAgICBpZiAoYyA9PT0gJyEnICYmIGkgPT09IGNsYXNzU3RhcnQgKyAxKSBjID0gJ14nXG4gICAgICAgICAgICByZSArPSBjXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHN0YXRlQ2hhciwgdGhlbiBpdCBtZWFuc1xuICAgICAgICAgIC8vIHRoYXQgdGhlcmUgd2FzIHNvbWV0aGluZyBsaWtlICoqIG9yICs/IGluIHRoZXJlLlxuICAgICAgICAgIC8vIEhhbmRsZSB0aGUgc3RhdGVDaGFyLCB0aGVuIHByb2NlZWQgd2l0aCB0aGlzIG9uZS5cbiAgICAgICAgICB0aGlzLmRlYnVnKCdjYWxsIGNsZWFyU3RhdGVDaGFyICVqJywgc3RhdGVDaGFyKVxuICAgICAgICAgIGNsZWFyU3RhdGVDaGFyKClcbiAgICAgICAgICBzdGF0ZUNoYXIgPSBjXG4gICAgICAgICAgLy8gaWYgZXh0Z2xvYiBpcyBkaXNhYmxlZCwgdGhlbiArKGFzZGZ8Zm9vKSBpc24ndCBhIHRoaW5nLlxuICAgICAgICAgIC8vIGp1c3QgY2xlYXIgdGhlIHN0YXRlY2hhciAqbm93KiwgcmF0aGVyIHRoYW4gZXZlbiBkaXZpbmcgaW50b1xuICAgICAgICAgIC8vIHRoZSBwYXR0ZXJuTGlzdCBzdHVmZi5cbiAgICAgICAgICBpZiAob3B0aW9ucy5ub2V4dCkgY2xlYXJTdGF0ZUNoYXIoKVxuICAgICAgICBjb250aW51ZVxuXG4gICAgICAgIGNhc2UgJygnOiB7XG4gICAgICAgICAgaWYgKGluQ2xhc3MpIHtcbiAgICAgICAgICAgIHJlICs9ICcoJ1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0YXRlQ2hhcikge1xuICAgICAgICAgICAgcmUgKz0gJ1xcXFwoJ1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwbEVudHJ5ID0ge1xuICAgICAgICAgICAgdHlwZTogc3RhdGVDaGFyLFxuICAgICAgICAgICAgc3RhcnQ6IGkgLSAxLFxuICAgICAgICAgICAgcmVTdGFydDogcmUubGVuZ3RoLFxuICAgICAgICAgICAgb3BlbjogcGxUeXBlc1tzdGF0ZUNoYXJdLm9wZW4sXG4gICAgICAgICAgICBjbG9zZTogcGxUeXBlc1tzdGF0ZUNoYXJdLmNsb3NlLFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgJ1xcdCcsIHBsRW50cnkpXG4gICAgICAgICAgcGF0dGVybkxpc3RTdGFjay5wdXNoKHBsRW50cnkpXG4gICAgICAgICAgLy8gbmVnYXRpb24gaXMgKD86KD8hKD86anMpKD86PHJlc3Q+KSlbXi9dKilcbiAgICAgICAgICByZSArPSBwbEVudHJ5Lm9wZW5cbiAgICAgICAgICAvLyBuZXh0IGVudHJ5IHN0YXJ0cyB3aXRoIGEgZG90IG1heWJlP1xuICAgICAgICAgIGlmIChwbEVudHJ5LnN0YXJ0ID09PSAwICYmIHBsRW50cnkudHlwZSAhPT0gJyEnKSB7XG4gICAgICAgICAgICBkb3RUcmF2QWxsb3dlZCA9IHRydWVcbiAgICAgICAgICAgIHJlICs9IHN1YlBhdHRlcm5TdGFydChwYXR0ZXJuLnNsaWNlKGkgKyAxKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kZWJ1ZygncGxUeXBlICVqICVqJywgc3RhdGVDaGFyLCByZSlcbiAgICAgICAgICBzdGF0ZUNoYXIgPSBmYWxzZVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICcpJzoge1xuICAgICAgICAgIGNvbnN0IHBsRW50cnkgPSBwYXR0ZXJuTGlzdFN0YWNrW3BhdHRlcm5MaXN0U3RhY2subGVuZ3RoIC0gMV1cbiAgICAgICAgICBpZiAoaW5DbGFzcyB8fCAhcGxFbnRyeSkge1xuICAgICAgICAgICAgcmUgKz0gJ1xcXFwpJ1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcGF0dGVybkxpc3RTdGFjay5wb3AoKVxuXG4gICAgICAgICAgLy8gY2xvc2luZyBhbiBleHRnbG9iXG4gICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuICAgICAgICAgIGhhc01hZ2ljID0gdHJ1ZVxuICAgICAgICAgIHBsID0gcGxFbnRyeVxuICAgICAgICAgIC8vIG5lZ2F0aW9uIGlzICg/Oig/IWpzKVteL10qKVxuICAgICAgICAgIC8vIFRoZSBvdGhlcnMgYXJlICg/OjxwYXR0ZXJuPik8dHlwZT5cbiAgICAgICAgICByZSArPSBwbC5jbG9zZVxuICAgICAgICAgIGlmIChwbC50eXBlID09PSAnIScpIHtcbiAgICAgICAgICAgIG5lZ2F0aXZlTGlzdHMucHVzaChPYmplY3QuYXNzaWduKHBsLCB7IHJlRW5kOiByZS5sZW5ndGggfSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICd8Jzoge1xuICAgICAgICAgIGNvbnN0IHBsRW50cnkgPSBwYXR0ZXJuTGlzdFN0YWNrW3BhdHRlcm5MaXN0U3RhY2subGVuZ3RoIC0gMV1cbiAgICAgICAgICBpZiAoaW5DbGFzcyB8fCAhcGxFbnRyeSkge1xuICAgICAgICAgICAgcmUgKz0gJ1xcXFx8J1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjbGVhclN0YXRlQ2hhcigpXG4gICAgICAgICAgcmUgKz0gJ3wnXG4gICAgICAgICAgLy8gbmV4dCBzdWJwYXR0ZXJuIGNhbiBzdGFydCB3aXRoIGEgZG90P1xuICAgICAgICAgIGlmIChwbEVudHJ5LnN0YXJ0ID09PSAwICYmIHBsRW50cnkudHlwZSAhPT0gJyEnKSB7XG4gICAgICAgICAgICBkb3RUcmF2QWxsb3dlZCA9IHRydWVcbiAgICAgICAgICAgIHJlICs9IHN1YlBhdHRlcm5TdGFydChwYXR0ZXJuLnNsaWNlKGkgKyAxKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoZXNlIGFyZSBtb3N0bHkgdGhlIHNhbWUgaW4gcmVnZXhwIGFuZCBnbG9iXG4gICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgIC8vIHN3YWxsb3cgYW55IHN0YXRlLXRyYWNraW5nIGNoYXIgYmVmb3JlIHRoZSBbXG4gICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuXG4gICAgICAgICAgaWYgKGluQ2xhc3MpIHtcbiAgICAgICAgICAgIHJlICs9ICdcXFxcJyArIGNcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaW5DbGFzcyA9IHRydWVcbiAgICAgICAgICBjbGFzc1N0YXJ0ID0gaVxuICAgICAgICAgIHJlQ2xhc3NTdGFydCA9IHJlLmxlbmd0aFxuICAgICAgICAgIHJlICs9IGNcbiAgICAgICAgY29udGludWVcblxuICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAvLyAgYSByaWdodCBicmFja2V0IHNoYWxsIGxvc2UgaXRzIHNwZWNpYWxcbiAgICAgICAgICAvLyAgbWVhbmluZyBhbmQgcmVwcmVzZW50IGl0c2VsZiBpblxuICAgICAgICAgIC8vICBhIGJyYWNrZXQgZXhwcmVzc2lvbiBpZiBpdCBvY2N1cnNcbiAgICAgICAgICAvLyAgZmlyc3QgaW4gdGhlIGxpc3QuICAtLSBQT1NJWC4yIDIuOC4zLjJcbiAgICAgICAgICBpZiAoaSA9PT0gY2xhc3NTdGFydCArIDEgfHwgIWluQ2xhc3MpIHtcbiAgICAgICAgICAgIHJlICs9ICdcXFxcJyArIGNcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gc3BsaXQgd2hlcmUgdGhlIGxhc3QgWyB3YXMsIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgLy8gYW4gaW52YWxpZCByZS4gaWYgc28sIHJlLXdhbGsgdGhlIGNvbnRlbnRzIG9mIHRoZVxuICAgICAgICAgIC8vIHdvdWxkLWJlIGNsYXNzIHRvIHJlLXRyYW5zbGF0ZSBhbnkgY2hhcmFjdGVycyB0aGF0XG4gICAgICAgICAgLy8gd2VyZSBwYXNzZWQgdGhyb3VnaCBhcy1pc1xuICAgICAgICAgIC8vIFRPRE86IEl0IHdvdWxkIHByb2JhYmx5IGJlIGZhc3RlciB0byBkZXRlcm1pbmUgdGhpc1xuICAgICAgICAgIC8vIHdpdGhvdXQgYSB0cnkvY2F0Y2ggYW5kIGEgbmV3IFJlZ0V4cCwgYnV0IGl0J3MgdHJpY2t5XG4gICAgICAgICAgLy8gdG8gZG8gc2FmZWx5LiAgRm9yIG5vdywgdGhpcyBpcyBzYWZlIGFuZCB3b3Jrcy5cbiAgICAgICAgICBjcyA9IHBhdHRlcm4uc3Vic3RyaW5nKGNsYXNzU3RhcnQgKyAxLCBpKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWdFeHAoJ1snICsgYnJhRXhwRXNjYXBlKGNoYXJVbmVzY2FwZShjcykpICsgJ10nKVxuICAgICAgICAgICAgLy8gbG9va3MgZ29vZCwgZmluaXNoIHVwIHRoZSBjbGFzcy5cbiAgICAgICAgICAgIHJlICs9IGNcbiAgICAgICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICAgICAgLy8gb3V0IG9mIG9yZGVyIHJhbmdlcyBpbiBKUyBhcmUgZXJyb3JzLCBidXQgaW4gZ2xvYiBzeW50YXgsXG4gICAgICAgICAgICAvLyB0aGV5J3JlIGp1c3QgYSByYW5nZSB0aGF0IG1hdGNoZXMgbm90aGluZy5cbiAgICAgICAgICAgIHJlID0gcmUuc3Vic3RyaW5nKDAsIHJlQ2xhc3NTdGFydCkgKyAnKD86JC4pJyAvLyBtYXRjaCBub3RoaW5nIGV2ZXJcbiAgICAgICAgICB9XG4gICAgICAgICAgaGFzTWFnaWMgPSB0cnVlXG4gICAgICAgICAgaW5DbGFzcyA9IGZhbHNlXG4gICAgICAgIGNvbnRpbnVlXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBzd2FsbG93IGFueSBzdGF0ZSBjaGFyIHRoYXQgd2Fzbid0IGNvbnN1bWVkXG4gICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKVxuXG4gICAgICAgICAgaWYgKHJlU3BlY2lhbHNbY10gJiYgIShjID09PSAnXicgJiYgaW5DbGFzcykpIHtcbiAgICAgICAgICAgIHJlICs9ICdcXFxcJ1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlICs9IGNcbiAgICAgICAgICBicmVha1xuXG4gICAgICB9IC8vIHN3aXRjaFxuICAgIH0gLy8gZm9yXG5cbiAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgbGVmdCBhIGNsYXNzIG9wZW4uXG4gICAgLy8gXCJbYWJjXCIgaXMgdmFsaWQsIGVxdWl2YWxlbnQgdG8gXCJcXFthYmNcIlxuICAgIGlmIChpbkNsYXNzKSB7XG4gICAgICAvLyBzcGxpdCB3aGVyZSB0aGUgbGFzdCBbIHdhcywgYW5kIGVzY2FwZSBpdFxuICAgICAgLy8gdGhpcyBpcyBhIGh1Z2UgcGl0YS4gIFdlIG5vdyBoYXZlIHRvIHJlLXdhbGtcbiAgICAgIC8vIHRoZSBjb250ZW50cyBvZiB0aGUgd291bGQtYmUgY2xhc3MgdG8gcmUtdHJhbnNsYXRlXG4gICAgICAvLyBhbnkgY2hhcmFjdGVycyB0aGF0IHdlcmUgcGFzc2VkIHRocm91Z2ggYXMtaXNcbiAgICAgIGNzID0gcGF0dGVybi5zbGljZShjbGFzc1N0YXJ0ICsgMSlcbiAgICAgIHNwID0gdGhpcy5wYXJzZShjcywgU1VCUEFSU0UpXG4gICAgICByZSA9IHJlLnN1YnN0cmluZygwLCByZUNsYXNzU3RhcnQpICsgJ1xcXFxbJyArIHNwWzBdXG4gICAgICBoYXNNYWdpYyA9IGhhc01hZ2ljIHx8IHNwWzFdXG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGhhZCBhICsoIHRoaW5nIGF0IHRoZSAqZW5kKlxuICAgIC8vIG9mIHRoZSBwYXR0ZXJuLlxuICAgIC8vIGVhY2ggcGF0dGVybiBsaXN0IHN0YWNrIGFkZHMgMyBjaGFycywgYW5kIHdlIG5lZWQgdG8gZ28gdGhyb3VnaFxuICAgIC8vIGFuZCBlc2NhcGUgYW55IHwgY2hhcnMgdGhhdCB3ZXJlIHBhc3NlZCB0aHJvdWdoIGFzLWlzIGZvciB0aGUgcmVnZXhwLlxuICAgIC8vIEdvIHRocm91Z2ggYW5kIGVzY2FwZSB0aGVtLCB0YWtpbmcgY2FyZSBub3QgdG8gZG91YmxlLWVzY2FwZSBhbnlcbiAgICAvLyB8IGNoYXJzIHRoYXQgd2VyZSBhbHJlYWR5IGVzY2FwZWQuXG4gICAgZm9yIChwbCA9IHBhdHRlcm5MaXN0U3RhY2sucG9wKCk7IHBsOyBwbCA9IHBhdHRlcm5MaXN0U3RhY2sucG9wKCkpIHtcbiAgICAgIGxldCB0YWlsXG4gICAgICB0YWlsID0gcmUuc2xpY2UocGwucmVTdGFydCArIHBsLm9wZW4ubGVuZ3RoKVxuICAgICAgdGhpcy5kZWJ1Zygnc2V0dGluZyB0YWlsJywgcmUsIHBsKVxuICAgICAgLy8gbWF5YmUgc29tZSBldmVuIG51bWJlciBvZiBcXCwgdGhlbiBtYXliZSAxIFxcLCBmb2xsb3dlZCBieSBhIHxcbiAgICAgIHRhaWwgPSB0YWlsLnJlcGxhY2UoLygoPzpcXFxcezJ9KXswLDY0fSkoXFxcXD8pXFx8L2csIChfLCAkMSwgJDIpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgLSBzaG91bGQgYWxyZWFkeSBiZSBkb25lICovXG4gICAgICAgIGlmICghJDIpIHtcbiAgICAgICAgICAvLyB0aGUgfCBpc24ndCBhbHJlYWR5IGVzY2FwZWQsIHNvIGVzY2FwZSBpdC5cbiAgICAgICAgICAkMiA9ICdcXFxcJ1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbmVlZCB0byBlc2NhcGUgYWxsIHRob3NlIHNsYXNoZXMgKmFnYWluKiwgd2l0aG91dCBlc2NhcGluZyB0aGVcbiAgICAgICAgLy8gb25lIHRoYXQgd2UgbmVlZCBmb3IgZXNjYXBpbmcgdGhlIHwgY2hhcmFjdGVyLiAgQXMgaXQgd29ya3Mgb3V0LFxuICAgICAgICAvLyBlc2NhcGluZyBhbiBldmVuIG51bWJlciBvZiBzbGFzaGVzIGNhbiBiZSBkb25lIGJ5IHNpbXBseSByZXBlYXRpbmdcbiAgICAgICAgLy8gaXQgZXhhY3RseSBhZnRlciBpdHNlbGYuICBUaGF0J3Mgd2h5IHRoaXMgdHJpY2sgd29ya3MuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEkgYW0gc29ycnkgdGhhdCB5b3UgaGF2ZSB0byBzZWUgdGhpcy5cbiAgICAgICAgcmV0dXJuICQxICsgJDEgKyAkMiArICd8J1xuICAgICAgfSlcblxuICAgICAgdGhpcy5kZWJ1ZygndGFpbD0lalxcbiAgICVzJywgdGFpbCwgdGFpbCwgcGwsIHJlKVxuICAgICAgY29uc3QgdCA9IHBsLnR5cGUgPT09ICcqJyA/IHN0YXJcbiAgICAgICAgOiBwbC50eXBlID09PSAnPycgPyBxbWFya1xuICAgICAgICA6ICdcXFxcJyArIHBsLnR5cGVcblxuICAgICAgaGFzTWFnaWMgPSB0cnVlXG4gICAgICByZSA9IHJlLnNsaWNlKDAsIHBsLnJlU3RhcnQpICsgdCArICdcXFxcKCcgKyB0YWlsXG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIHRyYWlsaW5nIHRoaW5ncyB0aGF0IG9ubHkgbWF0dGVyIGF0IHRoZSB2ZXJ5IGVuZC5cbiAgICBjbGVhclN0YXRlQ2hhcigpXG4gICAgaWYgKGVzY2FwaW5nKSB7XG4gICAgICAvLyB0cmFpbGluZyBcXFxcXG4gICAgICByZSArPSAnXFxcXFxcXFwnXG4gICAgfVxuXG4gICAgLy8gb25seSBuZWVkIHRvIGFwcGx5IHRoZSBub2RvdCBzdGFydCBpZiB0aGUgcmUgc3RhcnRzIHdpdGhcbiAgICAvLyBzb21ldGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBjYXB0dXJlIGEgZG90XG4gICAgY29uc3QgYWRkUGF0dGVyblN0YXJ0ID0gYWRkUGF0dGVyblN0YXJ0U2V0W3JlLmNoYXJBdCgwKV1cblxuICAgIC8vIEhhY2sgdG8gd29yayBhcm91bmQgbGFjayBvZiBuZWdhdGl2ZSBsb29rYmVoaW5kIGluIEpTXG4gICAgLy8gQSBwYXR0ZXJuIGxpa2U6ICouISh4KS4hKHl8eikgbmVlZHMgdG8gZW5zdXJlIHRoYXQgYSBuYW1lXG4gICAgLy8gbGlrZSAnYS54eXoueXonIGRvZXNuJ3QgbWF0Y2guICBTbywgdGhlIGZpcnN0IG5lZ2F0aXZlXG4gICAgLy8gbG9va2FoZWFkLCBoYXMgdG8gbG9vayBBTEwgdGhlIHdheSBhaGVhZCwgdG8gdGhlIGVuZCBvZlxuICAgIC8vIHRoZSBwYXR0ZXJuLlxuICAgIGZvciAobGV0IG4gPSBuZWdhdGl2ZUxpc3RzLmxlbmd0aCAtIDE7IG4gPiAtMTsgbi0tKSB7XG4gICAgICBjb25zdCBubCA9IG5lZ2F0aXZlTGlzdHNbbl1cblxuICAgICAgY29uc3QgbmxCZWZvcmUgPSByZS5zbGljZSgwLCBubC5yZVN0YXJ0KVxuICAgICAgY29uc3QgbmxGaXJzdCA9IHJlLnNsaWNlKG5sLnJlU3RhcnQsIG5sLnJlRW5kIC0gOClcbiAgICAgIGxldCBubEFmdGVyID0gcmUuc2xpY2UobmwucmVFbmQpXG4gICAgICBjb25zdCBubExhc3QgPSByZS5zbGljZShubC5yZUVuZCAtIDgsIG5sLnJlRW5kKSArIG5sQWZ0ZXJcblxuICAgICAgLy8gSGFuZGxlIG5lc3RlZCBzdHVmZiBsaWtlICooKi5qc3whKCouanNvbikpLCB3aGVyZSBvcGVuIHBhcmVuc1xuICAgICAgLy8gbWVhbiB0aGF0IHdlIHNob3VsZCAqbm90KiBpbmNsdWRlIHRoZSApIGluIHRoZSBiaXQgdGhhdCBpcyBjb25zaWRlcmVkXG4gICAgICAvLyBcImFmdGVyXCIgdGhlIG5lZ2F0ZWQgc2VjdGlvbi5cbiAgICAgIGNvbnN0IGNsb3NlUGFyZW5zQmVmb3JlID0gbmxCZWZvcmUuc3BsaXQoJyknKS5sZW5ndGhcbiAgICAgIGNvbnN0IG9wZW5QYXJlbnNCZWZvcmUgPSBubEJlZm9yZS5zcGxpdCgnKCcpLmxlbmd0aCAtIGNsb3NlUGFyZW5zQmVmb3JlXG4gICAgICBsZXQgY2xlYW5BZnRlciA9IG5sQWZ0ZXJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BlblBhcmVuc0JlZm9yZTsgaSsrKSB7XG4gICAgICAgIGNsZWFuQWZ0ZXIgPSBjbGVhbkFmdGVyLnJlcGxhY2UoL1xcKVsrKj9dPy8sICcnKVxuICAgICAgfVxuICAgICAgbmxBZnRlciA9IGNsZWFuQWZ0ZXJcblxuICAgICAgY29uc3QgZG9sbGFyID0gbmxBZnRlciA9PT0gJycgJiYgaXNTdWIgIT09IFNVQlBBUlNFID8gJyg/OiR8XFxcXC8pJyA6ICcnXG5cbiAgICAgIHJlID0gbmxCZWZvcmUgKyBubEZpcnN0ICsgbmxBZnRlciArIGRvbGxhciArIG5sTGFzdFxuICAgIH1cblxuICAgIC8vIGlmIHRoZSByZSBpcyBub3QgXCJcIiBhdCB0aGlzIHBvaW50LCB0aGVuIHdlIG5lZWQgdG8gbWFrZSBzdXJlXG4gICAgLy8gaXQgZG9lc24ndCBtYXRjaCBhZ2FpbnN0IGFuIGVtcHR5IHBhdGggcGFydC5cbiAgICAvLyBPdGhlcndpc2UgYS8qIHdpbGwgbWF0Y2ggYS8sIHdoaWNoIGl0IHNob3VsZCBub3QuXG4gICAgaWYgKHJlICE9PSAnJyAmJiBoYXNNYWdpYykge1xuICAgICAgcmUgPSAnKD89LiknICsgcmVcbiAgICB9XG5cbiAgICBpZiAoYWRkUGF0dGVyblN0YXJ0KSB7XG4gICAgICByZSA9IHBhdHRlcm5TdGFydCgpICsgcmVcbiAgICB9XG5cbiAgICAvLyBwYXJzaW5nIGp1c3QgYSBwaWVjZSBvZiBhIGxhcmdlciBwYXR0ZXJuLlxuICAgIGlmIChpc1N1YiA9PT0gU1VCUEFSU0UpIHtcbiAgICAgIHJldHVybiBbcmUsIGhhc01hZ2ljXVxuICAgIH1cblxuICAgIC8vIGlmIGl0J3Mgbm9jYXNlLCBhbmQgdGhlIGxjYXNlL3VwcGVyY2FzZSBkb24ndCBtYXRjaCwgaXQncyBtYWdpY1xuICAgIGlmIChvcHRpb25zLm5vY2FzZSAmJiAhaGFzTWFnaWMpIHtcbiAgICAgIGhhc01hZ2ljID0gcGF0dGVybi50b1VwcGVyQ2FzZSgpICE9PSBwYXR0ZXJuLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICAvLyBza2lwIHRoZSByZWdleHAgZm9yIG5vbi1tYWdpY2FsIHBhdHRlcm5zXG4gICAgLy8gdW5lc2NhcGUgYW55dGhpbmcgaW4gaXQsIHRob3VnaCwgc28gdGhhdCBpdCdsbCBiZVxuICAgIC8vIGFuIGV4YWN0IG1hdGNoIGFnYWluc3QgYSBmaWxlIGV0Yy5cbiAgICBpZiAoIWhhc01hZ2ljKSB7XG4gICAgICByZXR1cm4gZ2xvYlVuZXNjYXBlKHBhdHRlcm4pXG4gICAgfVxuXG4gICAgY29uc3QgZmxhZ3MgPSBvcHRpb25zLm5vY2FzZSA/ICdpJyA6ICcnXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBSZWdFeHAoJ14nICsgcmUgKyAnJCcsIGZsYWdzKSwge1xuICAgICAgICBfZ2xvYjogcGF0dGVybixcbiAgICAgICAgX3NyYzogcmUsXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVyKSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHNob3VsZCBiZSBpbXBvc3NpYmxlICovIHtcbiAgICAgIC8vIElmIGl0IHdhcyBhbiBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdGhlbiBpdCBjYW4ndCBtYXRjaFxuICAgICAgLy8gYW55dGhpbmcuICBUaGlzIHRyaWNrIGxvb2tzIGZvciBhIGNoYXJhY3RlciBhZnRlciB0aGUgZW5kIG9mXG4gICAgICAvLyB0aGUgc3RyaW5nLCB3aGljaCBpcyBvZiBjb3Vyc2UgaW1wb3NzaWJsZSwgZXhjZXB0IGluIG11bHRpLWxpbmVcbiAgICAgIC8vIG1vZGUsIGJ1dCBpdCdzIG5vdCBhIC9tIHJlZ2V4LlxuICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoJyQuJylcbiAgICB9XG4gIH1cblxuICBtYWtlUmUgKCkge1xuICAgIGlmICh0aGlzLnJlZ2V4cCB8fCB0aGlzLnJlZ2V4cCA9PT0gZmFsc2UpIHJldHVybiB0aGlzLnJlZ2V4cFxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgdGhpcy5zZXQgaXMgYSAyZCBhcnJheSBvZiBwYXJ0aWFsXG4gICAgLy8gcGF0dGVybiBzdHJpbmdzLCBvciBcIioqXCIuXG4gICAgLy9cbiAgICAvLyBJdCdzIGJldHRlciB0byB1c2UgLm1hdGNoKCkuICBUaGlzIGZ1bmN0aW9uIHNob3VsZG4ndFxuICAgIC8vIGJlIHVzZWQsIHJlYWxseSwgYnV0IGl0J3MgcHJldHR5IGNvbnZlbmllbnQgc29tZXRpbWVzLFxuICAgIC8vIHdoZW4geW91IGp1c3Qgd2FudCB0byB3b3JrIHdpdGggYSByZWdleC5cbiAgICBjb25zdCBzZXQgPSB0aGlzLnNldFxuXG4gICAgaWYgKCFzZXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlZ2V4cCA9IGZhbHNlXG4gICAgICByZXR1cm4gdGhpcy5yZWdleHBcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuXG4gICAgY29uc3QgdHdvU3RhciA9IG9wdGlvbnMubm9nbG9ic3RhciA/IHN0YXJcbiAgICAgIDogb3B0aW9ucy5kb3QgPyB0d29TdGFyRG90XG4gICAgICA6IHR3b1N0YXJOb0RvdFxuICAgIGNvbnN0IGZsYWdzID0gb3B0aW9ucy5ub2Nhc2UgPyAnaScgOiAnJ1xuXG4gICAgLy8gY29hbGVzY2UgZ2xvYnN0YXJzIGFuZCByZWdleHBpZnkgbm9uLWdsb2JzdGFyIHBhdHRlcm5zXG4gICAgLy8gaWYgaXQncyB0aGUgb25seSBpdGVtLCB0aGVuIHdlIGp1c3QgZG8gb25lIHR3b1N0YXJcbiAgICAvLyBpZiBpdCdzIHRoZSBmaXJzdCwgYW5kIHRoZXJlIGFyZSBtb3JlLCBwcmVwZW5kIChcXC98dHdvU3RhclxcLyk/IHRvIG5leHRcbiAgICAvLyBpZiBpdCdzIHRoZSBsYXN0LCBhcHBlbmQgKFxcL3R3b1N0YXJ8KSB0byBwcmV2aW91c1xuICAgIC8vIGlmIGl0J3MgaW4gdGhlIG1pZGRsZSwgYXBwZW5kIChcXC98XFwvdHdvU3RhclxcLykgdG8gcHJldmlvdXNcbiAgICAvLyB0aGVuIGZpbHRlciBvdXQgR0xPQlNUQVIgc3ltYm9sc1xuICAgIGxldCByZSA9IHNldC5tYXAocGF0dGVybiA9PiB7XG4gICAgICBwYXR0ZXJuID0gcGF0dGVybi5tYXAocCA9PlxuICAgICAgICB0eXBlb2YgcCA9PT0gJ3N0cmluZycgPyByZWdFeHBFc2NhcGUocClcbiAgICAgICAgOiBwID09PSBHTE9CU1RBUiA/IEdMT0JTVEFSXG4gICAgICAgIDogcC5fc3JjXG4gICAgICApLnJlZHVjZSgoc2V0LCBwKSA9PiB7XG4gICAgICAgIGlmICghKHNldFtzZXQubGVuZ3RoIC0gMV0gPT09IEdMT0JTVEFSICYmIHAgPT09IEdMT0JTVEFSKSkge1xuICAgICAgICAgIHNldC5wdXNoKHApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFxuICAgICAgfSwgW10pXG4gICAgICBwYXR0ZXJuLmZvckVhY2goKHAsIGkpID0+IHtcbiAgICAgICAgaWYgKHAgIT09IEdMT0JTVEFSIHx8IHBhdHRlcm5baS0xXSA9PT0gR0xPQlNUQVIpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIGlmIChwYXR0ZXJuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHBhdHRlcm5baSsxXSA9ICcoPzpcXFxcXFwvfCcgKyB0d29TdGFyICsgJ1xcXFxcXC8pPycgKyBwYXR0ZXJuW2krMV1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0dGVybltpXSA9IHR3b1N0YXJcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gcGF0dGVybi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgcGF0dGVybltpLTFdICs9ICcoPzpcXFxcXFwvfCcgKyB0d29TdGFyICsgJyk/J1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdHRlcm5baS0xXSArPSAnKD86XFxcXFxcL3xcXFxcXFwvJyArIHR3b1N0YXIgKyAnXFxcXFxcLyknICsgcGF0dGVybltpKzFdXG4gICAgICAgICAgcGF0dGVybltpKzFdID0gR0xPQlNUQVJcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBwYXR0ZXJuLmZpbHRlcihwID0+IHAgIT09IEdMT0JTVEFSKS5qb2luKCcvJylcbiAgICB9KS5qb2luKCd8JylcblxuICAgIC8vIG11c3QgbWF0Y2ggZW50aXJlIHBhdHRlcm5cbiAgICAvLyBlbmRpbmcgaW4gYSAqIG9yICoqIHdpbGwgbWFrZSBpdCBsZXNzIHN0cmljdC5cbiAgICByZSA9ICdeKD86JyArIHJlICsgJykkJ1xuXG4gICAgLy8gY2FuIG1hdGNoIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3Mgbm90IHRoaXMuXG4gICAgaWYgKHRoaXMubmVnYXRlKSByZSA9ICdeKD8hJyArIHJlICsgJykuKiQnXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWdleHAgPSBuZXcgUmVnRXhwKHJlLCBmbGFncylcbiAgICB9IGNhdGNoIChleCkgLyogaXN0YW5idWwgaWdub3JlIG5leHQgLSBzaG91bGQgYmUgaW1wb3NzaWJsZSAqLyB7XG4gICAgICB0aGlzLnJlZ2V4cCA9IGZhbHNlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2V4cFxuICB9XG5cbiAgbWF0Y2ggKGYsIHBhcnRpYWwgPSB0aGlzLnBhcnRpYWwpIHtcbiAgICB0aGlzLmRlYnVnKCdtYXRjaCcsIGYsIHRoaXMucGF0dGVybilcbiAgICAvLyBzaG9ydC1jaXJjdWl0IGluIHRoZSBjYXNlIG9mIGJ1c3RlZCB0aGluZ3MuXG4gICAgLy8gY29tbWVudHMsIGV0Yy5cbiAgICBpZiAodGhpcy5jb21tZW50KSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGhpcy5lbXB0eSkgcmV0dXJuIGYgPT09ICcnXG5cbiAgICBpZiAoZiA9PT0gJy8nICYmIHBhcnRpYWwpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zXG5cbiAgICAvLyB3aW5kb3dzOiBuZWVkIHRvIHVzZSAvLCBub3QgXFxcbiAgICBpZiAocGF0aC5zZXAgIT09ICcvJykge1xuICAgICAgZiA9IGYuc3BsaXQocGF0aC5zZXApLmpvaW4oJy8nKVxuICAgIH1cblxuICAgIC8vIHRyZWF0IHRoZSB0ZXN0IHBhdGggYXMgYSBzZXQgb2YgcGF0aHBhcnRzLlxuICAgIGYgPSBmLnNwbGl0KHNsYXNoU3BsaXQpXG4gICAgdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sICdzcGxpdCcsIGYpXG5cbiAgICAvLyBqdXN0IE9ORSBvZiB0aGUgcGF0dGVybiBzZXRzIGluIHRoaXMuc2V0IG5lZWRzIHRvIG1hdGNoXG4gICAgLy8gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHZhbGlkLiAgSWYgbmVnYXRpbmcsIHRoZW4ganVzdCBvbmVcbiAgICAvLyBtYXRjaCBtZWFucyB0aGF0IHdlIGhhdmUgZmFpbGVkLlxuICAgIC8vIEVpdGhlciB3YXksIHJldHVybiBvbiB0aGUgZmlyc3QgaGl0LlxuXG4gICAgY29uc3Qgc2V0ID0gdGhpcy5zZXRcbiAgICB0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwgJ3NldCcsIHNldClcblxuICAgIC8vIEZpbmQgdGhlIGJhc2VuYW1lIG9mIHRoZSBwYXRoIGJ5IGxvb2tpbmcgZm9yIHRoZSBsYXN0IG5vbi1lbXB0eSBzZWdtZW50XG4gICAgbGV0IGZpbGVuYW1lXG4gICAgZm9yIChsZXQgaSA9IGYubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGZpbGVuYW1lID0gZltpXVxuICAgICAgaWYgKGZpbGVuYW1lKSBicmVha1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gc2V0W2ldXG4gICAgICBsZXQgZmlsZSA9IGZcbiAgICAgIGlmIChvcHRpb25zLm1hdGNoQmFzZSAmJiBwYXR0ZXJuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBmaWxlID0gW2ZpbGVuYW1lXVxuICAgICAgfVxuICAgICAgY29uc3QgaGl0ID0gdGhpcy5tYXRjaE9uZShmaWxlLCBwYXR0ZXJuLCBwYXJ0aWFsKVxuICAgICAgaWYgKGhpdCkge1xuICAgICAgICBpZiAob3B0aW9ucy5mbGlwTmVnYXRlKSByZXR1cm4gdHJ1ZVxuICAgICAgICByZXR1cm4gIXRoaXMubmVnYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGlkbid0IGdldCBhbnkgaGl0cy4gIHRoaXMgaXMgc3VjY2VzcyBpZiBpdCdzIGEgbmVnYXRpdmVcbiAgICAvLyBwYXR0ZXJuLCBmYWlsdXJlIG90aGVyd2lzZS5cbiAgICBpZiAob3B0aW9ucy5mbGlwTmVnYXRlKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVcbiAgfVxuXG4gIHN0YXRpYyBkZWZhdWx0cyAoZGVmKSB7XG4gICAgcmV0dXJuIG1pbmltYXRjaC5kZWZhdWx0cyhkZWYpLk1pbmltYXRjaFxuICB9XG59XG5cbm1pbmltYXRjaC5NaW5pbWF0Y2ggPSBNaW5pbWF0Y2hcbiIsIi8qIVxuICogbm9ybWFsaXplLXBhdGggPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L25vcm1hbGl6ZS1wYXRoPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHBhdGgsIHN0cmlwVHJhaWxpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGlmIChwYXRoID09PSAnXFxcXCcgfHwgcGF0aCA9PT0gJy8nKSByZXR1cm4gJy8nO1xuXG4gIHZhciBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA8PSAxKSByZXR1cm4gcGF0aDtcblxuICAvLyBlbnN1cmUgdGhhdCB3aW4zMiBuYW1lc3BhY2VzIGhhcyB0d28gbGVhZGluZyBzbGFzaGVzLCBzbyB0aGF0IHRoZSBwYXRoIGlzXG4gIC8vIGhhbmRsZWQgcHJvcGVybHkgYnkgdGhlIHdpbjMyIHZlcnNpb24gb2YgcGF0aC5wYXJzZSgpIGFmdGVyIGJlaW5nIG5vcm1hbGl6ZWRcbiAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcodj12cy44NSkuYXNweCNuYW1lc3BhY2VzXG4gIHZhciBwcmVmaXggPSAnJztcbiAgaWYgKGxlbiA+IDQgJiYgcGF0aFszXSA9PT0gJ1xcXFwnKSB7XG4gICAgdmFyIGNoID0gcGF0aFsyXTtcbiAgICBpZiAoKGNoID09PSAnPycgfHwgY2ggPT09ICcuJykgJiYgcGF0aC5zbGljZSgwLCAyKSA9PT0gJ1xcXFxcXFxcJykge1xuICAgICAgcGF0aCA9IHBhdGguc2xpY2UoMik7XG4gICAgICBwcmVmaXggPSAnLy8nO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzZWdzID0gcGF0aC5zcGxpdCgvWy9cXFxcXSsvKTtcbiAgaWYgKHN0cmlwVHJhaWxpbmcgIT09IGZhbHNlICYmIHNlZ3Nbc2Vncy5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICBzZWdzLnBvcCgpO1xuICB9XG4gIHJldHVybiBwcmVmaXggKyBzZWdzLmpvaW4oJy8nKTtcbn07XG4iLCJ2YXIgd3JhcHB5ID0gcmVxdWlyZSgnd3JhcHB5Jylcbm1vZHVsZS5leHBvcnRzID0gd3JhcHB5KG9uY2UpXG5tb2R1bGUuZXhwb3J0cy5zdHJpY3QgPSB3cmFwcHkob25jZVN0cmljdClcblxub25jZS5wcm90byA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCAnb25jZScsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9uY2UodGhpcylcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICdvbmNlU3RyaWN0Jywge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gb25jZVN0cmljdCh0aGlzKVxuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pXG59KVxuXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZi5jYWxsZWQpIHJldHVybiBmLnZhbHVlXG4gICAgZi5jYWxsZWQgPSB0cnVlXG4gICAgcmV0dXJuIGYudmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbiAgZi5jYWxsZWQgPSBmYWxzZVxuICByZXR1cm4gZlxufVxuXG5mdW5jdGlvbiBvbmNlU3RyaWN0IChmbikge1xuICB2YXIgZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZi5jYWxsZWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZi5vbmNlRXJyb3IpXG4gICAgZi5jYWxsZWQgPSB0cnVlXG4gICAgcmV0dXJuIGYudmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbiAgdmFyIG5hbWUgPSBmbi5uYW1lIHx8ICdGdW5jdGlvbiB3cmFwcGVkIHdpdGggYG9uY2VgJ1xuICBmLm9uY2VFcnJvciA9IG5hbWUgKyBcIiBzaG91bGRuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlXCJcbiAgZi5jYWxsZWQgPSBmYWxzZVxuICByZXR1cm4gZlxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBwb3NpeChwYXRoKSB7XG5cdHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufVxuXG5mdW5jdGlvbiB3aW4zMihwYXRoKSB7XG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG5cdHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcXFwvXXsyfVteXFxcXFxcL10rW1xcXFxcXC9dK1teXFxcXFxcL10rKT8oW1xcXFxcXC9dKT8oW1xcc1xcU10qPykkLztcblx0dmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcblx0dmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcblx0dmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuXHQvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuXHRyZXR1cm4gQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xubW9kdWxlLmV4cG9ydHMucG9zaXggPSBwb3NpeDtcbm1vZHVsZS5leHBvcnRzLndpbjMyID0gd2luMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmICh0eXBlb2YgcHJvY2VzcyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAhcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0geyBuZXh0VGljazogbmV4dFRpY2sgfTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzc1xufVxuXG5mdW5jdGlvbiBuZXh0VGljayhmbiwgYXJnMSwgYXJnMiwgYXJnMykge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYWxsYmFja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG4gIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgYXJncywgaTtcbiAgc3dpdGNoIChsZW4pIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZm4pO1xuICBjYXNlIDI6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrT25lKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxKTtcbiAgICB9KTtcbiAgY2FzZSAzOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1R3bygpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMik7XG4gICAgfSk7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUaHJlZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgfSk7XG4gIGRlZmF1bHQ6XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICBhcmdzW2krK10gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGljaygpIHtcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG59XG5cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29kZXMgPSB7fTtcblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JUeXBlKGNvZGUsIG1lc3NhZ2UsIEJhc2UpIHtcbiAgaWYgKCFCYXNlKSB7XG4gICAgQmFzZSA9IEVycm9yXG4gIH1cblxuICBmdW5jdGlvbiBnZXRNZXNzYWdlIChhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMylcbiAgICB9XG4gIH1cblxuICBjbGFzcyBOb2RlRXJyb3IgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvciAoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgc3VwZXIoZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSk7XG4gICAgfVxuICB9XG5cbiAgTm9kZUVycm9yLnByb3RvdHlwZS5uYW1lID0gQmFzZS5uYW1lO1xuICBOb2RlRXJyb3IucHJvdG90eXBlLmNvZGUgPSBjb2RlO1xuXG4gIGNvZGVzW2NvZGVdID0gTm9kZUVycm9yO1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTAuOC4wL2xpYi9pbnRlcm5hbC9lcnJvcnMuanNcbmZ1bmN0aW9uIG9uZU9mKGV4cGVjdGVkLCB0aGluZykge1xuICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICBjb25zdCBsZW4gPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5tYXAoKGkpID0+IFN0cmluZyhpKSk7XG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgIHJldHVybiBgb25lIG9mICR7dGhpbmd9ICR7ZXhwZWN0ZWQuc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKX0sIG9yIGAgK1xuICAgICAgICAgICAgIGV4cGVjdGVkW2xlbiAtIDFdO1xuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICByZXR1cm4gYG9uZSBvZiAke3RoaW5nfSAke2V4cGVjdGVkWzBdfSBvciAke2V4cGVjdGVkWzFdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgb2YgJHt0aGluZ30gJHtleHBlY3RlZFswXX1gO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYG9mICR7dGhpbmd9ICR7U3RyaW5nKGV4cGVjdGVkKX1gO1xuICB9XG59XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9zdGFydHNXaXRoXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoLCBwb3MpIHtcblx0cmV0dXJuIHN0ci5zdWJzdHIoIXBvcyB8fCBwb3MgPCAwID8gMCA6ICtwb3MsIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG59XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9lbmRzV2l0aFxuZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2gsIHRoaXNfbGVuKSB7XG5cdGlmICh0aGlzX2xlbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXNfbGVuID4gc3RyLmxlbmd0aCkge1xuXHRcdHRoaXNfbGVuID0gc3RyLmxlbmd0aDtcblx0fVxuXHRyZXR1cm4gc3RyLnN1YnN0cmluZyh0aGlzX2xlbiAtIHNlYXJjaC5sZW5ndGgsIHRoaXNfbGVuKSA9PT0gc2VhcmNoO1xufVxuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvaW5jbHVkZXNcbmZ1bmN0aW9uIGluY2x1ZGVzKHN0ciwgc2VhcmNoLCBzdGFydCkge1xuICBpZiAodHlwZW9mIHN0YXJ0ICE9PSAnbnVtYmVyJykge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuXG4gIGlmIChzdGFydCArIHNlYXJjaC5sZW5ndGggPiBzdHIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHIuaW5kZXhPZihzZWFyY2gsIHN0YXJ0KSAhPT0gLTE7XG4gIH1cbn1cblxuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9PUFRfVkFMVUUnLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuICdUaGUgdmFsdWUgXCInICsgdmFsdWUgKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwiJyArIG5hbWUgKyAnXCInXG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsIGZ1bmN0aW9uIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSB7XG4gIC8vIGRldGVybWluZXI6ICdtdXN0IGJlJyBvciAnbXVzdCBub3QgYmUnXG4gIGxldCBkZXRlcm1pbmVyO1xuICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBzdGFydHNXaXRoKGV4cGVjdGVkLCAnbm90ICcpKSB7XG4gICAgZGV0ZXJtaW5lciA9ICdtdXN0IG5vdCBiZSc7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5yZXBsYWNlKC9ebm90IC8sICcnKTtcbiAgfSBlbHNlIHtcbiAgICBkZXRlcm1pbmVyID0gJ211c3QgYmUnO1xuICB9XG5cbiAgbGV0IG1zZztcbiAgaWYgKGVuZHNXaXRoKG5hbWUsICcgYXJndW1lbnQnKSkge1xuICAgIC8vIEZvciBjYXNlcyBsaWtlICdmaXJzdCBhcmd1bWVudCdcbiAgICBtc2cgPSBgVGhlICR7bmFtZX0gJHtkZXRlcm1pbmVyfSAke29uZU9mKGV4cGVjdGVkLCAndHlwZScpfWA7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZSA9IGluY2x1ZGVzKG5hbWUsICcuJykgPyAncHJvcGVydHknIDogJ2FyZ3VtZW50JztcbiAgICBtc2cgPSBgVGhlIFwiJHtuYW1lfVwiICR7dHlwZX0gJHtkZXRlcm1pbmVyfSAke29uZU9mKGV4cGVjdGVkLCAndHlwZScpfWA7XG4gIH1cblxuICBtc2cgKz0gYC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBhY3R1YWx9YDtcbiAgcmV0dXJuIG1zZztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YnLCAnc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ1RoZSAnICsgbmFtZSArICcgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCdcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRScsICdQcmVtYXR1cmUgY2xvc2UnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9ERVNUUk9ZRUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ0Nhbm5vdCBjYWxsICcgKyBuYW1lICsgJyBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkJztcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTVVMVElQTEVfQ0FMTEJBQ0snLCAnQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fQ0FOTk9UX1BJUEUnLCAnQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCcsICd3cml0ZSBhZnRlciBlbmQnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUycsICdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScsIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9VTktOT1dOX0VOQ09ESU5HJywgZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4gJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBhcmdcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQnLCAnc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMuY29kZXMgPSBjb2RlcztcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikga2V5cy5wdXNoKGtleSk7XG4gIHJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5yZXF1aXJlKCdpbmhlcml0cycpKER1cGxleCwgUmVhZGFibGUpO1xue1xuICAvLyBBbGxvdyB0aGUga2V5cyBhcnJheSB0byBiZSBHQydlZC5cbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xuICAgIH1cbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUJ1ZmZlcicsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKTtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlTGVuZ3RoJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGg7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gSWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcHJvY2Vzcy5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL19zdHJlYW1fdHJhbnNmb3JtJyk7XG5yZXF1aXJlKCdpbmhlcml0cycpKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKSByZXR1cm4gbmV3IFBhc3NUaHJvdWdoKG9wdGlvbnMpO1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiBFRWxpc3RlbmVyQ291bnQoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fSkuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZztcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gZGVidWcoKSB7fTtcbn1cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9idWZmZXJfbGlzdCcpO1xudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZScpLFxuICBnZXRIaWdoV2F0ZXJNYXJrID0gX3JlcXVpcmUuZ2V0SGlnaFdhdGVyTWFyaztcbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFLFxuICBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixcbiAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7XG5cbi8vIExhenkgbG9hZGVkIHRvIGltcHJvdmUgdGhlIHN0YXJ0dXAgcGVyZm9ybWFuY2UuXG52YXIgU3RyaW5nRGVjb2RlcjtcbnZhciBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3I7XG52YXIgZnJvbTtcbnJlcXVpcmUoJ2luaGVyaXRzJykoUmVhZGFibGUsIFN0cmVhbSk7XG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcbnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107XG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChBcnJheS5pc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSwgaXNEdXBsZXgpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICBpZiAodHlwZW9mIGlzRHVwbGV4ICE9PSAnYm9vbGVhbicpIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZ2V0SGlnaFdhdGVyTWFyayh0aGlzLCBvcHRpb25zLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywgaXNEdXBsZXgpO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuXG4gIC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG4gIHRoaXMuZW1pdENsb3NlID0gb3B0aW9ucy5lbWl0Q2xvc2UgIT09IGZhbHNlO1xuXG4gIC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZW5kJyAoYW5kIHBvdGVudGlhbGx5ICdmaW5pc2gnKVxuICB0aGlzLmF1dG9EZXN0cm95ID0gISFvcHRpb25zLmF1dG9EZXN0cm95O1xuXG4gIC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG4gIHRoaXMuYXdhaXREcmFpbiA9IDA7XG5cbiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuICB0aGlzLnJlYWRpbmdNb3JlID0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKTtcblxuICAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBSZWFkYWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNVxuICB2YXIgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgRHVwbGV4O1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZGVzdHJveSA9IG9wdGlvbnMuZGVzdHJveTtcbiAgfVxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5SZWFkYWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNiKGVycik7XG59O1xuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHNraXBDaHVua0NoZWNrO1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cbiAgICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UsIHNraXBDaHVua0NoZWNrKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgbnVsbCwgdHJ1ZSwgZmFsc2UpO1xufTtcbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIGRlYnVnKCdyZWFkYWJsZUFkZENodW5rJywgY2h1bmspO1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuICAgIGlmIChlcikge1xuICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihjaHVuaykgIT09IEJ1ZmZlci5wcm90b3R5cGUpIHtcbiAgICAgICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UKCkpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GKCkpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICAgIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgY2FuIHB1c2ggbW9yZSBkYXRhIGlmIHdlIGFyZSBiZWxvdyB0aGUgaGlnaFdhdGVyTWFyay5cbiAgLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWUgbW9yZSBieXRlcy5cbiAgLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCwgc3VjaCBhcyB0aGUgcmVwbC5cbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5sZW5ndGggPT09IDApO1xufVxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgfVxuICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xufVxuZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuaykge1xuICB2YXIgZXI7XG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2NodW5rJywgWydzdHJpbmcnLCAnQnVmZmVyJywgJ1VpbnQ4QXJyYXknXSwgY2h1bmspO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG4vLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdmFyIGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBkZWNvZGVyO1xuICAvLyBJZiBzZXRFbmNvZGluZyhudWxsKSwgZGVjb2Rlci5lbmNvZGluZyBlcXVhbHMgdXRmOFxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVuY29kaW5nO1xuXG4gIC8vIEl0ZXJhdGUgb3ZlciBjdXJyZW50IGJ1ZmZlciB0byBjb252ZXJ0IGFscmVhZHkgc3RvcmVkIEJ1ZmZlcnM6XG4gIHZhciBwID0gdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuaGVhZDtcbiAgdmFyIGNvbnRlbnQgPSAnJztcbiAgd2hpbGUgKHAgIT09IG51bGwpIHtcbiAgICBjb250ZW50ICs9IGRlY29kZXIud3JpdGUocC5kYXRhKTtcbiAgICBwID0gcC5uZXh0O1xuICB9XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIGlmIChjb250ZW50ICE9PSAnJykgdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChjb250ZW50KTtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGggPSBjb250ZW50Lmxlbmd0aDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBEb24ndCByYWlzZSB0aGUgaHdtID4gMUdCXG52YXIgTUFYX0hXTSA9IDB4NDAwMDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICAvLyBUT0RPKHJvbmFnKTogVGhyb3cgRVJSX1ZBTFVFX09VVF9PRl9SQU5HRS5cbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGEgYnVuY2ggb2YgZGF0YSBpbiB0aGUgYnVmZmVyLCB0aGVuIGp1c3QgdHJpZ2dlclxuICAvLyB0aGUgJ3JlYWRhYmxlJyBldmVudCBhbmQgbW92ZSBvbi5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmICgoc3RhdGUuaGlnaFdhdGVyTWFyayAhPT0gMCA/IHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIDogc3RhdGUubGVuZ3RoID4gMCkgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHN0YXRlLmxlbmd0aCA8PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICAgIHN0YXRlLmF3YWl0RHJhaW4gPSAwO1xuICB9XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cbiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO1xuICB9XG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG4gIHJldHVybiByZXQ7XG59O1xuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGRlYnVnKCdvbkVvZkNodW5rJyk7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIGlmIChzdGF0ZS5zeW5jKSB7XG4gICAgLy8gaWYgd2UgYXJlIHN5bmMsIHdhaXQgdW50aWwgbmV4dCB0aWNrIHRvIGVtaXQgdGhlIGRhdGEuXG4gICAgLy8gT3RoZXJ3aXNlIHdlIHJpc2sgZW1pdHRpbmcgZGF0YSBpbiB0aGUgZmxvdygpXG4gICAgLy8gdGhlIHJlYWRhYmxlIGNvZGUgdHJpZ2dlcnMgZHVyaW5nIGEgcmVhZCgpIGNhbGxcbiAgICBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC5cbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUubmVlZFJlYWRhYmxlLCBzdGF0ZS5lbWl0dGVkUmVhZGFibGUpO1xuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VtaXRSZWFkYWJsZV8nLCBzdGF0ZS5kZXN0cm95ZWQsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICBpZiAoIXN0YXRlLmRlc3Ryb3llZCAmJiAoc3RhdGUubGVuZ3RoIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIHN0cmVhbS5lbWl0KCdyZWFkYWJsZScpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gVGhlIHN0cmVhbSBuZWVkcyBhbm90aGVyIHJlYWRhYmxlIGV2ZW50IGlmXG4gIC8vIDEuIEl0IGlzIG5vdCBmbG93aW5nLCBhcyB0aGUgZmxvdyBtZWNoYW5pc20gd2lsbCB0YWtlXG4gIC8vICAgIGNhcmUgb2YgaXQuXG4gIC8vIDIuIEl0IGlzIG5vdCBlbmRlZC5cbiAgLy8gMy4gSXQgaXMgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmssIHNvIHdlIGNhbiBzY2hlZHVsZVxuICAvLyAgICBhbm90aGVyIHJlYWRhYmxlIGxhdGVyLlxuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIGZsb3coc3RyZWFtKTtcbn1cblxuLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nTW9yZSkge1xuICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICAvLyBBdHRlbXB0IHRvIHJlYWQgbW9yZSBkYXRhIGlmIHdlIHNob3VsZC5cbiAgLy9cbiAgLy8gVGhlIGNvbmRpdGlvbnMgZm9yIHJlYWRpbmcgbW9yZSBkYXRhIGFyZSAob25lIG9mKTpcbiAgLy8gLSBOb3QgZW5vdWdoIGRhdGEgYnVmZmVyZWQgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspLiBUaGUgbG9vcFxuICAvLyAgIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIHRoZSBidWZmZXIgd2l0aCBlbm91Z2ggZGF0YSBpZiBzdWNoIGRhdGFcbiAgLy8gICBpcyBhdmFpbGFibGUuIElmIGhpZ2hXYXRlck1hcmsgaXMgMCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgZmxvd2luZyBtb2RlXG4gIC8vICAgd2Ugc2hvdWxkIF9ub3RfIGF0dGVtcHQgdG8gYnVmZmVyIGFueSBleHRyYSBkYXRhLiBXZSdsbCBnZXQgbW9yZSBkYXRhXG4gIC8vICAgd2hlbiB0aGUgc3RyZWFtIGNvbnN1bWVyIGNhbGxzIHJlYWQoKSBpbnN0ZWFkLlxuICAvLyAtIE5vIGRhdGEgaW4gdGhlIGJ1ZmZlciwgYW5kIHRoZSBzdHJlYW0gaXMgaW4gZmxvd2luZyBtb2RlLiBJbiB0aGlzIG1vZGVcbiAgLy8gICB0aGUgbG9vcCBiZWxvdyBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgcmVhZCgpIGlzIGNhbGxlZC4gRmFpbGluZyB0b1xuICAvLyAgIGNhbGwgcmVhZCBoZXJlIHdvdWxkIGFib3J0IHRoZSBmbG93IGFuZCB0aGVyZSdzIG5vIG90aGVyIG1lY2hhbmlzbSBmb3JcbiAgLy8gICBjb250aW51aW5nIHRoZSBmbG93IGlmIHRoZSBzdHJlYW0gY29uc3VtZXIgaGFzIGp1c3Qgc3Vic2NyaWJlZCB0byB0aGVcbiAgLy8gICAnZGF0YScgZXZlbnQuXG4gIC8vXG4gIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBjb25kaXRpb25zIHRvIGtlZXAgcmVhZGluZyBkYXRhLCB0aGUgZm9sbG93aW5nXG4gIC8vIGNvbmRpdGlvbnMgcHJldmVudCB0aGUgZGF0YSBmcm9tIGJlaW5nIHJlYWQ6XG4gIC8vIC0gVGhlIHN0cmVhbSBoYXMgZW5kZWQgKHN0YXRlLmVuZGVkKS5cbiAgLy8gLSBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyAncmVhZCcgb3BlcmF0aW9uIChzdGF0ZS5yZWFkaW5nKS4gVGhpcyBpcyBhXG4gIC8vICAgY2FzZSB3aGVyZSB0aGUgdGhlIHN0cmVhbSBoYXMgY2FsbGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIF9yZWFkKClcbiAgLy8gICBtZXRob2QsIGJ1dCB0aGV5IGFyZSBwcm9jZXNzaW5nIHRoZSBjYWxsIGFzeW5jaHJvbm91c2x5IGFuZCBoYXZlIF9ub3RfXG4gIC8vICAgY2FsbGVkIHB1c2goKSB3aXRoIG5ldyBkYXRhLiBJbiB0aGlzIGNhc2Ugd2Ugc2tpcCBwZXJmb3JtaW5nIG1vcmVcbiAgLy8gICByZWFkKClzLiBUaGUgZXhlY3V0aW9uIGVuZHMgaW4gdGhpcyBtZXRob2QgYWdhaW4gYWZ0ZXIgdGhlIF9yZWFkKCkgZW5kc1xuICAvLyAgIHVwIGNhbGxpbmcgcHVzaCgpIHdpdGggbW9yZSBkYXRhLlxuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwKSkge1xuICAgIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKVxuICAgICAgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2U7XG59XG5cbi8vIGFic3RyYWN0IG1ldGhvZC4gIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguXG4vLyBmb3IgdmlydHVhbCAobm9uLXN0cmluZywgbm9uLWJ1ZmZlcikgc3RyZWFtcywgXCJsZW5ndGhcIiBpcyBzb21ld2hhdFxuLy8gYXJiaXRyYXJ5LCBhbmQgcGVyaGFwcyBub3QgdmVyeSBtZWFuaW5nZnVsLlxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfcmVhZCgpJykpO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHByb2Nlc3MubmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBpZiAodW5waXBlSW5mbyAmJiB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHVucGlwZUluZm8uaGFzVW5waXBlZCA9IHRydWU7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpO1xuICAgIC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgdW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuICBzcmMub24oJ2RhdGEnLCBvbmRhdGEpO1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGRlYnVnKCdkZXN0LndyaXRlJywgcmV0KTtcbiAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGVycm9yT3JEZXN0cm95KGRlc3QsIGVyKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKTtcbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuICByZXR1cm4gZGVzdDtcbn07XG5mdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHBpcGVPbkRyYWluRnVuY3Rpb25SZXN1bHQoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0ge1xuICAgIGhhc1VucGlwZWQ6IGZhbHNlXG4gIH07XG5cbiAgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7XG5cbiAgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzLCB7XG4gICAgICBoYXNVbnBpcGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGluZGV4ID0gaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzO1xuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyB1cGRhdGUgcmVhZGFibGVMaXN0ZW5pbmcgc28gdGhhdCByZXN1bWUoKSBtYXkgYmUgYSBuby1vcFxuICAgIC8vIGEgZmV3IGxpbmVzIGRvd24uIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgb25jZSgncmVhZGFibGUnKS5cbiAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7XG5cbiAgICAvLyBUcnkgc3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBkZWJ1Zygnb24gcmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLnJlYWRpbmcpO1xuICAgICAgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuUmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsIGV2LCBmbik7XG4gIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoZXYpIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIGlmIChldiA9PT0gJ3JlYWRhYmxlJyB8fCBldiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBzb21lb25lIHN0aWxsIGxpc3RlbmluZyB0b1xuICAgIC8vIHJlYWRhYmxlIGFuZCByZXNldCB0aGUgc3RhdGUuIEhvd2V2ZXIgdGhpcyBuZWVkcyB0byBoYXBwZW5cbiAgICAvLyBhZnRlciByZWFkYWJsZSBoYXMgYmVlbiBlbWl0dGVkIGJ1dCBiZWZvcmUgSS9PIChuZXh0VGljaykgdG9cbiAgICAvLyBzdXBwb3J0IG9uY2UoJ3JlYWRhYmxlJywgZm4pIGN5Y2xlcy4gVGhpcyBtZWFucyB0aGF0IGNhbGxpbmdcbiAgICAvLyByZXN1bWUgd2l0aGluIHRoZSBzYW1lIHRpY2sgd2lsbCBoYXZlIG5vXG4gICAgLy8gZWZmZWN0LlxuICAgIHByb2Nlc3MubmV4dFRpY2sodXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcsIHRoaXMpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuZnVuY3Rpb24gdXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcoc2VsZikge1xuICB2YXIgc3RhdGUgPSBzZWxmLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHNlbGYubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7XG4gIGlmIChzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgJiYgIXN0YXRlLnBhdXNlZCkge1xuICAgIC8vIGZsb3dpbmcgbmVlZHMgdG8gYmUgc2V0IHRvIHRydWUgbm93LCBvdGhlcndpc2VcbiAgICAvLyB0aGUgdXBjb21pbmcgcmVzdW1lIHdpbGwgbm90IGZsb3cuXG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG5cbiAgICAvLyBjcnVkZSB3YXkgdG8gY2hlY2sgaWYgd2Ugc2hvdWxkIHJlc3VtZVxuICB9IGVsc2UgaWYgKHNlbGYubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCkge1xuICAgIHNlbGYucmVzdW1lKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikge1xuICBkZWJ1ZygncmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwJyk7XG4gIHNlbGYucmVhZCgwKTtcbn1cblxuLy8gcGF1c2UoKSBhbmQgcmVzdW1lKCkgYXJlIHJlbW5hbnRzIG9mIHRoZSBsZWdhY3kgcmVhZGFibGUgc3RyZWFtIEFQSVxuLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLlxuUmVhZGFibGUucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpO1xuICAgIC8vIHdlIGZsb3cgb25seSBpZiB0aGVyZSBpcyBubyBvbmUgbGlzdGVuaW5nXG4gICAgLy8gZm9yIHJlYWRhYmxlLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBjYWxsXG4gICAgLy8gcmVzdW1lKClcbiAgICBzdGF0ZS5mbG93aW5nID0gIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nO1xuICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7XG4gIH1cbiAgc3RhdGUucGF1c2VkID0gZmFsc2U7XG4gIHJldHVybiB0aGlzO1xufTtcbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKHJlc3VtZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ3Jlc3VtZScsIHN0YXRlLnJlYWRpbmcpO1xuICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKTtcbn1cblxuLy8gd3JhcCBhbiBvbGQtc3R5bGUgc3RyZWFtIGFzIHRoZSBhc3luYyBkYXRhIHNvdXJjZS5cbi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS5cbi8vIEl0IGlzIGFuIHVnbHkgdW5mb3J0dW5hdGUgbWVzcyBvZiBoaXN0b3J5LlxuUmVhZGFibGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgX3RoaXMucHVzaChjaHVuayk7XG4gICAgfVxuICAgIF90aGlzLnB1c2gobnVsbCk7XG4gIH0pO1xuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIG1ldGhvZFdyYXAobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBtZXRob2RXcmFwUmV0dXJuRnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbVttZXRob2RdLmFwcGx5KHN0cmVhbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oaSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJveHkgY2VydGFpbiBpbXBvcnRhbnQgZXZlbnRzLlxuICBmb3IgKHZhciBuID0gMDsgbiA8IGtQcm94eUV2ZW50cy5sZW5ndGg7IG4rKykge1xuICAgIHN0cmVhbS5vbihrUHJveHlFdmVudHNbbl0sIHRoaXMuZW1pdC5iaW5kKHRoaXMsIGtQcm94eUV2ZW50c1tuXSkpO1xuICB9XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB0aGlzO1xufTtcbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3InKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcih0aGlzKTtcbiAgfTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlQnVmZmVyJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcjtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVGbG93aW5nJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChzdGF0ZSkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBzdGF0ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgdmFyIHJldDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7XG4gICAgLy8gcmVhZCBpdCBhbGwsIHRydW5jYXRlIHRoZSBsaXN0XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIHJldCA9IHN0YXRlLmJ1ZmZlci5qb2luKCcnKTtlbHNlIGlmIChzdGF0ZS5idWZmZXIubGVuZ3RoID09PSAxKSByZXQgPSBzdGF0ZS5idWZmZXIuZmlyc3QoKTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25zdW1lKG4sIHN0YXRlLmRlY29kZXIpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZW5kUmVhZGFibGUnLCBzdGF0ZS5lbmRFbWl0dGVkKTtcbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICBkZWJ1ZygnZW5kUmVhZGFibGVOVCcsIHN0YXRlLmVuZEVtaXR0ZWQsIHN0YXRlLmxlbmd0aCk7XG5cbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG4gICAgaWYgKHN0YXRlLmF1dG9EZXN0cm95KSB7XG4gICAgICAvLyBJbiBjYXNlIG9mIGR1cGxleCBzdHJlYW1zIHdlIG5lZWQgYSB3YXkgdG8gZGV0ZWN0XG4gICAgICAvLyBpZiB0aGUgd3JpdGFibGUgc2lkZSBpcyByZWFkeSBmb3IgYXV0b0Rlc3Ryb3kgYXMgd2VsbFxuICAgICAgdmFyIHdTdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgICAgIGlmICghd1N0YXRlIHx8IHdTdGF0ZS5hdXRvRGVzdHJveSAmJiB3U3RhdGUuZmluaXNoZWQpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLmZyb20gPSBmdW5jdGlvbiAoaXRlcmFibGUsIG9wdHMpIHtcbiAgICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmcm9tID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20nKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb20oUmVhZGFibGUsIGl0ZXJhYmxlLCBvcHRzKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vZXJyb3JzJykuY29kZXMsXG4gIEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEID0gX3JlcXVpcmUkY29kZXMuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gIEVSUl9NVUxUSVBMRV9DQUxMQkFDSyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxcbiAgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsXG4gIEVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMDtcbnZhciBEdXBsZXggPSByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5yZXF1aXJlKCdpbmhlcml0cycpKFRyYW5zZm9ybSwgRHVwbGV4KTtcbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcbiAgaWYgKGNiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRVJSX01VTFRJUExFX0NBTExCQUNLKCkpO1xuICB9XG4gIHRzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0cy53cml0ZWNiID0gbnVsbDtcbiAgaWYgKGRhdGEgIT0gbnVsbClcbiAgICAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICB0aGlzLnB1c2goZGF0YSk7XG4gIGNiKGVyKTtcbiAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcnMucmVhZGluZyA9IGZhbHNlO1xuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IHtcbiAgICBhZnRlclRyYW5zZm9ybTogYWZ0ZXJUcmFuc2Zvcm0uYmluZCh0aGlzKSxcbiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1pbmc6IGZhbHNlLFxuICAgIHdyaXRlY2I6IG51bGwsXG4gICAgd3JpdGVjaHVuazogbnVsbCxcbiAgICB3cml0ZWVuY29kaW5nOiBudWxsXG4gIH07XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHRoaXMuX3RyYW5zZm9ybSA9IG9wdGlvbnMudHJhbnNmb3JtO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuICBpZiAodHlwZW9mIHRoaXMuX2ZsdXNoID09PSAnZnVuY3Rpb24nICYmICF0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCkge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ190cmFuc2Zvcm0oKScpKTtcbn07XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07XG5cbi8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHRzLnRyYW5zZm9ybWluZyA9IHRydWU7XG4gICAgdGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssIHRzLndyaXRlZW5jb2RpbmcsIHRzLmFmdGVyVHJhbnNmb3JtKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBtYXJrIHRoYXQgd2UgbmVlZCBhIHRyYW5zZm9ybSwgc28gdGhhdCBhbnkgZGF0YSB0aGF0IGNvbWVzIGluXG4gICAgLy8gd2lsbCBnZXQgcHJvY2Vzc2VkLCBub3cgdGhhdCB3ZSd2ZSBhc2tlZCBmb3IgaXQuXG4gICAgdHMubmVlZFRyYW5zZm9ybSA9IHRydWU7XG4gIH1cbn07XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHtcbiAgICBjYihlcnIyKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgaWYgKGRhdGEgIT0gbnVsbClcbiAgICAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBUT0RPKEJyaWRnZUFSKTogV3JpdGUgYSB0ZXN0IGZvciB0aGVzZSB0d28gZXJyb3IgY2FzZXNcbiAgLy8gaWYgdGhlcmUncyBub3RoaW5nIGluIHRoZSB3cml0ZSBidWZmZXIsIHRoZW4gdGhhdCBtZWFuc1xuICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWRcbiAgaWYgKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpIHRocm93IG5ldyBFUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAoKTtcbiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORygpO1xuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuXG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICBvbkNvcmtlZEZpbmlzaChfdGhpcywgc3RhdGUpO1xuICB9O1xufVxuLyogPC9yZXBsYWNlbWVudD4gKi9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge30pLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUnKSxcbiAgZ2V0SGlnaFdhdGVyTWFyayA9IF9yZXF1aXJlLmdldEhpZ2hXYXRlck1hcms7XG52YXIgX3JlcXVpcmUkY29kZXMgPSByZXF1aXJlKCcuLi9lcnJvcnMnKS5jb2RlcyxcbiAgRVJSX0lOVkFMSURfQVJHX1RZUEUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgRVJSX01VTFRJUExFX0NBTExCQUNLID0gX3JlcXVpcmUkY29kZXMuRVJSX01VTFRJUExFX0NBTExCQUNLLFxuICBFUlJfU1RSRUFNX0NBTk5PVF9QSVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxcbiAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRCxcbiAgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsXG4gIEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsXG4gIEVSUl9VTktOT1dOX0VOQ09ESU5HID0gX3JlcXVpcmUkY29kZXMuRVJSX1VOS05PV05fRU5DT0RJTkc7XG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcbnJlcXVpcmUoJ2luaGVyaXRzJykoV3JpdGFibGUsIFN0cmVhbSk7XG5mdW5jdGlvbiBub3AoKSB7fVxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0sIGlzRHVwbGV4KSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLFxuICAvLyBlLmcuIG9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlIHZzLiBvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZSwgZXRjLlxuICBpZiAodHlwZW9mIGlzRHVwbGV4ICE9PSAnYm9vbGVhbicpIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKHRoaXMsIG9wdGlvbnMsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCBpc0R1cGxleCk7XG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7XG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcbiAgdGhpcy5lbmRpbmcgPSBmYWxzZTtcbiAgLy8gd2hlbiBlbmQoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZCByZXR1cm5lZFxuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuXG4gIC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcbiAgdGhpcy5jb3JrZWQgPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcblxuICAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG4gIHRoaXMud3JpdGVsZW4gPSAwO1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG4gIHRoaXMuZW1pdENsb3NlID0gb3B0aW9ucy5lbWl0Q2xvc2UgIT09IGZhbHNlO1xuXG4gIC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZmluaXNoJyAoYW5kIHBvdGVudGlhbGx5ICdlbmQnKVxuICB0aGlzLmF1dG9EZXN0cm95ID0gISFvcHRpb25zLmF1dG9EZXN0cm95O1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uIHdyaXRhYmxlU3RhdGVCdWZmZXJHZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG4vLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cbnZhciByZWFsSGFzSW5zdGFuY2U7XG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiByZWFsSGFzSW5zdGFuY2Uob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG5cbiAgLy8gQ2hlY2tpbmcgZm9yIGEgU3RyZWFtLkR1cGxleCBpbnN0YW5jZSBpcyBmYXN0ZXIgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZVxuICAvLyB0aGUgV3JpdGFibGVTdGF0ZSBjb25zdHJ1Y3RvciwgYXQgbGVhc3Qgd2l0aCBWOCA2LjVcbiAgdmFyIGlzRHVwbGV4ID0gdGhpcyBpbnN0YW5jZW9mIER1cGxleDtcbiAgaWYgKCFpc0R1cGxleCAmJiAhcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpKSByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICBlcnJvck9yRGVzdHJveSh0aGlzLCBuZXcgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSgpKTtcbn07XG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EKCk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIENoZWNrcyB0aGF0IGEgdXNlci1zdXBwbGllZCBjaHVuayBpcyB2YWxpZCwgZXNwZWNpYWxseSBmb3IgdGhlIHBhcnRpY3VsYXJcbi8vIG1vZGUgdGhlIHN0cmVhbSBpcyBpbi4gQ3VycmVudGx5IHRoaXMgbWVhbnMgdGhhdCBgbnVsbGAgaXMgbmV2ZXIgYWNjZXB0ZWRcbi8vIGFuZCB1bmRlZmluZWQvbm9uLXN0cmluZyB2YWx1ZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiBvYmplY3QgbW9kZS5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciBlcjtcbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUygpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnY2h1bmsnLCBbJ3N0cmluZycsICdCdWZmZXInXSwgY2h1bmspO1xuICB9XG4gIGlmIChlcikge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG4gIGlmIChzdGF0ZS5lbmRpbmcpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07XG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrKztcbn07XG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgRVJSX1VOS05PV05fRU5DT0RJTkcoZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVCdWZmZXInLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCk7XG4gIH1cbn0pO1xuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHN0YXRlLm9ud3JpdGUobmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCd3cml0ZScpKTtlbHNlIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcbiAgaWYgKHN5bmMpIHtcbiAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBzeW5jaHJvbm91c2x5XG4gICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2tcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBidXQgZmluaXNoIG11c3RcbiAgICAvLyBhbHdheXMgZm9sbG93IGVycm9yXG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpO1xuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSkgfHwgc3RyZWFtLmRlc3Ryb3llZDtcbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuICBpZiAoc3RyZWFtLl93cml0ZXYgJiYgZW50cnkgJiYgZW50cnkubmV4dCkge1xuICAgIC8vIEZhc3QgY2FzZSwgd3JpdGUgZXZlcnl0aGluZyB1c2luZyBfd3JpdGV2KClcbiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50O1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobCk7XG4gICAgdmFyIGhvbGRlciA9IHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZTtcbiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTtcbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHZhciBhbGxCdWZmZXJzID0gdHJ1ZTtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudC0tO1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfd3JpdGUoKScpKTtcbn07XG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xuICByZXR1cm4gdGhpcztcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7XG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVycik7XG4gICAgfVxuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicgJiYgIXN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxGaW5hbCwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgICAgaWYgKHN0YXRlLmF1dG9EZXN0cm95KSB7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgICAgLy8gaWYgdGhlIHJlYWRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGxcbiAgICAgICAgdmFyIHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgICAgICAgaWYgKCFyU3RhdGUgfHwgclN0YXRlLmF1dG9EZXN0cm95ICYmIHJTdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICBpZiAoY2IpIHtcbiAgICBpZiAoc3RhdGUuZmluaXNoZWQpIHByb2Nlc3MubmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cblxuICAvLyByZXVzZSB0aGUgZnJlZSBjb3JrUmVxLlxuICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuV3JpdGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBfT2JqZWN0JHNldFByb3RvdHlwZU87XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7IHZhciBrZXkgPSBfdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTsgcmV0dXJuIHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7IGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDsgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7IHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpOyBpZiAodHlwZW9mIHJlcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlczsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOyB9XG52YXIgZmluaXNoZWQgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcbnZhciBrTGFzdFJlc29sdmUgPSBTeW1ib2woJ2xhc3RSZXNvbHZlJyk7XG52YXIga0xhc3RSZWplY3QgPSBTeW1ib2woJ2xhc3RSZWplY3QnKTtcbnZhciBrRXJyb3IgPSBTeW1ib2woJ2Vycm9yJyk7XG52YXIga0VuZGVkID0gU3ltYm9sKCdlbmRlZCcpO1xudmFyIGtMYXN0UHJvbWlzZSA9IFN5bWJvbCgnbGFzdFByb21pc2UnKTtcbnZhciBrSGFuZGxlUHJvbWlzZSA9IFN5bWJvbCgnaGFuZGxlUHJvbWlzZScpO1xudmFyIGtTdHJlYW0gPSBTeW1ib2woJ3N0cmVhbScpO1xuZnVuY3Rpb24gY3JlYXRlSXRlclJlc3VsdCh2YWx1ZSwgZG9uZSkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBkb25lOiBkb25lXG4gIH07XG59XG5mdW5jdGlvbiByZWFkQW5kUmVzb2x2ZShpdGVyKSB7XG4gIHZhciByZXNvbHZlID0gaXRlcltrTGFzdFJlc29sdmVdO1xuICBpZiAocmVzb2x2ZSAhPT0gbnVsbCkge1xuICAgIHZhciBkYXRhID0gaXRlcltrU3RyZWFtXS5yZWFkKCk7XG4gICAgLy8gd2UgZGVmZXIgaWYgZGF0YSBpcyBudWxsXG4gICAgLy8gd2UgY2FuIGJlIGV4cGVjdGluZyBlaXRoZXIgJ2VuZCcgb3JcbiAgICAvLyAnZXJyb3InXG4gICAgaWYgKGRhdGEgIT09IG51bGwpIHtcbiAgICAgIGl0ZXJba0xhc3RQcm9taXNlXSA9IG51bGw7XG4gICAgICBpdGVyW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgaXRlcltrTGFzdFJlamVjdF0gPSBudWxsO1xuICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KGRhdGEsIGZhbHNlKSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBvblJlYWRhYmxlKGl0ZXIpIHtcbiAgLy8gd2Ugd2FpdCBmb3IgdGhlIG5leHQgdGljaywgYmVjYXVzZSBpdCBtaWdodFxuICAvLyBlbWl0IGFuIGVycm9yIHdpdGggcHJvY2Vzcy5uZXh0VGlja1xuICBwcm9jZXNzLm5leHRUaWNrKHJlYWRBbmRSZXNvbHZlLCBpdGVyKTtcbn1cbmZ1bmN0aW9uIHdyYXBGb3JOZXh0KGxhc3RQcm9taXNlLCBpdGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbGFzdFByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoaXRlcltrRW5kZWRdKSB7XG4gICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXRlcltrSGFuZGxlUHJvbWlzZV0ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9LCByZWplY3QpO1xuICB9O1xufVxudmFyIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24gKCkge30pO1xudmFyIFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZigoX09iamVjdCRzZXRQcm90b3R5cGVPID0ge1xuICBnZXQgc3RyZWFtKCkge1xuICAgIHJldHVybiB0aGlzW2tTdHJlYW1dO1xuICB9LFxuICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgLy8gaWYgd2UgaGF2ZSBkZXRlY3RlZCBhbiBlcnJvciBpbiB0aGUgbWVhbndoaWxlXG4gICAgLy8gcmVqZWN0IHN0cmFpZ2h0IGF3YXlcbiAgICB2YXIgZXJyb3IgPSB0aGlzW2tFcnJvcl07XG4gICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgICBpZiAodGhpc1trRW5kZWRdKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgfVxuICAgIGlmICh0aGlzW2tTdHJlYW1dLmRlc3Ryb3llZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byBkZWZlciB2aWEgbmV4dFRpY2sgYmVjYXVzZSBpZiAuZGVzdHJveShlcnIpIGlzXG4gICAgICAvLyBjYWxsZWQsIHRoZSBlcnJvciB3aWxsIGJlIGVtaXR0ZWQgdmlhIG5leHRUaWNrLCBhbmRcbiAgICAgIC8vIHdlIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGVyZSBpcyBubyBlcnJvciBsaW5nZXJpbmcgYXJvdW5kXG4gICAgICAvLyB3YWl0aW5nIHRvIGJlIGVtaXR0ZWQuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoX3RoaXNba0Vycm9yXSkge1xuICAgICAgICAgICAgcmVqZWN0KF90aGlzW2tFcnJvcl0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgbXVsdGlwbGUgbmV4dCgpIGNhbGxzXG4gICAgLy8gd2Ugd2lsbCB3YWl0IGZvciB0aGUgcHJldmlvdXMgUHJvbWlzZSB0byBmaW5pc2hcbiAgICAvLyB0aGlzIGxvZ2ljIGlzIG9wdGltaXplZCB0byBzdXBwb3J0IGZvciBhd2FpdCBsb29wcyxcbiAgICAvLyB3aGVyZSBuZXh0KCkgaXMgb25seSBjYWxsZWQgb25jZSBhdCBhIHRpbWVcbiAgICB2YXIgbGFzdFByb21pc2UgPSB0aGlzW2tMYXN0UHJvbWlzZV07XG4gICAgdmFyIHByb21pc2U7XG4gICAgaWYgKGxhc3RQcm9taXNlKSB7XG4gICAgICBwcm9taXNlID0gbmV3IFByb21pc2Uod3JhcEZvck5leHQobGFzdFByb21pc2UsIHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFzdCBwYXRoIG5lZWRlZCB0byBzdXBwb3J0IG11bHRpcGxlIHRoaXMucHVzaCgpXG4gICAgICAvLyB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIG5leHQoKSBxdWV1ZVxuICAgICAgdmFyIGRhdGEgPSB0aGlzW2tTdHJlYW1dLnJlYWQoKTtcbiAgICAgIGlmIChkYXRhICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgICAgfVxuICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHRoaXNba0hhbmRsZVByb21pc2VdKTtcbiAgICB9XG4gICAgdGhpc1trTGFzdFByb21pc2VdID0gcHJvbWlzZTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgU3ltYm9sLmFzeW5jSXRlcmF0b3IsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgXCJyZXR1cm5cIiwgZnVuY3Rpb24gX3JldHVybigpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG4gIC8vIGRlc3Ryb3koZXJyLCBjYikgaXMgYSBwcml2YXRlIEFQSVxuICAvLyB3ZSBjYW4gZ3VhcmFudGVlIHdlIGhhdmUgdGhhdCBoZXJlLCBiZWNhdXNlIHdlIGNvbnRyb2wgdGhlXG4gIC8vIFJlYWRhYmxlIGNsYXNzIHRoaXMgaXMgYXR0YWNoZWQgdG9cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBfdGhpczJba1N0cmVhbV0uZGVzdHJveShudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgfSk7XG4gIH0pO1xufSksIF9PYmplY3Qkc2V0UHJvdG90eXBlTyksIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUpO1xudmFyIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9IGZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcihzdHJlYW0pIHtcbiAgdmFyIF9PYmplY3QkY3JlYXRlO1xuICB2YXIgaXRlcmF0b3IgPSBPYmplY3QuY3JlYXRlKFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgKF9PYmplY3QkY3JlYXRlID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga1N0cmVhbSwge1xuICAgIHZhbHVlOiBzdHJlYW0sXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZXNvbHZlLCB7XG4gICAgdmFsdWU6IG51bGwsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZWplY3QsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRXJyb3IsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRW5kZWQsIHtcbiAgICB2YWx1ZTogc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0hhbmRsZVByb21pc2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGl0ZXJhdG9yW2tTdHJlYW1dLnJlYWQoKTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlc29sdmVdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KGRhdGEsIGZhbHNlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlc29sdmVdID0gcmVzb2x2ZTtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gcmVqZWN0O1xuICAgICAgfVxuICAgIH0sXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9PYmplY3QkY3JlYXRlKSk7XG4gIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICBmaW5pc2hlZChzdHJlYW0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlICE9PSAnRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UnKSB7XG4gICAgICB2YXIgcmVqZWN0ID0gaXRlcmF0b3Jba0xhc3RSZWplY3RdO1xuICAgICAgLy8gcmVqZWN0IGlmIHdlIGFyZSB3YWl0aW5nIGZvciBkYXRhIGluIHRoZSBQcm9taXNlXG4gICAgICAvLyByZXR1cm5lZCBieSBuZXh0KCkgYW5kIHN0b3JlIHRoZSBlcnJvclxuICAgICAgaWYgKHJlamVjdCAhPT0gbnVsbCkge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgaXRlcmF0b3Jba0Vycm9yXSA9IGVycjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHJlc29sdmUgPSBpdGVyYXRvcltrTGFzdFJlc29sdmVdO1xuICAgIGlmIChyZXNvbHZlICE9PSBudWxsKSB7XG4gICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9XG4gICAgaXRlcmF0b3Jba0VuZGVkXSA9IHRydWU7XG4gIH0pO1xuICBzdHJlYW0ub24oJ3JlYWRhYmxlJywgb25SZWFkYWJsZS5iaW5kKG51bGwsIGl0ZXJhdG9yKSk7XG4gIHJldHVybiBpdGVyYXRvcjtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcjsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gbnVsbCAhPSBhcmd1bWVudHNbaV0gPyBhcmd1bWVudHNbaV0gOiB7fTsgaSAlIDIgPyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KGFyZykgeyB2YXIga2V5ID0gX3RvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7IHJldHVybiB0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkgeyBpZiAodHlwZW9mIGlucHV0ICE9PSBcIm9iamVjdFwiIHx8IGlucHV0ID09PSBudWxsKSByZXR1cm4gaW5wdXQ7IHZhciBwcmltID0gaW5wdXRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHByaW0gIT09IHVuZGVmaW5lZCkgeyB2YXIgcmVzID0gcHJpbS5jYWxsKGlucHV0LCBoaW50IHx8IFwiZGVmYXVsdFwiKTsgaWYgKHR5cGVvZiByZXMgIT09IFwib2JqZWN0XCIpIHJldHVybiByZXM7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKGhpbnQgPT09IFwic3RyaW5nXCIgPyBTdHJpbmcgOiBOdW1iZXIpKGlucHV0KTsgfVxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnYnVmZmVyJyksXG4gIEJ1ZmZlciA9IF9yZXF1aXJlLkJ1ZmZlcjtcbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCd1dGlsJyksXG4gIGluc3BlY3QgPSBfcmVxdWlyZTIuaW5zcGVjdDtcbnZhciBjdXN0b20gPSBpbnNwZWN0ICYmIGluc3BlY3QuY3VzdG9tIHx8ICdpbnNwZWN0JztcbmZ1bmN0aW9uIGNvcHlCdWZmZXIoc3JjLCB0YXJnZXQsIG9mZnNldCkge1xuICBCdWZmZXIucHJvdG90eXBlLmNvcHkuY2FsbChzcmMsIHRhcmdldCwgb2Zmc2V0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnVmZmVyTGlzdCk7XG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuICBfY3JlYXRlQ2xhc3MoQnVmZmVyTGlzdCwgW3tcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogbnVsbFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICAgIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5zaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogdGhpcy5oZWFkXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hpZnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnQoKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgLS10aGlzLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiam9pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBqb2luKHMpIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG4gICAgICB3aGlsZSAocCA9IHAubmV4dCkgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb25jYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICAgIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobiA+Pj4gMCk7XG4gICAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICAgIHZhciBpID0gMDtcbiAgICAgIHdoaWxlIChwKSB7XG4gICAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgICBpICs9IHAuZGF0YS5sZW5ndGg7XG4gICAgICAgIHAgPSBwLm5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBvciBjaGFyYWN0ZXJzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG4gIH0sIHtcbiAgICBrZXk6IFwiY29uc3VtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdW1lKG4sIGhhc1N0cmluZ3MpIHtcbiAgICAgIHZhciByZXQ7XG4gICAgICBpZiAobiA8IHRoaXMuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBgc2xpY2VgIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgICByZXQgPSB0aGlzLmhlYWQuZGF0YS5zbGljZSgwLCBuKTtcbiAgICAgICAgdGhpcy5oZWFkLmRhdGEgPSB0aGlzLmhlYWQuZGF0YS5zbGljZShuKTtcbiAgICAgIH0gZWxzZSBpZiAobiA9PT0gdGhpcy5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vIEZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaC5cbiAgICAgICAgcmV0ID0gdGhpcy5zaGlmdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyLlxuICAgICAgICByZXQgPSBoYXNTdHJpbmdzID8gdGhpcy5fZ2V0U3RyaW5nKG4pIDogdGhpcy5fZ2V0QnVmZmVyKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZmlyc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlyc3QoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgfVxuXG4gICAgLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0U3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRTdHJpbmcobikge1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgYyA9IDE7XG4gICAgICB2YXIgcmV0ID0gcC5kYXRhO1xuICAgICAgbiAtPSByZXQubGVuZ3RoO1xuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICAgICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjtcbiAgICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICAgICAgbiAtPSBuYjtcbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICAgICsrYztcbiAgICAgICAgICAgIGlmIChwLm5leHQpIHRoaXMuaGVhZCA9IHAubmV4dDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZCA9IHA7XG4gICAgICAgICAgICBwLmRhdGEgPSBzdHIuc2xpY2UobmIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICArK2M7XG4gICAgICB9XG4gICAgICB0aGlzLmxlbmd0aCAtPSBjO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRCdWZmZXIobikge1xuICAgICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuKTtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgcC5kYXRhLmNvcHkocmV0KTtcbiAgICAgIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICAgIHZhciBidWYgPSBwLmRhdGE7XG4gICAgICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICAgICAgbiAtPSBuYjtcbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICsrYztcbiAgICAgICAgICAgIGlmIChwLm5leHQpIHRoaXMuaGVhZCA9IHAubmV4dDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZCA9IHA7XG4gICAgICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICArK2M7XG4gICAgICB9XG4gICAgICB0aGlzLmxlbmd0aCAtPSBjO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxpbmtlZCBsaXN0IG9ubHkgc2hvd3MgdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuICB9LCB7XG4gICAga2V5OiBjdXN0b20sXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF8sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBpbnNwZWN0KHRoaXMsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgIC8vIE9ubHkgaW5zcGVjdCBvbmUgbGV2ZWwuXG4gICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAvLyBJdCBzaG91bGQgbm90IHJlY3Vyc2UuXG4gICAgICAgIGN1c3RvbUluc3BlY3Q6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpOyIsIid1c2Ugc3RyaWN0JztcblxuLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuZnVuY3Rpb24gZGVzdHJveShlcnIsIGNiKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKCFjYiAmJiBlcnIpIHtcbiAgICAgIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JBbmRDbG9zZU5ULCBfdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn1cbmZ1bmN0aW9uIGVtaXRFcnJvckFuZENsb3NlTlQoc2VsZiwgZXJyKSB7XG4gIGVtaXRFcnJvck5UKHNlbGYsIGVycik7XG4gIGVtaXRDbG9zZU5UKHNlbGYpO1xufVxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBpZiAoc2VsZi5fd3JpdGFibGVTdGF0ZSAmJiAhc2VsZi5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2UpIHJldHVybjtcbiAgaWYgKHNlbGYuX3JlYWRhYmxlU3RhdGUgJiYgIXNlbGYuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlKSByZXR1cm47XG4gIHNlbGYuZW1pdCgnY2xvc2UnKTtcbn1cbmZ1bmN0aW9uIHVuZGVzdHJveSgpIHtcbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuZnVuY3Rpb24gZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcnIpIHtcbiAgLy8gV2UgaGF2ZSB0ZXN0cyB0aGF0IHJlbHkgb24gZXJyb3JzIGJlaW5nIGVtaXR0ZWRcbiAgLy8gaW4gdGhlIHNhbWUgdGljaywgc28gY2hhbmdpbmcgdGhpcyBpcyBzZW12ZXIgbWFqb3IuXG4gIC8vIEZvciBub3cgd2hlbiB5b3Ugb3B0LWluIHRvIGF1dG9EZXN0cm95IHdlIGFsbG93XG4gIC8vIHRoZSBlcnJvciB0byBiZSBlbWl0dGVkIG5leHRUaWNrLiBJbiBhIGZ1dHVyZVxuICAvLyBzZW12ZXIgbWFqb3IgdXBkYXRlIHdlIHNob3VsZCBjaGFuZ2UgdGhlIGRlZmF1bHQgdG8gdGhpcy5cblxuICB2YXIgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICBpZiAoclN0YXRlICYmIHJTdGF0ZS5hdXRvRGVzdHJveSB8fCB3U3RhdGUgJiYgd1N0YXRlLmF1dG9EZXN0cm95KSBzdHJlYW0uZGVzdHJveShlcnIpO2Vsc2Ugc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZXN0cm95OiBkZXN0cm95LFxuICB1bmRlc3Ryb3k6IHVuZGVzdHJveSxcbiAgZXJyb3JPckRlc3Ryb3k6IGVycm9yT3JEZXN0cm95XG59OyIsIi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvZW5kLW9mLXN0cmVhbSB3aXRoXG4vLyBwZXJtaXNzaW9uIGZyb20gdGhlIGF1dGhvciwgTWF0aGlhcyBCdXVzIChAbWFmaW50b3NoKS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UgPSByZXF1aXJlKCcuLi8uLi8uLi9lcnJvcnMnKS5jb2Rlcy5FUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtcbmZ1bmN0aW9uIG9uY2UoY2FsbGJhY2spIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7XG4gIH07XG59XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIGVvcyhzdHJlYW0sIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVvcyhzdHJlYW0sIG51bGwsIG9wdHMpO1xuICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICB2YXIgcmVhZGFibGUgPSBvcHRzLnJlYWRhYmxlIHx8IG9wdHMucmVhZGFibGUgIT09IGZhbHNlICYmIHN0cmVhbS5yZWFkYWJsZTtcbiAgdmFyIHdyaXRhYmxlID0gb3B0cy53cml0YWJsZSB8fCBvcHRzLndyaXRhYmxlICE9PSBmYWxzZSAmJiBzdHJlYW0ud3JpdGFibGU7XG4gIHZhciBvbmxlZ2FjeWZpbmlzaCA9IGZ1bmN0aW9uIG9ubGVnYWN5ZmluaXNoKCkge1xuICAgIGlmICghc3RyZWFtLndyaXRhYmxlKSBvbmZpbmlzaCgpO1xuICB9O1xuICB2YXIgd3JpdGFibGVFbmRlZCA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSAmJiBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ7XG4gIHZhciBvbmZpbmlzaCA9IGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIHdyaXRhYmxlID0gZmFsc2U7XG4gICAgd3JpdGFibGVFbmRlZCA9IHRydWU7XG4gICAgaWYgKCFyZWFkYWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuICB9O1xuICB2YXIgcmVhZGFibGVFbmRlZCA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZSAmJiBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZDtcbiAgdmFyIG9uZW5kID0gZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgcmVhZGFibGUgPSBmYWxzZTtcbiAgICByZWFkYWJsZUVuZGVkID0gdHJ1ZTtcbiAgICBpZiAoIXdyaXRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG4gIH07XG4gIHZhciBvbmVycm9yID0gZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgfTtcbiAgdmFyIG9uY2xvc2UgPSBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIHZhciBlcnI7XG4gICAgaWYgKHJlYWRhYmxlICYmICFyZWFkYWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fcmVhZGFibGVTdGF0ZSB8fCAhc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG4gICAgaWYgKHdyaXRhYmxlICYmICF3cml0YWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fd3JpdGFibGVTdGF0ZSB8fCAhc3RyZWFtLl93cml0YWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG4gIH07XG4gIHZhciBvbnJlcXVlc3QgPSBmdW5jdGlvbiBvbnJlcXVlc3QoKSB7XG4gICAgc3RyZWFtLnJlcS5vbignZmluaXNoJywgb25maW5pc2gpO1xuICB9O1xuICBpZiAoaXNSZXF1ZXN0KHN0cmVhbSkpIHtcbiAgICBzdHJlYW0ub24oJ2NvbXBsZXRlJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5vbignYWJvcnQnLCBvbmNsb3NlKTtcbiAgICBpZiAoc3RyZWFtLnJlcSkgb25yZXF1ZXN0KCk7ZWxzZSBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpO1xuICB9IGVsc2UgaWYgKHdyaXRhYmxlICYmICFzdHJlYW0uX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAvLyBsZWdhY3kgc3RyZWFtc1xuICAgIHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5vbignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG4gIH1cbiAgc3RyZWFtLm9uKCdlbmQnLCBvbmVuZCk7XG4gIHN0cmVhbS5vbignZmluaXNoJywgb25maW5pc2gpO1xuICBpZiAob3B0cy5lcnJvciAhPT0gZmFsc2UpIHN0cmVhbS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY29tcGxldGUnLCBvbmZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdhYm9ydCcsIG9uY2xvc2UpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcigncmVxdWVzdCcsIG9ucmVxdWVzdCk7XG4gICAgaWYgKHN0cmVhbS5yZXEpIHN0cmVhbS5yZXEucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9ubGVnYWN5ZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGVvczsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpOyB9IH1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7IHZhciBrZXkgPSBfdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTsgcmV0dXJuIHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7IGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDsgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7IHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpOyBpZiAodHlwZW9mIHJlcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlczsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOyB9XG52YXIgRVJSX0lOVkFMSURfQVJHX1RZUEUgPSByZXF1aXJlKCcuLi8uLi8uLi9lcnJvcnMnKS5jb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRTtcbmZ1bmN0aW9uIGZyb20oUmVhZGFibGUsIGl0ZXJhYmxlLCBvcHRzKSB7XG4gIHZhciBpdGVyYXRvcjtcbiAgaWYgKGl0ZXJhYmxlICYmIHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZTtcbiAgfSBlbHNlIGlmIChpdGVyYWJsZSAmJiBpdGVyYWJsZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pIGl0ZXJhdG9yID0gaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7ZWxzZSBpZiAoaXRlcmFibGUgJiYgaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSkgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdKCk7ZWxzZSB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2l0ZXJhYmxlJywgWydJdGVyYWJsZSddLCBpdGVyYWJsZSk7XG4gIHZhciByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZShfb2JqZWN0U3ByZWFkKHtcbiAgICBvYmplY3RNb2RlOiB0cnVlXG4gIH0sIG9wdHMpKTtcbiAgLy8gUmVhZGluZyBib29sZWFuIHRvIHByb3RlY3QgYWdhaW5zdCBfcmVhZFxuICAvLyBiZWluZyBjYWxsZWQgYmVmb3JlIGxhc3QgaXRlcmF0aW9uIGNvbXBsZXRpb24uXG4gIHZhciByZWFkaW5nID0gZmFsc2U7XG4gIHJlYWRhYmxlLl9yZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVhZGluZykge1xuICAgICAgcmVhZGluZyA9IHRydWU7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9O1xuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHJldHVybiBfbmV4dDIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuICBmdW5jdGlvbiBfbmV4dDIoKSB7XG4gICAgX25leHQyID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBfeWllbGQkaXRlcmF0b3IkbmV4dCA9IHlpZWxkIGl0ZXJhdG9yLm5leHQoKSxcbiAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRpdGVyYXRvciRuZXh0LnZhbHVlLFxuICAgICAgICAgIGRvbmUgPSBfeWllbGQkaXRlcmF0b3IkbmV4dC5kb25lO1xuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgIHJlYWRhYmxlLnB1c2gobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVhZGFibGUucHVzaCh5aWVsZCB2YWx1ZSkpIHtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVhZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVhZGFibGUuZGVzdHJveShlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfbmV4dDIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuICByZXR1cm4gcmVhZGFibGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZyb207XG4iLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3B1bXAgd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVvcztcbmZ1bmN0aW9uIG9uY2UoY2FsbGJhY2spIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLFxuICBFUlJfTUlTU0lOR19BUkdTID0gX3JlcXVpcmUkY29kZXMuRVJSX01JU1NJTkdfQVJHUyxcbiAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRDtcbmZ1bmN0aW9uIG5vb3AoZXJyKSB7XG4gIC8vIFJldGhyb3cgdGhlIGVycm9yIGlmIGl0IGV4aXN0cyB0byBhdm9pZCBzd2FsbG93aW5nIGl0XG4gIGlmIChlcnIpIHRocm93IGVycjtcbn1cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIGRlc3Ryb3llcihzdHJlYW0sIHJlYWRpbmcsIHdyaXRpbmcsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gIHZhciBjbG9zZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICB9KTtcbiAgaWYgKGVvcyA9PT0gdW5kZWZpbmVkKSBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcbiAgZW9zKHN0cmVhbSwge1xuICAgIHJlYWRhYmxlOiByZWFkaW5nLFxuICAgIHdyaXRhYmxlOiB3cml0aW5nXG4gIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrKCk7XG4gIH0pO1xuICB2YXIgZGVzdHJveWVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgIGlmIChkZXN0cm95ZWQpIHJldHVybjtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgLy8gcmVxdWVzdC5kZXN0cm95IGp1c3QgZG8gLmVuZCAtIC5hYm9ydCBpcyB3aGF0IHdlIHdhbnRcbiAgICBpZiAoaXNSZXF1ZXN0KHN0cmVhbSkpIHJldHVybiBzdHJlYW0uYWJvcnQoKTtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSByZXR1cm4gc3RyZWFtLmRlc3Ryb3koKTtcbiAgICBjYWxsYmFjayhlcnIgfHwgbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdwaXBlJykpO1xuICB9O1xufVxuZnVuY3Rpb24gY2FsbChmbikge1xuICBmbigpO1xufVxuZnVuY3Rpb24gcGlwZShmcm9tLCB0bykge1xuICByZXR1cm4gZnJvbS5waXBlKHRvKTtcbn1cbmZ1bmN0aW9uIHBvcENhbGxiYWNrKHN0cmVhbXMpIHtcbiAgaWYgKCFzdHJlYW1zLmxlbmd0aCkgcmV0dXJuIG5vb3A7XG4gIGlmICh0eXBlb2Ygc3RyZWFtc1tzdHJlYW1zLmxlbmd0aCAtIDFdICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gbm9vcDtcbiAgcmV0dXJuIHN0cmVhbXMucG9wKCk7XG59XG5mdW5jdGlvbiBwaXBlbGluZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHN0cmVhbXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3RyZWFtc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICB2YXIgY2FsbGJhY2sgPSBwb3BDYWxsYmFjayhzdHJlYW1zKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RyZWFtc1swXSkpIHN0cmVhbXMgPSBzdHJlYW1zWzBdO1xuICBpZiAoc3RyZWFtcy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ3N0cmVhbXMnKTtcbiAgfVxuICB2YXIgZXJyb3I7XG4gIHZhciBkZXN0cm95cyA9IHN0cmVhbXMubWFwKGZ1bmN0aW9uIChzdHJlYW0sIGkpIHtcbiAgICB2YXIgcmVhZGluZyA9IGkgPCBzdHJlYW1zLmxlbmd0aCAtIDE7XG4gICAgdmFyIHdyaXRpbmcgPSBpID4gMDtcbiAgICByZXR1cm4gZGVzdHJveWVyKHN0cmVhbSwgcmVhZGluZywgd3JpdGluZywgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gICAgICBpZiAoZXJyKSBkZXN0cm95cy5mb3JFYWNoKGNhbGwpO1xuICAgICAgaWYgKHJlYWRpbmcpIHJldHVybjtcbiAgICAgIGRlc3Ryb3lzLmZvckVhY2goY2FsbCk7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc3RyZWFtcy5yZWR1Y2UocGlwZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHBpcGVsaW5lOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIEVSUl9JTlZBTElEX09QVF9WQUxVRSA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLkVSUl9JTlZBTElEX09QVF9WQUxVRTtcbmZ1bmN0aW9uIGhpZ2hXYXRlck1hcmtGcm9tKG9wdGlvbnMsIGlzRHVwbGV4LCBkdXBsZXhLZXkpIHtcbiAgcmV0dXJuIG9wdGlvbnMuaGlnaFdhdGVyTWFyayAhPSBudWxsID8gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrIDogaXNEdXBsZXggPyBvcHRpb25zW2R1cGxleEtleV0gOiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0SGlnaFdhdGVyTWFyayhzdGF0ZSwgb3B0aW9ucywgZHVwbGV4S2V5LCBpc0R1cGxleCkge1xuICB2YXIgaHdtID0gaGlnaFdhdGVyTWFya0Zyb20ob3B0aW9ucywgaXNEdXBsZXgsIGR1cGxleEtleSk7XG4gIGlmIChod20gIT0gbnVsbCkge1xuICAgIGlmICghKGlzRmluaXRlKGh3bSkgJiYgTWF0aC5mbG9vcihod20pID09PSBod20pIHx8IGh3bSA8IDApIHtcbiAgICAgIHZhciBuYW1lID0gaXNEdXBsZXggPyBkdXBsZXhLZXkgOiAnaGlnaFdhdGVyTWFyayc7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfT1BUX1ZBTFVFKG5hbWUsIGh3bSk7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGh3bSk7XG4gIH1cblxuICAvLyBEZWZhdWx0IHZhbHVlXG4gIHJldHVybiBzdGF0ZS5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0SGlnaFdhdGVyTWFyazogZ2V0SGlnaFdhdGVyTWFya1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuaWYgKHByb2Nlc3MuZW52LlJFQURBQkxFX1NUUkVBTSA9PT0gJ2Rpc2FibGUnICYmIFN0cmVhbSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbS5SZWFkYWJsZTtcbiAgT2JqZWN0LmFzc2lnbihtb2R1bGUuZXhwb3J0cywgU3RyZWFtKTtcbiAgbW9kdWxlLmV4cG9ydHMuU3RyZWFtID0gU3RyZWFtO1xufSBlbHNlIHtcbiAgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuICBleHBvcnRzLlN0cmVhbSA9IFN0cmVhbSB8fCBleHBvcnRzO1xuICBleHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbiAgZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbiAgZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuICBleHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG4gIGV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG4gIGV4cG9ydHMuZmluaXNoZWQgPSByZXF1aXJlKCcuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMnKTtcbiAgZXhwb3J0cy5waXBlbGluZSA9IHJlcXVpcmUoJy4vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMnKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVhZGRpckdsb2I7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSByZXF1aXJlKCdldmVudHMnKTtcbmNvbnN0IHsgTWluaW1hdGNoIH0gPSByZXF1aXJlKCdtaW5pbWF0Y2gnKTtcbmNvbnN0IHsgcmVzb2x2ZSB9ID0gcmVxdWlyZSgncGF0aCcpO1xuXG5mdW5jdGlvbiByZWFkZGlyKGRpciwgc3RyaWN0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZnMucmVhZGRpcihkaXIsIHt3aXRoRmlsZVR5cGVzOiB0cnVlfSAsKGVyciwgZmlsZXMpID0+IHtcbiAgICAgIGlmKGVycikge1xuICAgICAgICBzd2l0Y2ggKGVyci5jb2RlKSB7XG4gICAgICAgICAgY2FzZSAnRU5PVERJUic6ICAgICAgLy8gTm90IGEgZGlyZWN0b3J5XG4gICAgICAgICAgICBpZihzdHJpY3QpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0VOT1RTVVAnOiAgICAgIC8vIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXG4gICAgICAgICAgY2FzZSAnRU5PRU5UJzogICAgICAgLy8gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVxuICAgICAgICAgIGNhc2UgJ0VOQU1FVE9PTE9ORyc6IC8vIEZpbGVuYW1lIHRvbyBsb25nXG4gICAgICAgICAgY2FzZSAnVU5LTk9XTic6XG4gICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0VMT09QJzogICAgICAgIC8vIFRvbyBtYW55IGxldmVscyBvZiBzeW1ib2xpYyBsaW5rc1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGZpbGVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBzdGF0KGZpbGUsIGZvbGxvd1N5bWxpbmtzKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc3RhdEZ1bmMgPSBmb2xsb3dTeW1saW5rcyA/IGZzLnN0YXQgOiBmcy5sc3RhdDtcbiAgICBzdGF0RnVuYyhmaWxlLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgaWYoZXJyKSB7XG4gICAgICAgIHN3aXRjaCAoZXJyLmNvZGUpIHtcbiAgICAgICAgICBjYXNlICdFTk9FTlQnOlxuICAgICAgICAgICAgaWYoZm9sbG93U3ltbGlua3MpIHtcbiAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gbHN0YXQgdG8gaGFuZGxlIGJyb2tlbiBsaW5rcyBhcyBmaWxlc1xuICAgICAgICAgICAgICByZXNvbHZlKHN0YXQoZmlsZSwgZmFsc2UpKTsgXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShzdGF0cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiogZXhwbG9yZVdhbGtBc3luYyhkaXIsIHBhdGgsIGZvbGxvd1N5bWxpbmtzLCB1c2VTdGF0LCBzaG91bGRTa2lwLCBzdHJpY3QpIHtcbiAgbGV0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihwYXRoICsgZGlyLCBzdHJpY3QpO1xuICBmb3IoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGxldCBuYW1lID0gZmlsZS5uYW1lO1xuICAgIGlmKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gdW5kZWZpbmVkIGZpbGUubmFtZSBtZWFucyB0aGUgYHdpdGhGaWxlVHlwZXNgIG9wdGlvbnMgaXMgbm90IHN1cHBvcnRlZCBieSBub2RlXG4gICAgICAvLyB3ZSBoYXZlIHRvIGNhbGwgdGhlIHN0YXQgZnVuY3Rpb24gdG8ga25vdyBpZiBmaWxlIGlzIGRpcmVjdG9yeSBvciBub3QuXG4gICAgICBuYW1lID0gZmlsZTtcbiAgICAgIHVzZVN0YXQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBmaWxlbmFtZSA9IGRpciArICcvJyArIG5hbWU7XG4gICAgY29uc3QgcmVsYXRpdmUgPSBmaWxlbmFtZS5zbGljZSgxKTsgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nIC9cbiAgICBjb25zdCBhYnNvbHV0ZSA9IHBhdGggKyAnLycgKyByZWxhdGl2ZTtcbiAgICBsZXQgc3RhdHMgPSBudWxsO1xuICAgIGlmKHVzZVN0YXQgfHwgZm9sbG93U3ltbGlua3MpIHtcbiAgICAgIHN0YXRzID0gYXdhaXQgc3RhdChhYnNvbHV0ZSwgZm9sbG93U3ltbGlua3MpO1xuICAgIH1cbiAgICBpZighc3RhdHMgJiYgZmlsZS5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXRzID0gZmlsZTtcbiAgICB9XG4gICAgaWYoc3RhdHMgPT09IG51bGwpIHtcbiAgICAgIHN0YXRzID0geyBpc0RpcmVjdG9yeTogKCkgPT4gZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZihzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpZighc2hvdWxkU2tpcChyZWxhdGl2ZSkpIHtcbiAgICAgICAgeWllbGQge3JlbGF0aXZlLCBhYnNvbHV0ZSwgc3RhdHN9O1xuICAgICAgICB5aWVsZCogZXhwbG9yZVdhbGtBc3luYyhmaWxlbmFtZSwgcGF0aCwgZm9sbG93U3ltbGlua3MsIHVzZVN0YXQsIHNob3VsZFNraXAsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgeWllbGQge3JlbGF0aXZlLCBhYnNvbHV0ZSwgc3RhdHN9O1xuICAgIH1cbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24qIGV4cGxvcmUocGF0aCwgZm9sbG93U3ltbGlua3MsIHVzZVN0YXQsIHNob3VsZFNraXApIHtcbiAgeWllbGQqIGV4cGxvcmVXYWxrQXN5bmMoJycsIHBhdGgsIGZvbGxvd1N5bWxpbmtzLCB1c2VTdGF0LCBzaG91bGRTa2lwLCB0cnVlKTtcbn1cblxuXG5mdW5jdGlvbiByZWFkT3B0aW9ucyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgcGF0dGVybjogb3B0aW9ucy5wYXR0ZXJuLFxuICAgIGRvdDogISFvcHRpb25zLmRvdCxcbiAgICBub2dsb2JzdGFyOiAhIW9wdGlvbnMubm9nbG9ic3RhcixcbiAgICBtYXRjaEJhc2U6ICEhb3B0aW9ucy5tYXRjaEJhc2UsXG4gICAgbm9jYXNlOiAhIW9wdGlvbnMubm9jYXNlLFxuICAgIGlnbm9yZTogb3B0aW9ucy5pZ25vcmUsXG4gICAgc2tpcDogb3B0aW9ucy5za2lwLFxuXG4gICAgZm9sbG93OiAhIW9wdGlvbnMuZm9sbG93LFxuICAgIHN0YXQ6ICEhb3B0aW9ucy5zdGF0LFxuICAgIG5vZGlyOiAhIW9wdGlvbnMubm9kaXIsXG4gICAgbWFyazogISFvcHRpb25zLm1hcmssXG4gICAgc2lsZW50OiAhIW9wdGlvbnMuc2lsZW50LFxuICAgIGFic29sdXRlOiAhIW9wdGlvbnMuYWJzb2x1dGVcbiAgfTtcbn1cblxuY2xhc3MgUmVhZGRpckdsb2IgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihjd2QsIG9wdGlvbnMsIGNiKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2IgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gcmVhZE9wdGlvbnMob3B0aW9ucyB8fMKge30pO1xuICBcbiAgICB0aGlzLm1hdGNoZXJzID0gW107XG4gICAgaWYodGhpcy5vcHRpb25zLnBhdHRlcm4pIHtcbiAgICAgIGNvbnN0IG1hdGNoZXJzID0gQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMucGF0dGVybikgPyB0aGlzLm9wdGlvbnMucGF0dGVybiA6IFt0aGlzLm9wdGlvbnMucGF0dGVybl07XG4gICAgICB0aGlzLm1hdGNoZXJzID0gbWF0Y2hlcnMubWFwKCBtID0+XG4gICAgICAgIG5ldyBNaW5pbWF0Y2gobSwge1xuICAgICAgICAgIGRvdDogdGhpcy5vcHRpb25zLmRvdCxcbiAgICAgICAgICBub2dsb2JzdGFyOnRoaXMub3B0aW9ucy5ub2dsb2JzdGFyLFxuICAgICAgICAgIG1hdGNoQmFzZTp0aGlzLm9wdGlvbnMubWF0Y2hCYXNlLFxuICAgICAgICAgIG5vY2FzZTp0aGlzLm9wdGlvbnMubm9jYXNlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgXG4gICAgdGhpcy5pZ25vcmVNYXRjaGVycyA9IFtdO1xuICAgIGlmKHRoaXMub3B0aW9ucy5pZ25vcmUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZVBhdHRlcm5zID0gQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMuaWdub3JlKSA/IHRoaXMub3B0aW9ucy5pZ25vcmUgOiBbdGhpcy5vcHRpb25zLmlnbm9yZV07XG4gICAgICB0aGlzLmlnbm9yZU1hdGNoZXJzID0gaWdub3JlUGF0dGVybnMubWFwKCBpZ25vcmUgPT5cbiAgICAgICAgbmV3IE1pbmltYXRjaChpZ25vcmUsIHtkb3Q6IHRydWV9KVxuICAgICAgKTtcbiAgICB9XG4gIFxuICAgIHRoaXMuc2tpcE1hdGNoZXJzID0gW107XG4gICAgaWYodGhpcy5vcHRpb25zLnNraXApIHtcbiAgICAgIGNvbnN0IHNraXBQYXR0ZXJucyA9IEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLnNraXApID8gdGhpcy5vcHRpb25zLnNraXAgOiBbdGhpcy5vcHRpb25zLnNraXBdO1xuICAgICAgdGhpcy5za2lwTWF0Y2hlcnMgPSBza2lwUGF0dGVybnMubWFwKCBza2lwID0+XG4gICAgICAgIG5ldyBNaW5pbWF0Y2goc2tpcCwge2RvdDogdHJ1ZX0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuaXRlcmF0b3IgPSBleHBsb3JlKHJlc29sdmUoY3dkIHx8ICcuJyksIHRoaXMub3B0aW9ucy5mb2xsb3csIHRoaXMub3B0aW9ucy5zdGF0LCB0aGlzLl9zaG91bGRTa2lwRGlyZWN0b3J5LmJpbmQodGhpcykpO1xuICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICBcbiAgICBpZihjYikge1xuICAgICAgdGhpcy5fbWF0Y2hlcyA9IFtdOyBcbiAgICAgIHRoaXMub24oJ21hdGNoJywgbWF0Y2ggPT4gdGhpcy5fbWF0Y2hlcy5wdXNoKHRoaXMub3B0aW9ucy5hYnNvbHV0ZSA/IG1hdGNoLmFic29sdXRlIDogbWF0Y2gucmVsYXRpdmUpKTtcbiAgICAgIHRoaXMub24oJ2Vycm9yJywgZXJyID0+IGNiKGVycikpO1xuICAgICAgdGhpcy5vbignZW5kJywgKCkgPT4gY2IobnVsbCwgdGhpcy5fbWF0Y2hlcykpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoICgpID0+IHRoaXMuX25leHQoKSwgMCk7XG4gIH1cblxuICBfc2hvdWxkU2tpcERpcmVjdG9yeShyZWxhdGl2ZSkge1xuICAgIC8vY29uc29sZS5sb2cocmVsYXRpdmUsIHRoaXMuc2tpcE1hdGNoZXJzLnNvbWUobSA9PiBtLm1hdGNoKHJlbGF0aXZlKSkpO1xuICAgIHJldHVybiB0aGlzLnNraXBNYXRjaGVycy5zb21lKG0gPT4gbS5tYXRjaChyZWxhdGl2ZSkpO1xuICB9XG5cbiAgX2ZpbGVNYXRjaGVzKHJlbGF0aXZlLCBpc0RpcmVjdG9yeSkge1xuICAgIGNvbnN0IGZpbGUgPSByZWxhdGl2ZSArIChpc0RpcmVjdG9yeSA/ICcvJyA6ICcnKTtcbiAgICByZXR1cm4gKHRoaXMubWF0Y2hlcnMubGVuZ3RoID09PSAwIHx8IHRoaXMubWF0Y2hlcnMuc29tZShtID0+IG0ubWF0Y2goZmlsZSkpKVxuICAgICAgJiYgIXRoaXMuaWdub3JlTWF0Y2hlcnMuc29tZShtID0+IG0ubWF0Y2goZmlsZSkpXG4gICAgICAmJiAoIXRoaXMub3B0aW9ucy5ub2RpciB8fCAhaXNEaXJlY3RvcnkpO1xuICB9XG5cbiAgX25leHQoKSB7XG4gICAgaWYoIXRoaXMucGF1c2VkICYmICF0aGlzLmFib3J0ZWQpIHtcbiAgICAgIHRoaXMuaXRlcmF0b3IubmV4dCgpXG4gICAgICAudGhlbigob2JqKT0+IHtcbiAgICAgICAgaWYoIW9iai5kb25lKSB7XG4gICAgICAgICAgY29uc3QgaXNEaXJlY3RvcnkgPSBvYmoudmFsdWUuc3RhdHMuaXNEaXJlY3RvcnkoKTtcbiAgICAgICAgICBpZih0aGlzLl9maWxlTWF0Y2hlcyhvYmoudmFsdWUucmVsYXRpdmUsIGlzRGlyZWN0b3J5ICkpIHtcbiAgICAgICAgICAgIGxldCByZWxhdGl2ZSA9IG9iai52YWx1ZS5yZWxhdGl2ZTtcbiAgICAgICAgICAgIGxldCBhYnNvbHV0ZSA9IG9iai52YWx1ZS5hYnNvbHV0ZTtcbiAgICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5tYXJrICYmIGlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgICAgIHJlbGF0aXZlICs9ICcvJztcbiAgICAgICAgICAgICAgYWJzb2x1dGUgKz0gJy8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLnN0YXQpIHtcbiAgICAgICAgICAgICAgdGhpcy5lbWl0KCdtYXRjaCcsIHtyZWxhdGl2ZSwgYWJzb2x1dGUsIHN0YXQ6b2JqLnZhbHVlLnN0YXRzfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmVtaXQoJ21hdGNoJywge3JlbGF0aXZlLCBhYnNvbHV0ZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9uZXh0KHRoaXMuaXRlcmF0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZW1pdCgnZW5kJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICB0aGlzLmFib3J0KCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICBpZighZXJyLmNvZGUgJiYgIXRoaXMub3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcGF1c2UoKSB7XG4gICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgaWYodGhpcy5pbmFjdGl2ZSkge1xuICAgICAgdGhpcy5pbmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fbmV4dCgpO1xuICAgIH1cbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHJlYWRkaXJHbG9iKHBhdHRlcm4sIG9wdGlvbnMsIGNiKSB7XG4gIHJldHVybiBuZXcgUmVhZGRpckdsb2IocGF0dGVybiwgb3B0aW9ucywgY2IpO1xufVxucmVhZGRpckdsb2IuUmVhZGRpckdsb2IgPSBSZWFkZGlyR2xvYjsiLCIvKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJ1ZmZlci5wcm90b3R5cGUpXG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwidmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJylcbnZhciBibCA9IHJlcXVpcmUoJ2JsJylcbnZhciBoZWFkZXJzID0gcmVxdWlyZSgnLi9oZWFkZXJzJylcblxudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuV3JpdGFibGVcbnZhciBQYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLlBhc3NUaHJvdWdoXG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cblxudmFyIG92ZXJmbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgc2l6ZSAmPSA1MTFcbiAgcmV0dXJuIHNpemUgJiYgNTEyIC0gc2l6ZVxufVxuXG52YXIgZW1wdHlTdHJlYW0gPSBmdW5jdGlvbiAoc2VsZiwgb2Zmc2V0KSB7XG4gIHZhciBzID0gbmV3IFNvdXJjZShzZWxmLCBvZmZzZXQpXG4gIHMuZW5kKClcbiAgcmV0dXJuIHNcbn1cblxudmFyIG1peGluUGF4ID0gZnVuY3Rpb24gKGhlYWRlciwgcGF4KSB7XG4gIGlmIChwYXgucGF0aCkgaGVhZGVyLm5hbWUgPSBwYXgucGF0aFxuICBpZiAocGF4LmxpbmtwYXRoKSBoZWFkZXIubGlua25hbWUgPSBwYXgubGlua3BhdGhcbiAgaWYgKHBheC5zaXplKSBoZWFkZXIuc2l6ZSA9IHBhcnNlSW50KHBheC5zaXplLCAxMClcbiAgaGVhZGVyLnBheCA9IHBheFxuICByZXR1cm4gaGVhZGVyXG59XG5cbnZhciBTb3VyY2UgPSBmdW5jdGlvbiAoc2VsZiwgb2Zmc2V0KSB7XG4gIHRoaXMuX3BhcmVudCA9IHNlbGZcbiAgdGhpcy5vZmZzZXQgPSBvZmZzZXRcbiAgUGFzc1Rocm91Z2guY2FsbCh0aGlzLCB7IGF1dG9EZXN0cm95OiBmYWxzZSB9KVxufVxuXG51dGlsLmluaGVyaXRzKFNvdXJjZSwgUGFzc1Rocm91Z2gpXG5cblNvdXJjZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgdGhpcy5fcGFyZW50LmRlc3Ryb3koZXJyKVxufVxuXG52YXIgRXh0cmFjdCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFeHRyYWN0KSkgcmV0dXJuIG5ldyBFeHRyYWN0KG9wdHMpXG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0cylcblxuICBvcHRzID0gb3B0cyB8fCB7fVxuXG4gIHRoaXMuX29mZnNldCA9IDBcbiAgdGhpcy5fYnVmZmVyID0gYmwoKVxuICB0aGlzLl9taXNzaW5nID0gMFxuICB0aGlzLl9wYXJ0aWFsID0gZmFsc2VcbiAgdGhpcy5fb25wYXJzZSA9IG5vb3BcbiAgdGhpcy5faGVhZGVyID0gbnVsbFxuICB0aGlzLl9zdHJlYW0gPSBudWxsXG4gIHRoaXMuX292ZXJmbG93ID0gbnVsbFxuICB0aGlzLl9jYiA9IG51bGxcbiAgdGhpcy5fbG9ja2VkID0gZmFsc2VcbiAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2VcbiAgdGhpcy5fcGF4ID0gbnVsbFxuICB0aGlzLl9wYXhHbG9iYWwgPSBudWxsXG4gIHRoaXMuX2dudUxvbmdQYXRoID0gbnVsbFxuICB0aGlzLl9nbnVMb25nTGlua1BhdGggPSBudWxsXG5cbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBiID0gc2VsZi5fYnVmZmVyXG5cbiAgdmFyIG9uY29udGludWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5fY29udGludWUoKVxuICB9XG5cbiAgdmFyIG9udW5sb2NrID0gZnVuY3Rpb24gKGVycikge1xuICAgIHNlbGYuX2xvY2tlZCA9IGZhbHNlXG4gICAgaWYgKGVycikgcmV0dXJuIHNlbGYuZGVzdHJveShlcnIpXG4gICAgaWYgKCFzZWxmLl9zdHJlYW0pIG9uY29udGludWUoKVxuICB9XG5cbiAgdmFyIG9uc3RyZWFtZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIHNlbGYuX3N0cmVhbSA9IG51bGxcbiAgICB2YXIgZHJhaW4gPSBvdmVyZmxvdyhzZWxmLl9oZWFkZXIuc2l6ZSlcbiAgICBpZiAoZHJhaW4pIHNlbGYuX3BhcnNlKGRyYWluLCBvbmRyYWluKVxuICAgIGVsc2Ugc2VsZi5fcGFyc2UoNTEyLCBvbmhlYWRlcilcbiAgICBpZiAoIXNlbGYuX2xvY2tlZCkgb25jb250aW51ZSgpXG4gIH1cblxuICB2YXIgb25kcmFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBzZWxmLl9idWZmZXIuY29uc3VtZShvdmVyZmxvdyhzZWxmLl9oZWFkZXIuc2l6ZSkpXG4gICAgc2VsZi5fcGFyc2UoNTEyLCBvbmhlYWRlcilcbiAgICBvbmNvbnRpbnVlKClcbiAgfVxuXG4gIHZhciBvbnBheGdsb2JhbGhlYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2l6ZSA9IHNlbGYuX2hlYWRlci5zaXplXG4gICAgc2VsZi5fcGF4R2xvYmFsID0gaGVhZGVycy5kZWNvZGVQYXgoYi5zbGljZSgwLCBzaXplKSlcbiAgICBiLmNvbnN1bWUoc2l6ZSlcbiAgICBvbnN0cmVhbWVuZCgpXG4gIH1cblxuICB2YXIgb25wYXhoZWFkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNpemUgPSBzZWxmLl9oZWFkZXIuc2l6ZVxuICAgIHNlbGYuX3BheCA9IGhlYWRlcnMuZGVjb2RlUGF4KGIuc2xpY2UoMCwgc2l6ZSkpXG4gICAgaWYgKHNlbGYuX3BheEdsb2JhbCkgc2VsZi5fcGF4ID0gT2JqZWN0LmFzc2lnbih7fSwgc2VsZi5fcGF4R2xvYmFsLCBzZWxmLl9wYXgpXG4gICAgYi5jb25zdW1lKHNpemUpXG4gICAgb25zdHJlYW1lbmQoKVxuICB9XG5cbiAgdmFyIG9uZ251bG9uZ3BhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNpemUgPSBzZWxmLl9oZWFkZXIuc2l6ZVxuICAgIHRoaXMuX2dudUxvbmdQYXRoID0gaGVhZGVycy5kZWNvZGVMb25nUGF0aChiLnNsaWNlKDAsIHNpemUpLCBvcHRzLmZpbGVuYW1lRW5jb2RpbmcpXG4gICAgYi5jb25zdW1lKHNpemUpXG4gICAgb25zdHJlYW1lbmQoKVxuICB9XG5cbiAgdmFyIG9uZ251bG9uZ2xpbmtwYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaXplID0gc2VsZi5faGVhZGVyLnNpemVcbiAgICB0aGlzLl9nbnVMb25nTGlua1BhdGggPSBoZWFkZXJzLmRlY29kZUxvbmdQYXRoKGIuc2xpY2UoMCwgc2l6ZSksIG9wdHMuZmlsZW5hbWVFbmNvZGluZylcbiAgICBiLmNvbnN1bWUoc2l6ZSlcbiAgICBvbnN0cmVhbWVuZCgpXG4gIH1cblxuICB2YXIgb25oZWFkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9mZnNldCA9IHNlbGYuX29mZnNldFxuICAgIHZhciBoZWFkZXJcbiAgICB0cnkge1xuICAgICAgaGVhZGVyID0gc2VsZi5faGVhZGVyID0gaGVhZGVycy5kZWNvZGUoYi5zbGljZSgwLCA1MTIpLCBvcHRzLmZpbGVuYW1lRW5jb2RpbmcsIG9wdHMuYWxsb3dVbmtub3duRm9ybWF0KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2VsZi5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9XG4gICAgYi5jb25zdW1lKDUxMilcblxuICAgIGlmICghaGVhZGVyKSB7XG4gICAgICBzZWxmLl9wYXJzZSg1MTIsIG9uaGVhZGVyKVxuICAgICAgb25jb250aW51ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGhlYWRlci50eXBlID09PSAnZ251LWxvbmctcGF0aCcpIHtcbiAgICAgIHNlbGYuX3BhcnNlKGhlYWRlci5zaXplLCBvbmdudWxvbmdwYXRoKVxuICAgICAgb25jb250aW51ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGhlYWRlci50eXBlID09PSAnZ251LWxvbmctbGluay1wYXRoJykge1xuICAgICAgc2VsZi5fcGFyc2UoaGVhZGVyLnNpemUsIG9uZ251bG9uZ2xpbmtwYXRoKVxuICAgICAgb25jb250aW51ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGhlYWRlci50eXBlID09PSAncGF4LWdsb2JhbC1oZWFkZXInKSB7XG4gICAgICBzZWxmLl9wYXJzZShoZWFkZXIuc2l6ZSwgb25wYXhnbG9iYWxoZWFkZXIpXG4gICAgICBvbmNvbnRpbnVlKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoaGVhZGVyLnR5cGUgPT09ICdwYXgtaGVhZGVyJykge1xuICAgICAgc2VsZi5fcGFyc2UoaGVhZGVyLnNpemUsIG9ucGF4aGVhZGVyKVxuICAgICAgb25jb250aW51ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2VsZi5fZ251TG9uZ1BhdGgpIHtcbiAgICAgIGhlYWRlci5uYW1lID0gc2VsZi5fZ251TG9uZ1BhdGhcbiAgICAgIHNlbGYuX2dudUxvbmdQYXRoID0gbnVsbFxuICAgIH1cblxuICAgIGlmIChzZWxmLl9nbnVMb25nTGlua1BhdGgpIHtcbiAgICAgIGhlYWRlci5saW5rbmFtZSA9IHNlbGYuX2dudUxvbmdMaW5rUGF0aFxuICAgICAgc2VsZi5fZ251TG9uZ0xpbmtQYXRoID0gbnVsbFxuICAgIH1cblxuICAgIGlmIChzZWxmLl9wYXgpIHtcbiAgICAgIHNlbGYuX2hlYWRlciA9IGhlYWRlciA9IG1peGluUGF4KGhlYWRlciwgc2VsZi5fcGF4KVxuICAgICAgc2VsZi5fcGF4ID0gbnVsbFxuICAgIH1cblxuICAgIHNlbGYuX2xvY2tlZCA9IHRydWVcblxuICAgIGlmICghaGVhZGVyLnNpemUgfHwgaGVhZGVyLnR5cGUgPT09ICdkaXJlY3RvcnknKSB7XG4gICAgICBzZWxmLl9wYXJzZSg1MTIsIG9uaGVhZGVyKVxuICAgICAgc2VsZi5lbWl0KCdlbnRyeScsIGhlYWRlciwgZW1wdHlTdHJlYW0oc2VsZiwgb2Zmc2V0KSwgb251bmxvY2spXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZWxmLl9zdHJlYW0gPSBuZXcgU291cmNlKHNlbGYsIG9mZnNldClcblxuICAgIHNlbGYuZW1pdCgnZW50cnknLCBoZWFkZXIsIHNlbGYuX3N0cmVhbSwgb251bmxvY2spXG4gICAgc2VsZi5fcGFyc2UoaGVhZGVyLnNpemUsIG9uc3RyZWFtZW5kKVxuICAgIG9uY29udGludWUoKVxuICB9XG5cbiAgdGhpcy5fb25oZWFkZXIgPSBvbmhlYWRlclxuICB0aGlzLl9wYXJzZSg1MTIsIG9uaGVhZGVyKVxufVxuXG51dGlsLmluaGVyaXRzKEV4dHJhY3QsIFdyaXRhYmxlKVxuXG5FeHRyYWN0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKGVycikge1xuICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm5cbiAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZVxuXG4gIGlmIChlcnIpIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gIHRoaXMuZW1pdCgnY2xvc2UnKVxuICBpZiAodGhpcy5fc3RyZWFtKSB0aGlzLl9zdHJlYW0uZW1pdCgnY2xvc2UnKVxufVxuXG5FeHRyYWN0LnByb3RvdHlwZS5fcGFyc2UgPSBmdW5jdGlvbiAoc2l6ZSwgb25wYXJzZSkge1xuICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm5cbiAgdGhpcy5fb2Zmc2V0ICs9IHNpemVcbiAgdGhpcy5fbWlzc2luZyA9IHNpemVcbiAgaWYgKG9ucGFyc2UgPT09IHRoaXMuX29uaGVhZGVyKSB0aGlzLl9wYXJ0aWFsID0gZmFsc2VcbiAgdGhpcy5fb25wYXJzZSA9IG9ucGFyc2Vcbn1cblxuRXh0cmFjdC5wcm90b3R5cGUuX2NvbnRpbnVlID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm5cbiAgdmFyIGNiID0gdGhpcy5fY2JcbiAgdGhpcy5fY2IgPSBub29wXG4gIGlmICh0aGlzLl9vdmVyZmxvdykgdGhpcy5fd3JpdGUodGhpcy5fb3ZlcmZsb3csIHVuZGVmaW5lZCwgY2IpXG4gIGVsc2UgY2IoKVxufVxuXG5FeHRyYWN0LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jLCBjYikge1xuICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm5cblxuICB2YXIgcyA9IHRoaXMuX3N0cmVhbVxuICB2YXIgYiA9IHRoaXMuX2J1ZmZlclxuICB2YXIgbWlzc2luZyA9IHRoaXMuX21pc3NpbmdcbiAgaWYgKGRhdGEubGVuZ3RoKSB0aGlzLl9wYXJ0aWFsID0gdHJ1ZVxuXG4gIC8vIHdlIGRvIG5vdCByZWFjaCBlbmQtb2YtY2h1bmsgbm93LiBqdXN0IGZvcndhcmQgaXRcblxuICBpZiAoZGF0YS5sZW5ndGggPCBtaXNzaW5nKSB7XG4gICAgdGhpcy5fbWlzc2luZyAtPSBkYXRhLmxlbmd0aFxuICAgIHRoaXMuX292ZXJmbG93ID0gbnVsbFxuICAgIGlmIChzKSByZXR1cm4gcy53cml0ZShkYXRhLCBjYilcbiAgICBiLmFwcGVuZChkYXRhKVxuICAgIHJldHVybiBjYigpXG4gIH1cblxuICAvLyBlbmQtb2YtY2h1bmsuIHRoZSBwYXJzZXIgc2hvdWxkIGNhbGwgY2IuXG5cbiAgdGhpcy5fY2IgPSBjYlxuICB0aGlzLl9taXNzaW5nID0gMFxuXG4gIHZhciBvdmVyZmxvdyA9IG51bGxcbiAgaWYgKGRhdGEubGVuZ3RoID4gbWlzc2luZykge1xuICAgIG92ZXJmbG93ID0gZGF0YS5zbGljZShtaXNzaW5nKVxuICAgIGRhdGEgPSBkYXRhLnNsaWNlKDAsIG1pc3NpbmcpXG4gIH1cblxuICBpZiAocykgcy5lbmQoZGF0YSlcbiAgZWxzZSBiLmFwcGVuZChkYXRhKVxuXG4gIHRoaXMuX292ZXJmbG93ID0gb3ZlcmZsb3dcbiAgdGhpcy5fb25wYXJzZSgpXG59XG5cbkV4dHJhY3QucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uIChjYikge1xuICBpZiAodGhpcy5fcGFydGlhbCkgcmV0dXJuIHRoaXMuZGVzdHJveShuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgZW5kIG9mIGRhdGEnKSlcbiAgY2IoKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEV4dHJhY3RcbiIsInZhciBhbGxvYyA9IEJ1ZmZlci5hbGxvY1xuXG52YXIgWkVST1MgPSAnMDAwMDAwMDAwMDAwMDAwMDAwMCdcbnZhciBTRVZFTlMgPSAnNzc3Nzc3Nzc3Nzc3Nzc3Nzc3NydcbnZhciBaRVJPX09GRlNFVCA9ICcwJy5jaGFyQ29kZUF0KDApXG52YXIgVVNUQVJfTUFHSUMgPSBCdWZmZXIuZnJvbSgndXN0YXJcXHgwMCcsICdiaW5hcnknKVxudmFyIFVTVEFSX1ZFUiA9IEJ1ZmZlci5mcm9tKCcwMCcsICdiaW5hcnknKVxudmFyIEdOVV9NQUdJQyA9IEJ1ZmZlci5mcm9tKCd1c3RhclxceDIwJywgJ2JpbmFyeScpXG52YXIgR05VX1ZFUiA9IEJ1ZmZlci5mcm9tKCdcXHgyMFxceDAwJywgJ2JpbmFyeScpXG52YXIgTUFTSyA9IHBhcnNlSW50KCc3Nzc3JywgOClcbnZhciBNQUdJQ19PRkZTRVQgPSAyNTdcbnZhciBWRVJTSU9OX09GRlNFVCA9IDI2M1xuXG52YXIgY2xhbXAgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbiwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSByZXR1cm4gZGVmYXVsdFZhbHVlXG4gIGluZGV4ID0gfn5pbmRleCAvLyBDb2VyY2UgdG8gaW50ZWdlci5cbiAgaWYgKGluZGV4ID49IGxlbikgcmV0dXJuIGxlblxuICBpZiAoaW5kZXggPj0gMCkgcmV0dXJuIGluZGV4XG4gIGluZGV4ICs9IGxlblxuICBpZiAoaW5kZXggPj0gMCkgcmV0dXJuIGluZGV4XG4gIHJldHVybiAwXG59XG5cbnZhciB0b1R5cGUgPSBmdW5jdGlvbiAoZmxhZykge1xuICBzd2l0Y2ggKGZsYWcpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gJ2ZpbGUnXG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuICdsaW5rJ1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiAnc3ltbGluaydcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gJ2NoYXJhY3Rlci1kZXZpY2UnXG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuICdibG9jay1kZXZpY2UnXG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuICdkaXJlY3RvcnknXG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuICdmaWZvJ1xuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiAnY29udGlndW91cy1maWxlJ1xuICAgIGNhc2UgNzI6XG4gICAgICByZXR1cm4gJ3BheC1oZWFkZXInXG4gICAgY2FzZSA1NTpcbiAgICAgIHJldHVybiAncGF4LWdsb2JhbC1oZWFkZXInXG4gICAgY2FzZSAyNzpcbiAgICAgIHJldHVybiAnZ251LWxvbmctbGluay1wYXRoJ1xuICAgIGNhc2UgMjg6XG4gICAgY2FzZSAzMDpcbiAgICAgIHJldHVybiAnZ251LWxvbmctcGF0aCdcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbnZhciB0b1R5cGVmbGFnID0gZnVuY3Rpb24gKGZsYWcpIHtcbiAgc3dpdGNoIChmbGFnKSB7XG4gICAgY2FzZSAnZmlsZSc6XG4gICAgICByZXR1cm4gMFxuICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgcmV0dXJuIDFcbiAgICBjYXNlICdzeW1saW5rJzpcbiAgICAgIHJldHVybiAyXG4gICAgY2FzZSAnY2hhcmFjdGVyLWRldmljZSc6XG4gICAgICByZXR1cm4gM1xuICAgIGNhc2UgJ2Jsb2NrLWRldmljZSc6XG4gICAgICByZXR1cm4gNFxuICAgIGNhc2UgJ2RpcmVjdG9yeSc6XG4gICAgICByZXR1cm4gNVxuICAgIGNhc2UgJ2ZpZm8nOlxuICAgICAgcmV0dXJuIDZcbiAgICBjYXNlICdjb250aWd1b3VzLWZpbGUnOlxuICAgICAgcmV0dXJuIDdcbiAgICBjYXNlICdwYXgtaGVhZGVyJzpcbiAgICAgIHJldHVybiA3MlxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxudmFyIGluZGV4T2YgPSBmdW5jdGlvbiAoYmxvY2ssIG51bSwgb2Zmc2V0LCBlbmQpIHtcbiAgZm9yICg7IG9mZnNldCA8IGVuZDsgb2Zmc2V0KyspIHtcbiAgICBpZiAoYmxvY2tbb2Zmc2V0XSA9PT0gbnVtKSByZXR1cm4gb2Zmc2V0XG4gIH1cbiAgcmV0dXJuIGVuZFxufVxuXG52YXIgY2tzdW0gPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIHN1bSA9IDggKiAzMlxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE0ODsgaSsrKSBzdW0gKz0gYmxvY2tbaV1cbiAgZm9yICh2YXIgaiA9IDE1NjsgaiA8IDUxMjsgaisrKSBzdW0gKz0gYmxvY2tbal1cbiAgcmV0dXJuIHN1bVxufVxuXG52YXIgZW5jb2RlT2N0ID0gZnVuY3Rpb24gKHZhbCwgbikge1xuICB2YWwgPSB2YWwudG9TdHJpbmcoOClcbiAgaWYgKHZhbC5sZW5ndGggPiBuKSByZXR1cm4gU0VWRU5TLnNsaWNlKDAsIG4pICsgJyAnXG4gIGVsc2UgcmV0dXJuIFpFUk9TLnNsaWNlKDAsIG4gLSB2YWwubGVuZ3RoKSArIHZhbCArICcgJ1xufVxuXG4vKiBDb3BpZWQgZnJvbSB0aGUgbm9kZS10YXIgcmVwbyBhbmQgbW9kaWZpZWQgdG8gbWVldFxuICogdGFyLXN0cmVhbSBjb2Rpbmcgc3RhbmRhcmQuXG4gKlxuICogU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vbnBtL25vZGUtdGFyL2Jsb2IvNTFiNjYyN2ExZjM1N2QyZWI0MzNlNzM3OGU1ZjA1ZTgzYjdhYTZjZC9saWIvaGVhZGVyLmpzI0wzNDlcbiAqL1xuZnVuY3Rpb24gcGFyc2UyNTYgKGJ1Zikge1xuICAvLyBmaXJzdCBieXRlIE1VU1QgYmUgZWl0aGVyIDgwIG9yIEZGXG4gIC8vIDgwIGZvciBwb3NpdGl2ZSwgRkYgZm9yIDIncyBjb21wXG4gIHZhciBwb3NpdGl2ZVxuICBpZiAoYnVmWzBdID09PSAweDgwKSBwb3NpdGl2ZSA9IHRydWVcbiAgZWxzZSBpZiAoYnVmWzBdID09PSAweEZGKSBwb3NpdGl2ZSA9IGZhbHNlXG4gIGVsc2UgcmV0dXJuIG51bGxcblxuICAvLyBidWlsZCB1cCBhIGJhc2UtMjU2IHR1cGxlIGZyb20gdGhlIGxlYXN0IHNpZyB0byB0aGUgaGlnaGVzdFxuICB2YXIgdHVwbGUgPSBbXVxuICBmb3IgKHZhciBpID0gYnVmLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICB2YXIgYnl0ZSA9IGJ1ZltpXVxuICAgIGlmIChwb3NpdGl2ZSkgdHVwbGUucHVzaChieXRlKVxuICAgIGVsc2UgdHVwbGUucHVzaCgweEZGIC0gYnl0ZSlcbiAgfVxuXG4gIHZhciBzdW0gPSAwXG4gIHZhciBsID0gdHVwbGUubGVuZ3RoXG4gIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICBzdW0gKz0gdHVwbGVbaV0gKiBNYXRoLnBvdygyNTYsIGkpXG4gIH1cblxuICByZXR1cm4gcG9zaXRpdmUgPyBzdW0gOiAtMSAqIHN1bVxufVxuXG52YXIgZGVjb2RlT2N0ID0gZnVuY3Rpb24gKHZhbCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgdmFsID0gdmFsLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKVxuICBvZmZzZXQgPSAwXG5cbiAgLy8gSWYgcHJlZml4ZWQgd2l0aCAweDgwIHRoZW4gcGFyc2UgYXMgYSBiYXNlLTI1NiBpbnRlZ2VyXG4gIGlmICh2YWxbb2Zmc2V0XSAmIDB4ODApIHtcbiAgICByZXR1cm4gcGFyc2UyNTYodmFsKVxuICB9IGVsc2Uge1xuICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIHRhciBjYW4gcHJlZml4IHdpdGggc3BhY2VzXG4gICAgd2hpbGUgKG9mZnNldCA8IHZhbC5sZW5ndGggJiYgdmFsW29mZnNldF0gPT09IDMyKSBvZmZzZXQrK1xuICAgIHZhciBlbmQgPSBjbGFtcChpbmRleE9mKHZhbCwgMzIsIG9mZnNldCwgdmFsLmxlbmd0aCksIHZhbC5sZW5ndGgsIHZhbC5sZW5ndGgpXG4gICAgd2hpbGUgKG9mZnNldCA8IGVuZCAmJiB2YWxbb2Zmc2V0XSA9PT0gMCkgb2Zmc2V0KytcbiAgICBpZiAoZW5kID09PSBvZmZzZXQpIHJldHVybiAwXG4gICAgcmV0dXJuIHBhcnNlSW50KHZhbC5zbGljZShvZmZzZXQsIGVuZCkudG9TdHJpbmcoKSwgOClcbiAgfVxufVxuXG52YXIgZGVjb2RlU3RyID0gZnVuY3Rpb24gKHZhbCwgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIHJldHVybiB2YWwuc2xpY2Uob2Zmc2V0LCBpbmRleE9mKHZhbCwgMCwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKS50b1N0cmluZyhlbmNvZGluZylcbn1cblxudmFyIGFkZExlbmd0aCA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgdmFyIGxlbiA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHN0cilcbiAgdmFyIGRpZ2l0cyA9IE1hdGguZmxvb3IoTWF0aC5sb2cobGVuKSAvIE1hdGgubG9nKDEwKSkgKyAxXG4gIGlmIChsZW4gKyBkaWdpdHMgPj0gTWF0aC5wb3coMTAsIGRpZ2l0cykpIGRpZ2l0cysrXG5cbiAgcmV0dXJuIChsZW4gKyBkaWdpdHMpICsgc3RyXG59XG5cbmV4cG9ydHMuZGVjb2RlTG9uZ1BhdGggPSBmdW5jdGlvbiAoYnVmLCBlbmNvZGluZykge1xuICByZXR1cm4gZGVjb2RlU3RyKGJ1ZiwgMCwgYnVmLmxlbmd0aCwgZW5jb2RpbmcpXG59XG5cbmV4cG9ydHMuZW5jb2RlUGF4ID0gZnVuY3Rpb24gKG9wdHMpIHsgLy8gVE9ETzogZW5jb2RlIG1vcmUgc3R1ZmYgaW4gcGF4XG4gIHZhciByZXN1bHQgPSAnJ1xuICBpZiAob3B0cy5uYW1lKSByZXN1bHQgKz0gYWRkTGVuZ3RoKCcgcGF0aD0nICsgb3B0cy5uYW1lICsgJ1xcbicpXG4gIGlmIChvcHRzLmxpbmtuYW1lKSByZXN1bHQgKz0gYWRkTGVuZ3RoKCcgbGlua3BhdGg9JyArIG9wdHMubGlua25hbWUgKyAnXFxuJylcbiAgdmFyIHBheCA9IG9wdHMucGF4XG4gIGlmIChwYXgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcGF4KSB7XG4gICAgICByZXN1bHQgKz0gYWRkTGVuZ3RoKCcgJyArIGtleSArICc9JyArIHBheFtrZXldICsgJ1xcbicpXG4gICAgfVxuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShyZXN1bHQpXG59XG5cbmV4cG9ydHMuZGVjb2RlUGF4ID0gZnVuY3Rpb24gKGJ1Zikge1xuICB2YXIgcmVzdWx0ID0ge31cblxuICB3aGlsZSAoYnVmLmxlbmd0aCkge1xuICAgIHZhciBpID0gMFxuICAgIHdoaWxlIChpIDwgYnVmLmxlbmd0aCAmJiBidWZbaV0gIT09IDMyKSBpKytcbiAgICB2YXIgbGVuID0gcGFyc2VJbnQoYnVmLnNsaWNlKDAsIGkpLnRvU3RyaW5nKCksIDEwKVxuICAgIGlmICghbGVuKSByZXR1cm4gcmVzdWx0XG5cbiAgICB2YXIgYiA9IGJ1Zi5zbGljZShpICsgMSwgbGVuIC0gMSkudG9TdHJpbmcoKVxuICAgIHZhciBrZXlJbmRleCA9IGIuaW5kZXhPZignPScpXG4gICAgaWYgKGtleUluZGV4ID09PSAtMSkgcmV0dXJuIHJlc3VsdFxuICAgIHJlc3VsdFtiLnNsaWNlKDAsIGtleUluZGV4KV0gPSBiLnNsaWNlKGtleUluZGV4ICsgMSlcblxuICAgIGJ1ZiA9IGJ1Zi5zbGljZShsZW4pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgdmFyIGJ1ZiA9IGFsbG9jKDUxMilcbiAgdmFyIG5hbWUgPSBvcHRzLm5hbWVcbiAgdmFyIHByZWZpeCA9ICcnXG5cbiAgaWYgKG9wdHMudHlwZWZsYWcgPT09IDUgJiYgbmFtZVtuYW1lLmxlbmd0aCAtIDFdICE9PSAnLycpIG5hbWUgKz0gJy8nXG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChuYW1lKSAhPT0gbmFtZS5sZW5ndGgpIHJldHVybiBudWxsIC8vIHV0Zi04XG5cbiAgd2hpbGUgKEJ1ZmZlci5ieXRlTGVuZ3RoKG5hbWUpID4gMTAwKSB7XG4gICAgdmFyIGkgPSBuYW1lLmluZGV4T2YoJy8nKVxuICAgIGlmIChpID09PSAtMSkgcmV0dXJuIG51bGxcbiAgICBwcmVmaXggKz0gcHJlZml4ID8gJy8nICsgbmFtZS5zbGljZSgwLCBpKSA6IG5hbWUuc2xpY2UoMCwgaSlcbiAgICBuYW1lID0gbmFtZS5zbGljZShpICsgMSlcbiAgfVxuXG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChuYW1lKSA+IDEwMCB8fCBCdWZmZXIuYnl0ZUxlbmd0aChwcmVmaXgpID4gMTU1KSByZXR1cm4gbnVsbFxuICBpZiAob3B0cy5saW5rbmFtZSAmJiBCdWZmZXIuYnl0ZUxlbmd0aChvcHRzLmxpbmtuYW1lKSA+IDEwMCkgcmV0dXJuIG51bGxcblxuICBidWYud3JpdGUobmFtZSlcbiAgYnVmLndyaXRlKGVuY29kZU9jdChvcHRzLm1vZGUgJiBNQVNLLCA2KSwgMTAwKVxuICBidWYud3JpdGUoZW5jb2RlT2N0KG9wdHMudWlkLCA2KSwgMTA4KVxuICBidWYud3JpdGUoZW5jb2RlT2N0KG9wdHMuZ2lkLCA2KSwgMTE2KVxuICBidWYud3JpdGUoZW5jb2RlT2N0KG9wdHMuc2l6ZSwgMTEpLCAxMjQpXG4gIGJ1Zi53cml0ZShlbmNvZGVPY3QoKG9wdHMubXRpbWUuZ2V0VGltZSgpIC8gMTAwMCkgfCAwLCAxMSksIDEzNilcblxuICBidWZbMTU2XSA9IFpFUk9fT0ZGU0VUICsgdG9UeXBlZmxhZyhvcHRzLnR5cGUpXG5cbiAgaWYgKG9wdHMubGlua25hbWUpIGJ1Zi53cml0ZShvcHRzLmxpbmtuYW1lLCAxNTcpXG5cbiAgVVNUQVJfTUFHSUMuY29weShidWYsIE1BR0lDX09GRlNFVClcbiAgVVNUQVJfVkVSLmNvcHkoYnVmLCBWRVJTSU9OX09GRlNFVClcbiAgaWYgKG9wdHMudW5hbWUpIGJ1Zi53cml0ZShvcHRzLnVuYW1lLCAyNjUpXG4gIGlmIChvcHRzLmduYW1lKSBidWYud3JpdGUob3B0cy5nbmFtZSwgMjk3KVxuICBidWYud3JpdGUoZW5jb2RlT2N0KG9wdHMuZGV2bWFqb3IgfHwgMCwgNiksIDMyOSlcbiAgYnVmLndyaXRlKGVuY29kZU9jdChvcHRzLmRldm1pbm9yIHx8IDAsIDYpLCAzMzcpXG5cbiAgaWYgKHByZWZpeCkgYnVmLndyaXRlKHByZWZpeCwgMzQ1KVxuXG4gIGJ1Zi53cml0ZShlbmNvZGVPY3QoY2tzdW0oYnVmKSwgNiksIDE0OClcblxuICByZXR1cm4gYnVmXG59XG5cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGJ1ZiwgZmlsZW5hbWVFbmNvZGluZywgYWxsb3dVbmtub3duRm9ybWF0KSB7XG4gIHZhciB0eXBlZmxhZyA9IGJ1ZlsxNTZdID09PSAwID8gMCA6IGJ1ZlsxNTZdIC0gWkVST19PRkZTRVRcblxuICB2YXIgbmFtZSA9IGRlY29kZVN0cihidWYsIDAsIDEwMCwgZmlsZW5hbWVFbmNvZGluZylcbiAgdmFyIG1vZGUgPSBkZWNvZGVPY3QoYnVmLCAxMDAsIDgpXG4gIHZhciB1aWQgPSBkZWNvZGVPY3QoYnVmLCAxMDgsIDgpXG4gIHZhciBnaWQgPSBkZWNvZGVPY3QoYnVmLCAxMTYsIDgpXG4gIHZhciBzaXplID0gZGVjb2RlT2N0KGJ1ZiwgMTI0LCAxMilcbiAgdmFyIG10aW1lID0gZGVjb2RlT2N0KGJ1ZiwgMTM2LCAxMilcbiAgdmFyIHR5cGUgPSB0b1R5cGUodHlwZWZsYWcpXG4gIHZhciBsaW5rbmFtZSA9IGJ1ZlsxNTddID09PSAwID8gbnVsbCA6IGRlY29kZVN0cihidWYsIDE1NywgMTAwLCBmaWxlbmFtZUVuY29kaW5nKVxuICB2YXIgdW5hbWUgPSBkZWNvZGVTdHIoYnVmLCAyNjUsIDMyKVxuICB2YXIgZ25hbWUgPSBkZWNvZGVTdHIoYnVmLCAyOTcsIDMyKVxuICB2YXIgZGV2bWFqb3IgPSBkZWNvZGVPY3QoYnVmLCAzMjksIDgpXG4gIHZhciBkZXZtaW5vciA9IGRlY29kZU9jdChidWYsIDMzNywgOClcblxuICB2YXIgYyA9IGNrc3VtKGJ1ZilcblxuICAvLyBjaGVja3N1bSBpcyBzdGlsbCBpbml0aWFsIHZhbHVlIGlmIGhlYWRlciB3YXMgbnVsbC5cbiAgaWYgKGMgPT09IDggKiAzMikgcmV0dXJuIG51bGxcblxuICAvLyB2YWxpZCBjaGVja3N1bVxuICBpZiAoYyAhPT0gZGVjb2RlT2N0KGJ1ZiwgMTQ4LCA4KSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhciBoZWFkZXIuIE1heWJlIHRoZSB0YXIgaXMgY29ycnVwdGVkIG9yIGl0IG5lZWRzIHRvIGJlIGd1bnppcHBlZD8nKVxuXG4gIGlmIChVU1RBUl9NQUdJQy5jb21wYXJlKGJ1ZiwgTUFHSUNfT0ZGU0VULCBNQUdJQ19PRkZTRVQgKyA2KSA9PT0gMCkge1xuICAgIC8vIHVzdGFyIChwb3NpeCkgZm9ybWF0LlxuICAgIC8vIHByZXBlbmQgcHJlZml4LCBpZiBwcmVzZW50LlxuICAgIGlmIChidWZbMzQ1XSkgbmFtZSA9IGRlY29kZVN0cihidWYsIDM0NSwgMTU1LCBmaWxlbmFtZUVuY29kaW5nKSArICcvJyArIG5hbWVcbiAgfSBlbHNlIGlmIChHTlVfTUFHSUMuY29tcGFyZShidWYsIE1BR0lDX09GRlNFVCwgTUFHSUNfT0ZGU0VUICsgNikgPT09IDAgJiZcbiAgICAgICAgICAgICBHTlVfVkVSLmNvbXBhcmUoYnVmLCBWRVJTSU9OX09GRlNFVCwgVkVSU0lPTl9PRkZTRVQgKyAyKSA9PT0gMCkge1xuICAgIC8vICdnbnUnLydvbGRnbnUnIGZvcm1hdC4gU2ltaWxhciB0byB1c3RhciwgYnV0IGhhcyBzdXBwb3J0IGZvciBpbmNyZW1lbnRhbCBhbmRcbiAgICAvLyBtdWx0aS12b2x1bWUgdGFyYmFsbHMuXG4gIH0gZWxzZSB7XG4gICAgaWYgKCFhbGxvd1Vua25vd25Gb3JtYXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0YXIgaGVhZGVyOiB1bmtub3duIGZvcm1hdC4nKVxuICAgIH1cbiAgfVxuXG4gIC8vIHRvIHN1cHBvcnQgb2xkIHRhciB2ZXJzaW9ucyB0aGF0IHVzZSB0cmFpbGluZyAvIHRvIGluZGljYXRlIGRpcnNcbiAgaWYgKHR5cGVmbGFnID09PSAwICYmIG5hbWUgJiYgbmFtZVtuYW1lLmxlbmd0aCAtIDFdID09PSAnLycpIHR5cGVmbGFnID0gNVxuXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBtb2RlLFxuICAgIHVpZCxcbiAgICBnaWQsXG4gICAgc2l6ZSxcbiAgICBtdGltZTogbmV3IERhdGUoMTAwMCAqIG10aW1lKSxcbiAgICB0eXBlLFxuICAgIGxpbmtuYW1lLFxuICAgIHVuYW1lLFxuICAgIGduYW1lLFxuICAgIGRldm1ham9yLFxuICAgIGRldm1pbm9yXG4gIH1cbn1cbiIsImV4cG9ydHMuZXh0cmFjdCA9IHJlcXVpcmUoJy4vZXh0cmFjdCcpXG5leHBvcnRzLnBhY2sgPSByZXF1aXJlKCcuL3BhY2snKVxuIiwidmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJ2ZzLWNvbnN0YW50cycpXG52YXIgZW9zID0gcmVxdWlyZSgnZW5kLW9mLXN0cmVhbScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgYWxsb2MgPSBCdWZmZXIuYWxsb2NcblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuUmVhZGFibGVcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLldyaXRhYmxlXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxuXG52YXIgaGVhZGVycyA9IHJlcXVpcmUoJy4vaGVhZGVycycpXG5cbnZhciBETU9ERSA9IHBhcnNlSW50KCc3NTUnLCA4KVxudmFyIEZNT0RFID0gcGFyc2VJbnQoJzY0NCcsIDgpXG5cbnZhciBFTkRfT0ZfVEFSID0gYWxsb2MoMTAyNClcblxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxuXG52YXIgb3ZlcmZsb3cgPSBmdW5jdGlvbiAoc2VsZiwgc2l6ZSkge1xuICBzaXplICY9IDUxMVxuICBpZiAoc2l6ZSkgc2VsZi5wdXNoKEVORF9PRl9UQVIuc2xpY2UoMCwgNTEyIC0gc2l6ZSkpXG59XG5cbmZ1bmN0aW9uIG1vZGVUb1R5cGUgKG1vZGUpIHtcbiAgc3dpdGNoIChtb2RlICYgY29uc3RhbnRzLlNfSUZNVCkge1xuICAgIGNhc2UgY29uc3RhbnRzLlNfSUZCTEs6IHJldHVybiAnYmxvY2stZGV2aWNlJ1xuICAgIGNhc2UgY29uc3RhbnRzLlNfSUZDSFI6IHJldHVybiAnY2hhcmFjdGVyLWRldmljZSdcbiAgICBjYXNlIGNvbnN0YW50cy5TX0lGRElSOiByZXR1cm4gJ2RpcmVjdG9yeSdcbiAgICBjYXNlIGNvbnN0YW50cy5TX0lGSUZPOiByZXR1cm4gJ2ZpZm8nXG4gICAgY2FzZSBjb25zdGFudHMuU19JRkxOSzogcmV0dXJuICdzeW1saW5rJ1xuICB9XG5cbiAgcmV0dXJuICdmaWxlJ1xufVxuXG52YXIgU2luayA9IGZ1bmN0aW9uICh0bykge1xuICBXcml0YWJsZS5jYWxsKHRoaXMpXG4gIHRoaXMud3JpdHRlbiA9IDBcbiAgdGhpcy5fdG8gPSB0b1xuICB0aGlzLl9kZXN0cm95ZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhTaW5rLCBXcml0YWJsZSlcblxuU2luay5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYywgY2IpIHtcbiAgdGhpcy53cml0dGVuICs9IGRhdGEubGVuZ3RoXG4gIGlmICh0aGlzLl90by5wdXNoKGRhdGEpKSByZXR1cm4gY2IoKVxuICB0aGlzLl90by5fZHJhaW4gPSBjYlxufVxuXG5TaW5rLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm5cbiAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZVxuICB0aGlzLmVtaXQoJ2Nsb3NlJylcbn1cblxudmFyIExpbmtTaW5rID0gZnVuY3Rpb24gKCkge1xuICBXcml0YWJsZS5jYWxsKHRoaXMpXG4gIHRoaXMubGlua25hbWUgPSAnJ1xuICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoJ3V0Zi04JylcbiAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2Vcbn1cblxuaW5oZXJpdHMoTGlua1NpbmssIFdyaXRhYmxlKVxuXG5MaW5rU2luay5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYywgY2IpIHtcbiAgdGhpcy5saW5rbmFtZSArPSB0aGlzLl9kZWNvZGVyLndyaXRlKGRhdGEpXG4gIGNiKClcbn1cblxuTGlua1NpbmsucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVyblxuICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlXG4gIHRoaXMuZW1pdCgnY2xvc2UnKVxufVxuXG52YXIgVm9pZCA9IGZ1bmN0aW9uICgpIHtcbiAgV3JpdGFibGUuY2FsbCh0aGlzKVxuICB0aGlzLl9kZXN0cm95ZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhWb2lkLCBXcml0YWJsZSlcblxuVm9pZC5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdObyBib2R5IGFsbG93ZWQgZm9yIHRoaXMgZW50cnknKSlcbn1cblxuVm9pZC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkgcmV0dXJuXG4gIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWVcbiAgdGhpcy5lbWl0KCdjbG9zZScpXG59XG5cbnZhciBQYWNrID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhY2spKSByZXR1cm4gbmV3IFBhY2sob3B0cylcbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRzKVxuXG4gIHRoaXMuX2RyYWluID0gbm9vcFxuICB0aGlzLl9maW5hbGl6ZWQgPSBmYWxzZVxuICB0aGlzLl9maW5hbGl6aW5nID0gZmFsc2VcbiAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2VcbiAgdGhpcy5fc3RyZWFtID0gbnVsbFxufVxuXG5pbmhlcml0cyhQYWNrLCBSZWFkYWJsZSlcblxuUGFjay5wcm90b3R5cGUuZW50cnkgPSBmdW5jdGlvbiAoaGVhZGVyLCBidWZmZXIsIGNhbGxiYWNrKSB7XG4gIGlmICh0aGlzLl9zdHJlYW0pIHRocm93IG5ldyBFcnJvcignYWxyZWFkeSBwaXBpbmcgYW4gZW50cnknKVxuICBpZiAodGhpcy5fZmluYWxpemVkIHx8IHRoaXMuX2Rlc3Ryb3llZCkgcmV0dXJuXG5cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGJ1ZmZlclxuICAgIGJ1ZmZlciA9IG51bGxcbiAgfVxuXG4gIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gbm9vcFxuXG4gIHZhciBzZWxmID0gdGhpc1xuXG4gIGlmICghaGVhZGVyLnNpemUgfHwgaGVhZGVyLnR5cGUgPT09ICdzeW1saW5rJykgaGVhZGVyLnNpemUgPSAwXG4gIGlmICghaGVhZGVyLnR5cGUpIGhlYWRlci50eXBlID0gbW9kZVRvVHlwZShoZWFkZXIubW9kZSlcbiAgaWYgKCFoZWFkZXIubW9kZSkgaGVhZGVyLm1vZGUgPSBoZWFkZXIudHlwZSA9PT0gJ2RpcmVjdG9yeScgPyBETU9ERSA6IEZNT0RFXG4gIGlmICghaGVhZGVyLnVpZCkgaGVhZGVyLnVpZCA9IDBcbiAgaWYgKCFoZWFkZXIuZ2lkKSBoZWFkZXIuZ2lkID0gMFxuICBpZiAoIWhlYWRlci5tdGltZSkgaGVhZGVyLm10aW1lID0gbmV3IERhdGUoKVxuXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBoZWFkZXIuc2l6ZSA9IGJ1ZmZlci5sZW5ndGhcbiAgICB0aGlzLl9lbmNvZGUoaGVhZGVyKVxuICAgIHZhciBvayA9IHRoaXMucHVzaChidWZmZXIpXG4gICAgb3ZlcmZsb3coc2VsZiwgaGVhZGVyLnNpemUpXG4gICAgaWYgKG9rKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKVxuICAgIGVsc2UgdGhpcy5fZHJhaW4gPSBjYWxsYmFja1xuICAgIHJldHVybiBuZXcgVm9pZCgpXG4gIH1cblxuICBpZiAoaGVhZGVyLnR5cGUgPT09ICdzeW1saW5rJyAmJiAhaGVhZGVyLmxpbmtuYW1lKSB7XG4gICAgdmFyIGxpbmtTaW5rID0gbmV3IExpbmtTaW5rKClcbiAgICBlb3MobGlua1NpbmssIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHsgLy8gc3RyZWFtIHdhcyBjbG9zZWRcbiAgICAgICAgc2VsZi5kZXN0cm95KClcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgIH1cblxuICAgICAgaGVhZGVyLmxpbmtuYW1lID0gbGlua1NpbmsubGlua25hbWVcbiAgICAgIHNlbGYuX2VuY29kZShoZWFkZXIpXG4gICAgICBjYWxsYmFjaygpXG4gICAgfSlcblxuICAgIHJldHVybiBsaW5rU2lua1xuICB9XG5cbiAgdGhpcy5fZW5jb2RlKGhlYWRlcilcblxuICBpZiAoaGVhZGVyLnR5cGUgIT09ICdmaWxlJyAmJiBoZWFkZXIudHlwZSAhPT0gJ2NvbnRpZ3VvdXMtZmlsZScpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKVxuICAgIHJldHVybiBuZXcgVm9pZCgpXG4gIH1cblxuICB2YXIgc2luayA9IG5ldyBTaW5rKHRoaXMpXG5cbiAgdGhpcy5fc3RyZWFtID0gc2lua1xuXG4gIGVvcyhzaW5rLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgc2VsZi5fc3RyZWFtID0gbnVsbFxuXG4gICAgaWYgKGVycikgeyAvLyBzdHJlYW0gd2FzIGNsb3NlZFxuICAgICAgc2VsZi5kZXN0cm95KClcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgfVxuXG4gICAgaWYgKHNpbmsud3JpdHRlbiAhPT0gaGVhZGVyLnNpemUpIHsgLy8gY29ycnVwdGluZyB0YXJcbiAgICAgIHNlbGYuZGVzdHJveSgpXG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdzaXplIG1pc21hdGNoJykpXG4gICAgfVxuXG4gICAgb3ZlcmZsb3coc2VsZiwgaGVhZGVyLnNpemUpXG4gICAgaWYgKHNlbGYuX2ZpbmFsaXppbmcpIHNlbGYuZmluYWxpemUoKVxuICAgIGNhbGxiYWNrKClcbiAgfSlcblxuICByZXR1cm4gc2lua1xufVxuXG5QYWNrLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX3N0cmVhbSkge1xuICAgIHRoaXMuX2ZpbmFsaXppbmcgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodGhpcy5fZmluYWxpemVkKSByZXR1cm5cbiAgdGhpcy5fZmluYWxpemVkID0gdHJ1ZVxuICB0aGlzLnB1c2goRU5EX09GX1RBUilcbiAgdGhpcy5wdXNoKG51bGwpXG59XG5cblBhY2sucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyKSB7XG4gIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVyblxuICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlXG5cbiAgaWYgKGVycikgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgdGhpcy5lbWl0KCdjbG9zZScpXG4gIGlmICh0aGlzLl9zdHJlYW0gJiYgdGhpcy5fc3RyZWFtLmRlc3Ryb3kpIHRoaXMuX3N0cmVhbS5kZXN0cm95KClcbn1cblxuUGFjay5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgaWYgKCFoZWFkZXIucGF4KSB7XG4gICAgdmFyIGJ1ZiA9IGhlYWRlcnMuZW5jb2RlKGhlYWRlcilcbiAgICBpZiAoYnVmKSB7XG4gICAgICB0aGlzLnB1c2goYnVmKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIHRoaXMuX2VuY29kZVBheChoZWFkZXIpXG59XG5cblBhY2sucHJvdG90eXBlLl9lbmNvZGVQYXggPSBmdW5jdGlvbiAoaGVhZGVyKSB7XG4gIHZhciBwYXhIZWFkZXIgPSBoZWFkZXJzLmVuY29kZVBheCh7XG4gICAgbmFtZTogaGVhZGVyLm5hbWUsXG4gICAgbGlua25hbWU6IGhlYWRlci5saW5rbmFtZSxcbiAgICBwYXg6IGhlYWRlci5wYXhcbiAgfSlcblxuICB2YXIgbmV3SGVhZGVyID0ge1xuICAgIG5hbWU6ICdQYXhIZWFkZXInLFxuICAgIG1vZGU6IGhlYWRlci5tb2RlLFxuICAgIHVpZDogaGVhZGVyLnVpZCxcbiAgICBnaWQ6IGhlYWRlci5naWQsXG4gICAgc2l6ZTogcGF4SGVhZGVyLmxlbmd0aCxcbiAgICBtdGltZTogaGVhZGVyLm10aW1lLFxuICAgIHR5cGU6ICdwYXgtaGVhZGVyJyxcbiAgICBsaW5rbmFtZTogaGVhZGVyLmxpbmtuYW1lICYmICdQYXhIZWFkZXInLFxuICAgIHVuYW1lOiBoZWFkZXIudW5hbWUsXG4gICAgZ25hbWU6IGhlYWRlci5nbmFtZSxcbiAgICBkZXZtYWpvcjogaGVhZGVyLmRldm1ham9yLFxuICAgIGRldm1pbm9yOiBoZWFkZXIuZGV2bWlub3JcbiAgfVxuXG4gIHRoaXMucHVzaChoZWFkZXJzLmVuY29kZShuZXdIZWFkZXIpKVxuICB0aGlzLnB1c2gocGF4SGVhZGVyKVxuICBvdmVyZmxvdyh0aGlzLCBwYXhIZWFkZXIubGVuZ3RoKVxuXG4gIG5ld0hlYWRlci5zaXplID0gaGVhZGVyLnNpemVcbiAgbmV3SGVhZGVyLnR5cGUgPSBoZWFkZXIudHlwZVxuICB0aGlzLnB1c2goaGVhZGVycy5lbmNvZGUobmV3SGVhZGVyKSlcbn1cblxuUGFjay5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgZHJhaW4gPSB0aGlzLl9kcmFpblxuICB0aGlzLl9kcmFpbiA9IG5vb3BcbiAgZHJhaW4oKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhY2tcbiIsIlxuLyoqXG4gKiBGb3IgTm9kZS5qcywgc2ltcGx5IHJlLWV4cG9ydCB0aGUgY29yZSBgdXRpbC5kZXByZWNhdGVgIGZ1bmN0aW9uLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgndXRpbCcpLmRlcHJlY2F0ZTtcbiIsIi8vIFJldHVybnMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHdyYXBwZWQgY2FsbGJhY2tcbi8vIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHNob3VsZCBkbyBzb21lIHN0dWZmLCBhbmQgcmV0dXJuIGFcbi8vIHByZXN1bWFibHkgZGlmZmVyZW50IGNhbGxiYWNrIGZ1bmN0aW9uLlxuLy8gVGhpcyBtYWtlcyBzdXJlIHRoYXQgb3duIHByb3BlcnRpZXMgYXJlIHJldGFpbmVkLCBzbyB0aGF0XG4vLyBkZWNvcmF0aW9ucyBhbmQgc3VjaCBhcmUgbm90IGxvc3QgYWxvbmcgdGhlIHdheS5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHB5XG5mdW5jdGlvbiB3cmFwcHkgKGZuLCBjYikge1xuICBpZiAoZm4gJiYgY2IpIHJldHVybiB3cmFwcHkoZm4pKGNiKVxuXG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmVlZCB3cmFwcGVyIGZ1bmN0aW9uJylcblxuICBPYmplY3Qua2V5cyhmbikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgIHdyYXBwZXJba10gPSBmbltrXVxuICB9KVxuXG4gIHJldHVybiB3cmFwcGVyXG5cbiAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXVxuICAgIH1cbiAgICB2YXIgcmV0ID0gZm4uYXBwbHkodGhpcywgYXJncylcbiAgICB2YXIgY2IgPSBhcmdzW2FyZ3MubGVuZ3RoLTFdXG4gICAgaWYgKHR5cGVvZiByZXQgPT09ICdmdW5jdGlvbicgJiYgcmV0ICE9PSBjYikge1xuICAgICAgT2JqZWN0LmtleXMoY2IpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgcmV0W2tdID0gY2Jba11cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxufVxuIiwiLyoqXG4gKiBaaXBTdHJlYW1cbiAqXG4gKiBAaWdub3JlXG4gKiBAbGljZW5zZSBbTUlUXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLXppcC1zdHJlYW0vYmxvYi9tYXN0ZXIvTElDRU5TRX1cbiAqIEBjb3B5cmlnaHQgKGMpIDIwMTQgQ2hyaXMgVGFsa2luZ3RvbiwgY29udHJpYnV0b3JzLlxuICovXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCd1dGlsJykuaW5oZXJpdHM7XG5cbnZhciBaaXBBcmNoaXZlT3V0cHV0U3RyZWFtID0gcmVxdWlyZSgnY29tcHJlc3MtY29tbW9ucycpLlppcEFyY2hpdmVPdXRwdXRTdHJlYW07XG52YXIgWmlwQXJjaGl2ZUVudHJ5ID0gcmVxdWlyZSgnY29tcHJlc3MtY29tbW9ucycpLlppcEFyY2hpdmVFbnRyeTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCdhcmNoaXZlci11dGlscycpO1xuXG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgZXh0ZXJuYWw6WmlwQXJjaGl2ZU91dHB1dFN0cmVhbVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmNvbW1lbnRdIFNldHMgdGhlIHppcCBhcmNoaXZlIGNvbW1lbnQuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmZvcmNlTG9jYWxUaW1lPWZhbHNlXSBGb3JjZXMgdGhlIGFyY2hpdmUgdG8gY29udGFpbiBsb2NhbCBmaWxlIHRpbWVzIGluc3RlYWQgb2YgVVRDLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5mb3JjZVppcDY0PWZhbHNlXSBGb3JjZXMgdGhlIGFyY2hpdmUgdG8gY29udGFpbiBaSVA2NCBoZWFkZXJzLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5zdG9yZT1mYWxzZV0gU2V0cyB0aGUgY29tcHJlc3Npb24gbWV0aG9kIHRvIFNUT1JFLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLnpsaWJdIFBhc3NlZCB0byBbemxpYl17QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS96bGliLmh0bWwjemxpYl9jbGFzc19vcHRpb25zfVxuICogdG8gY29udHJvbCBjb21wcmVzc2lvbi5cbiAqL1xudmFyIFppcFN0cmVhbSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgWmlwU3RyZWFtKSkge1xuICAgIHJldHVybiBuZXcgWmlwU3RyZWFtKG9wdGlvbnMpO1xuICB9XG5cbiAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIG9wdGlvbnMuemxpYiA9IG9wdGlvbnMuemxpYiB8fCB7fTtcblxuICBaaXBBcmNoaXZlT3V0cHV0U3RyZWFtLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmxldmVsID09PSAnbnVtYmVyJyAmJiBvcHRpb25zLmxldmVsID49IDApIHtcbiAgICBvcHRpb25zLnpsaWIubGV2ZWwgPSBvcHRpb25zLmxldmVsO1xuICAgIGRlbGV0ZSBvcHRpb25zLmxldmVsO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLmZvcmNlWmlwNjQgJiYgdHlwZW9mIG9wdGlvbnMuemxpYi5sZXZlbCA9PT0gJ251bWJlcicgJiYgb3B0aW9ucy56bGliLmxldmVsID09PSAwKSB7XG4gICAgb3B0aW9ucy5zdG9yZSA9IHRydWU7XG4gIH1cblxuICBvcHRpb25zLm5hbWVQcmVwZW5kU2xhc2ggPSBvcHRpb25zLm5hbWVQcmVwZW5kU2xhc2ggfHwgZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMuY29tbWVudCAmJiBvcHRpb25zLmNvbW1lbnQubGVuZ3RoID4gMCkge1xuICAgIHRoaXMuc2V0Q29tbWVudChvcHRpb25zLmNvbW1lbnQpO1xuICB9XG59O1xuXG5pbmhlcml0cyhaaXBTdHJlYW0sIFppcEFyY2hpdmVPdXRwdXRTdHJlYW0pO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgZW50cnkgZGF0YSB3aXRoIGZhbGxiYWNrcyBmb3Iga2V5IHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSAge09iamVjdH0gZGF0YVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5aaXBTdHJlYW0ucHJvdG90eXBlLl9ub3JtYWxpemVGaWxlRGF0YSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgZGF0YSA9IHV0aWwuZGVmYXVsdHMoZGF0YSwge1xuICAgIHR5cGU6ICdmaWxlJyxcbiAgICBuYW1lOiBudWxsLFxuICAgIG5hbWVQcmVwZW5kU2xhc2g6IHRoaXMub3B0aW9ucy5uYW1lUHJlcGVuZFNsYXNoLFxuICAgIGxpbmtuYW1lOiBudWxsLFxuICAgIGRhdGU6IG51bGwsXG4gICAgbW9kZTogbnVsbCxcbiAgICBzdG9yZTogdGhpcy5vcHRpb25zLnN0b3JlLFxuICAgIGNvbW1lbnQ6ICcnXG4gIH0pO1xuXG4gIHZhciBpc0RpciA9IGRhdGEudHlwZSA9PT0gJ2RpcmVjdG9yeSc7XG4gIHZhciBpc1N5bWxpbmsgPSBkYXRhLnR5cGUgPT09ICdzeW1saW5rJztcblxuICBpZiAoZGF0YS5uYW1lKSB7XG4gICAgZGF0YS5uYW1lID0gdXRpbC5zYW5pdGl6ZVBhdGgoZGF0YS5uYW1lKTtcblxuICAgIGlmICghaXNTeW1saW5rICYmIGRhdGEubmFtZS5zbGljZSgtMSkgPT09ICcvJykge1xuICAgICAgaXNEaXIgPSB0cnVlO1xuICAgICAgZGF0YS50eXBlID0gJ2RpcmVjdG9yeSc7XG4gICAgfSBlbHNlIGlmIChpc0Rpcikge1xuICAgICAgZGF0YS5uYW1lICs9ICcvJztcbiAgICB9XG4gIH1cblxuICBpZiAoaXNEaXIgfHwgaXNTeW1saW5rKSB7XG4gICAgZGF0YS5zdG9yZSA9IHRydWU7XG4gIH1cblxuICBkYXRhLmRhdGUgPSB1dGlsLmRhdGVpZnkoZGF0YS5kYXRlKTtcblxuICByZXR1cm4gZGF0YTtcbn07XG5cbi8qKlxuICogQXBwZW5kcyBhbiBlbnRyeSBnaXZlbiBhbiBpbnB1dCBzb3VyY2UgKHRleHQgc3RyaW5nLCBidWZmZXIsIG9yIHN0cmVhbSkuXG4gKlxuICogQHBhcmFtICB7KEJ1ZmZlcnxTdHJlYW18U3RyaW5nKX0gc291cmNlIFRoZSBpbnB1dCBzb3VyY2UuXG4gKiBAcGFyYW0gIHtPYmplY3R9IGRhdGFcbiAqIEBwYXJhbSAge1N0cmluZ30gZGF0YS5uYW1lIFNldHMgdGhlIGVudHJ5IG5hbWUgaW5jbHVkaW5nIGludGVybmFsIHBhdGguXG4gKiBAcGFyYW0gIHtTdHJpbmd9IFtkYXRhLmNvbW1lbnRdIFNldHMgdGhlIGVudHJ5IGNvbW1lbnQuXG4gKiBAcGFyYW0gIHsoU3RyaW5nfERhdGUpfSBbZGF0YS5kYXRlPU5PVygpXSBTZXRzIHRoZSBlbnRyeSBkYXRlLlxuICogQHBhcmFtICB7TnVtYmVyfSBbZGF0YS5tb2RlPUQ6MDc1NS9GOjA2NDRdIFNldHMgdGhlIGVudHJ5IHBlcm1pc3Npb25zLlxuICogQHBhcmFtICB7Qm9vbGVhbn0gW2RhdGEuc3RvcmU9b3B0aW9ucy5zdG9yZV0gU2V0cyB0aGUgY29tcHJlc3Npb24gbWV0aG9kIHRvIFNUT1JFLlxuICogQHBhcmFtICB7U3RyaW5nfSBbZGF0YS50eXBlPWZpbGVdIFNldHMgdGhlIGVudHJ5IHR5cGUuIERlZmF1bHRzIHRvIGBkaXJlY3RvcnlgXG4gKiBpZiBuYW1lIGVuZHMgd2l0aCB0cmFpbGluZyBzbGFzaC5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB0aGlzXG4gKi9cblppcFN0cmVhbS5wcm90b3R5cGUuZW50cnkgPSBmdW5jdGlvbihzb3VyY2UsIGRhdGEsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHRoaXMuX2VtaXRFcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XG4gIH1cblxuICBkYXRhID0gdGhpcy5fbm9ybWFsaXplRmlsZURhdGEoZGF0YSk7XG5cbiAgaWYgKGRhdGEudHlwZSAhPT0gJ2ZpbGUnICYmIGRhdGEudHlwZSAhPT0gJ2RpcmVjdG9yeScgJiYgZGF0YS50eXBlICE9PSAnc3ltbGluaycpIHtcbiAgICBjYWxsYmFjayhuZXcgRXJyb3IoZGF0YS50eXBlICsgJyBlbnRyaWVzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkJykpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YS5uYW1lICE9PSAnc3RyaW5nJyB8fCBkYXRhLm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgY2FsbGJhY2sobmV3IEVycm9yKCdlbnRyeSBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlJykpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkYXRhLnR5cGUgPT09ICdzeW1saW5rJyAmJiB0eXBlb2YgZGF0YS5saW5rbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ2VudHJ5IGxpbmtuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlIHdoZW4gdHlwZSBlcXVhbHMgc3ltbGluaycpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZW50cnkgPSBuZXcgWmlwQXJjaGl2ZUVudHJ5KGRhdGEubmFtZSk7XG4gIGVudHJ5LnNldFRpbWUoZGF0YS5kYXRlLCB0aGlzLm9wdGlvbnMuZm9yY2VMb2NhbFRpbWUpO1xuXG4gIGlmIChkYXRhLm5hbWVQcmVwZW5kU2xhc2gpIHtcbiAgICBlbnRyeS5zZXROYW1lKGRhdGEubmFtZSwgdHJ1ZSk7XG4gIH1cblxuICBpZiAoZGF0YS5zdG9yZSkge1xuICAgIGVudHJ5LnNldE1ldGhvZCgwKTtcbiAgfVxuXG4gIGlmIChkYXRhLmNvbW1lbnQubGVuZ3RoID4gMCkge1xuICAgIGVudHJ5LnNldENvbW1lbnQoZGF0YS5jb21tZW50KTtcbiAgfVxuXG4gIGlmIChkYXRhLnR5cGUgPT09ICdzeW1saW5rJyAmJiB0eXBlb2YgZGF0YS5tb2RlICE9PSAnbnVtYmVyJykge1xuICAgIGRhdGEubW9kZSA9IDQwOTYwOyAvLyAwMTIwMDAwXG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEubW9kZSA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAoZGF0YS50eXBlID09PSAnc3ltbGluaycpIHtcbiAgICAgIGRhdGEubW9kZSB8PSA0MDk2MDtcbiAgICB9XG5cbiAgICBlbnRyeS5zZXRVbml4TW9kZShkYXRhLm1vZGUpO1xuICB9XG5cbiAgaWYgKGRhdGEudHlwZSA9PT0gJ3N5bWxpbmsnICYmIHR5cGVvZiBkYXRhLmxpbmtuYW1lID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZSA9IEJ1ZmZlci5mcm9tKGRhdGEubGlua25hbWUpO1xuICB9XG5cbiAgcmV0dXJuIFppcEFyY2hpdmVPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmVudHJ5LmNhbGwodGhpcywgZW50cnksIHNvdXJjZSwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBGaW5hbGl6ZXMgdGhlIGluc3RhbmNlIGFuZCBwcmV2ZW50cyBmdXJ0aGVyIGFwcGVuZGluZyB0byB0aGUgYXJjaGl2ZVxuICogc3RydWN0dXJlIChxdWV1ZSB3aWxsIGNvbnRpbnVlIHRpbCBkcmFpbmVkKS5cbiAqXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuWmlwU3RyZWFtLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmZpbmlzaCgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoaXMgc3RyZWFtLlxuICogQGZ1bmN0aW9uIFppcFN0cmVhbSNnZXRCeXRlc1dyaXR0ZW5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9XG4gKi9cblxuLyoqXG4gKiBDb21wcmVzcyBDb21tb25zIFppcEFyY2hpdmVPdXRwdXRTdHJlYW1cbiAqIEBleHRlcm5hbCBaaXBBcmNoaXZlT3V0cHV0U3RyZWFtXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWNvbXByZXNzLWNvbW1vbnN9XG4gKi9cbiIsIi8qKlxuICogYXJjaGl2ZXItdXRpbHNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBUYWxraW5ndG9uLCBjb250cmlidXRvcnMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXJjaGl2ZXJqcy9ub2RlLWFyY2hpdmVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UtTUlUXG4gKi9cbnZhciBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxudmFyIGZsYXR0ZW4gPSByZXF1aXJlKCdsb2Rhc2guZmxhdHRlbicpO1xudmFyIGRpZmZlcmVuY2UgPSByZXF1aXJlKCdsb2Rhc2guZGlmZmVyZW5jZScpO1xudmFyIHVuaW9uID0gcmVxdWlyZSgnbG9kYXNoLnVuaW9uJyk7XG52YXIgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC5pc3BsYWlub2JqZWN0Jyk7XG5cbnZhciBnbG9iID0gcmVxdWlyZSgnZ2xvYicpO1xuXG52YXIgZmlsZSA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbnZhciBwYXRoU2VwYXJhdG9yUmUgPSAvW1xcL1xcXFxdL2c7XG5cbi8vIFByb2Nlc3Mgc3BlY2lmaWVkIHdpbGRjYXJkIGdsb2IgcGF0dGVybnMgb3IgZmlsZW5hbWVzIGFnYWluc3QgYVxuLy8gY2FsbGJhY2ssIGV4Y2x1ZGluZyBhbmQgdW5pcXVpbmcgZmlsZXMgaW4gdGhlIHJlc3VsdCBzZXQuXG52YXIgcHJvY2Vzc1BhdHRlcm5zID0gZnVuY3Rpb24ocGF0dGVybnMsIGZuKSB7XG4gIC8vIEZpbGVwYXRocyB0byByZXR1cm4uXG4gIHZhciByZXN1bHQgPSBbXTtcbiAgLy8gSXRlcmF0ZSBvdmVyIGZsYXR0ZW5lZCBwYXR0ZXJucyBhcnJheS5cbiAgZmxhdHRlbihwYXR0ZXJucykuZm9yRWFjaChmdW5jdGlvbihwYXR0ZXJuKSB7XG4gICAgLy8gSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyAhIGl0IHNob3VsZCBiZSBvbWl0dGVkXG4gICAgdmFyIGV4Y2x1c2lvbiA9IHBhdHRlcm4uaW5kZXhPZignIScpID09PSAwO1xuICAgIC8vIElmIHRoZSBwYXR0ZXJuIGlzIGFuIGV4Y2x1c2lvbiwgcmVtb3ZlIHRoZSAhXG4gICAgaWYgKGV4Y2x1c2lvbikgeyBwYXR0ZXJuID0gcGF0dGVybi5zbGljZSgxKTsgfVxuICAgIC8vIEZpbmQgYWxsIG1hdGNoaW5nIGZpbGVzIGZvciB0aGlzIHBhdHRlcm4uXG4gICAgdmFyIG1hdGNoZXMgPSBmbihwYXR0ZXJuKTtcbiAgICBpZiAoZXhjbHVzaW9uKSB7XG4gICAgICAvLyBJZiBhbiBleGNsdXNpb24sIHJlbW92ZSBtYXRjaGluZyBmaWxlcy5cbiAgICAgIHJlc3VsdCA9IGRpZmZlcmVuY2UocmVzdWx0LCBtYXRjaGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBtYXRjaGluZyBmaWxlcy5cbiAgICAgIHJlc3VsdCA9IHVuaW9uKHJlc3VsdCwgbWF0Y2hlcyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFRydWUgaWYgdGhlIGZpbGUgcGF0aCBleGlzdHMuXG5maWxlLmV4aXN0cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgZmlsZXBhdGggPSBwYXRoLmpvaW4uYXBwbHkocGF0aCwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZXBhdGgpO1xufTtcblxuLy8gUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBmaWxlIHBhdGhzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHdpbGRjYXJkIHBhdHRlcm5zLlxuZmlsZS5leHBhbmQgPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvcHRpb25zIG9iamVjdCwgc2F2ZSB0aG9zZSBvcHRpb25zIHRvIHBhc3NcbiAgLy8gaW50byB0aGUgRmlsZS5wcm90b3R5cGUuZ2xvYi5zeW5jIG1ldGhvZC5cbiAgdmFyIG9wdGlvbnMgPSBpc1BsYWluT2JqZWN0KGFyZ3NbMF0pID8gYXJncy5zaGlmdCgpIDoge307XG4gIC8vIFVzZSB0aGUgZmlyc3QgYXJndW1lbnQgaWYgaXQncyBhbiBBcnJheSwgb3RoZXJ3aXNlIGNvbnZlcnQgdGhlIGFyZ3VtZW50c1xuICAvLyBvYmplY3QgdG8gYW4gYXJyYXkgYW5kIHVzZSB0aGF0LlxuICB2YXIgcGF0dGVybnMgPSBBcnJheS5pc0FycmF5KGFyZ3NbMF0pID8gYXJnc1swXSA6IGFyZ3M7XG4gIC8vIFJldHVybiBlbXB0eSBzZXQgaWYgdGhlcmUgYXJlIG5vIHBhdHRlcm5zIG9yIGZpbGVwYXRocy5cbiAgaWYgKHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gW107IH1cbiAgLy8gUmV0dXJuIGFsbCBtYXRjaGluZyBmaWxlcGF0aHMuXG4gIHZhciBtYXRjaGVzID0gcHJvY2Vzc1BhdHRlcm5zKHBhdHRlcm5zLCBmdW5jdGlvbihwYXR0ZXJuKSB7XG4gICAgLy8gRmluZCBhbGwgbWF0Y2hpbmcgZmlsZXMgZm9yIHRoaXMgcGF0dGVybi5cbiAgICByZXR1cm4gZ2xvYi5zeW5jKHBhdHRlcm4sIG9wdGlvbnMpO1xuICB9KTtcbiAgLy8gRmlsdGVyIHJlc3VsdCBzZXQ/XG4gIGlmIChvcHRpb25zLmZpbHRlcikge1xuICAgIG1hdGNoZXMgPSBtYXRjaGVzLmZpbHRlcihmdW5jdGlvbihmaWxlcGF0aCkge1xuICAgICAgZmlsZXBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5jd2QgfHwgJycsIGZpbGVwYXRoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoZmlsZXBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHRoZSBmaWxlIGlzIG9mIHRoZSByaWdodCB0eXBlIGFuZCBleGlzdHMsIHRoaXMgc2hvdWxkIHdvcmsuXG4gICAgICAgICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVwYXRoKVtvcHRpb25zLmZpbHRlcl0oKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaXQncyBwcm9iYWJseSBub3QgdGhlIHJpZ2h0IHR5cGUuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcztcbn07XG5cbi8vIEJ1aWxkIGEgbXVsdGkgdGFzayBcImZpbGVzXCIgb2JqZWN0IGR5bmFtaWNhbGx5LlxuZmlsZS5leHBhbmRNYXBwaW5nID0gZnVuY3Rpb24ocGF0dGVybnMsIGRlc3RCYXNlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5hbWU6IGZ1bmN0aW9uKGRlc3RCYXNlLCBkZXN0UGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguam9pbihkZXN0QmFzZSB8fCAnJywgZGVzdFBhdGgpO1xuICAgIH1cbiAgfSwgb3B0aW9ucyk7XG4gIHZhciBmaWxlcyA9IFtdO1xuICB2YXIgZmlsZUJ5RGVzdCA9IHt9O1xuICAvLyBGaW5kIGFsbCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuLCB1c2luZyBwYXNzZWQtaW4gb3B0aW9ucy5cbiAgZmlsZS5leHBhbmQob3B0aW9ucywgcGF0dGVybnMpLmZvckVhY2goZnVuY3Rpb24oc3JjKSB7XG4gICAgdmFyIGRlc3RQYXRoID0gc3JjO1xuICAgIC8vIEZsYXR0ZW4/XG4gICAgaWYgKG9wdGlvbnMuZmxhdHRlbikge1xuICAgICAgZGVzdFBhdGggPSBwYXRoLmJhc2VuYW1lKGRlc3RQYXRoKTtcbiAgICB9XG4gICAgLy8gQ2hhbmdlIHRoZSBleHRlbnNpb24/XG4gICAgaWYgKG9wdGlvbnMuZXh0KSB7XG4gICAgICBkZXN0UGF0aCA9IGRlc3RQYXRoLnJlcGxhY2UoLyhcXC5bXlxcL10qKT8kLywgb3B0aW9ucy5leHQpO1xuICAgIH1cbiAgICAvLyBHZW5lcmF0ZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS5cbiAgICB2YXIgZGVzdCA9IG9wdGlvbnMucmVuYW1lKGRlc3RCYXNlLCBkZXN0UGF0aCwgb3B0aW9ucyk7XG4gICAgLy8gUHJlcGVuZCBjd2QgdG8gc3JjIHBhdGggaWYgbmVjZXNzYXJ5LlxuICAgIGlmIChvcHRpb25zLmN3ZCkgeyBzcmMgPSBwYXRoLmpvaW4ob3B0aW9ucy5jd2QsIHNyYyk7IH1cbiAgICAvLyBOb3JtYWxpemUgZmlsZXBhdGhzIHRvIGJlIHVuaXgtc3R5bGUuXG4gICAgZGVzdCA9IGRlc3QucmVwbGFjZShwYXRoU2VwYXJhdG9yUmUsICcvJyk7XG4gICAgc3JjID0gc3JjLnJlcGxhY2UocGF0aFNlcGFyYXRvclJlLCAnLycpO1xuICAgIC8vIE1hcCBjb3JyZWN0IHNyYyBwYXRoIHRvIGRlc3QgcGF0aC5cbiAgICBpZiAoZmlsZUJ5RGVzdFtkZXN0XSkge1xuICAgICAgLy8gSWYgZGVzdCBhbHJlYWR5IGV4aXN0cywgcHVzaCB0aGlzIHNyYyBvbnRvIHRoYXQgZGVzdCdzIHNyYyBhcnJheS5cbiAgICAgIGZpbGVCeURlc3RbZGVzdF0uc3JjLnB1c2goc3JjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBzcmMtZGVzdCBmaWxlIG1hcHBpbmcgb2JqZWN0LlxuICAgICAgZmlsZXMucHVzaCh7XG4gICAgICAgIHNyYzogW3NyY10sXG4gICAgICAgIGRlc3Q6IGRlc3QsXG4gICAgICB9KTtcbiAgICAgIC8vIEFuZCBzdG9yZSBhIHJlZmVyZW5jZSBmb3IgbGF0ZXIgdXNlLlxuICAgICAgZmlsZUJ5RGVzdFtkZXN0XSA9IGZpbGVzW2ZpbGVzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWxlcztcbn07XG5cbi8vIHJldXNpbmcgYml0cyBvZiBncnVudCdzIG11bHRpLXRhc2sgc291cmNlIG5vcm1hbGl6YXRpb25cbmZpbGUubm9ybWFsaXplRmlsZXNBcnJheSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgdmFyIGZpbGVzID0gW107XG5cbiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBwcm9wO1xuICAgIGlmICgnc3JjJyBpbiBvYmogfHwgJ2Rlc3QnIGluIG9iaikge1xuICAgICAgZmlsZXMucHVzaChvYmopO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGZpbGVzID0gXyhmaWxlcykuY2hhaW4oKS5mb3JFYWNoKGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghKCdzcmMnIGluIG9iaikgfHwgIW9iai5zcmMpIHsgcmV0dXJuOyB9XG4gICAgLy8gTm9ybWFsaXplIC5zcmMgcHJvcGVydGllcyB0byBmbGF0dGVuZWQgYXJyYXkuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqLnNyYykpIHtcbiAgICAgIG9iai5zcmMgPSBmbGF0dGVuKG9iai5zcmMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmouc3JjID0gW29iai5zcmNdO1xuICAgIH1cbiAgfSkubWFwKGZ1bmN0aW9uKG9iaikge1xuICAgIC8vIEJ1aWxkIG9wdGlvbnMgb2JqZWN0LCByZW1vdmluZyB1bndhbnRlZCBwcm9wZXJ0aWVzLlxuICAgIHZhciBleHBhbmRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgICBkZWxldGUgZXhwYW5kT3B0aW9ucy5zcmM7XG4gICAgZGVsZXRlIGV4cGFuZE9wdGlvbnMuZGVzdDtcblxuICAgIC8vIEV4cGFuZCBmaWxlIG1hcHBpbmdzLlxuICAgIGlmIChvYmouZXhwYW5kKSB7XG4gICAgICByZXR1cm4gZmlsZS5leHBhbmRNYXBwaW5nKG9iai5zcmMsIG9iai5kZXN0LCBleHBhbmRPcHRpb25zKS5tYXAoZnVuY3Rpb24obWFwT2JqKSB7XG4gICAgICAgIC8vIENvcHkgb2JqIHByb3BlcnRpZXMgdG8gcmVzdWx0LlxuICAgICAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgICAgICAgLy8gTWFrZSBhIGNsb25lIG9mIHRoZSBvcmlnIG9iaiBhdmFpbGFibGUuXG4gICAgICAgIHJlc3VsdC5vcmlnID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgICAgICAgLy8gU2V0IC5zcmMgYW5kIC5kZXN0LCBwcm9jZXNzaW5nIGJvdGggYXMgdGVtcGxhdGVzLlxuICAgICAgICByZXN1bHQuc3JjID0gbWFwT2JqLnNyYztcbiAgICAgICAgcmVzdWx0LmRlc3QgPSBtYXBPYmouZGVzdDtcbiAgICAgICAgLy8gUmVtb3ZlIHVud2FudGVkIHByb3BlcnRpZXMuXG4gICAgICAgIFsnZXhwYW5kJywgJ2N3ZCcsICdmbGF0dGVuJywgJ3JlbmFtZScsICdleHQnXS5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgICBkZWxldGUgcmVzdWx0W3Byb3BdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvcHkgb2JqIHByb3BlcnRpZXMgdG8gcmVzdWx0LCBhZGRpbmcgYW4gLm9yaWcgcHJvcGVydHkuXG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIG9iaik7XG4gICAgLy8gTWFrZSBhIGNsb25lIG9mIHRoZSBvcmlnIG9iaiBhdmFpbGFibGUuXG4gICAgcmVzdWx0Lm9yaWcgPSBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xuXG4gICAgaWYgKCdzcmMnIGluIHJlc3VsdCkge1xuICAgICAgLy8gRXhwb3NlIGFuIGV4cGFuZC1vbi1kZW1hbmQgZ2V0dGVyIG1ldGhvZCBhcyAuc3JjLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgJ3NyYycsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBmbigpIHtcbiAgICAgICAgICB2YXIgc3JjO1xuICAgICAgICAgIGlmICghKCdyZXN1bHQnIGluIGZuKSkge1xuICAgICAgICAgICAgc3JjID0gb2JqLnNyYztcbiAgICAgICAgICAgIC8vIElmIHNyYyBpcyBhbiBhcnJheSwgZmxhdHRlbiBpdC4gT3RoZXJ3aXNlLCBtYWtlIGl0IGludG8gYW4gYXJyYXkuXG4gICAgICAgICAgICBzcmMgPSBBcnJheS5pc0FycmF5KHNyYykgPyBmbGF0dGVuKHNyYykgOiBbc3JjXTtcbiAgICAgICAgICAgIC8vIEV4cGFuZCBzcmMgZmlsZXMsIG1lbW9pemluZyByZXN1bHQuXG4gICAgICAgICAgICBmbi5yZXN1bHQgPSBmaWxlLmV4cGFuZChleHBhbmRPcHRpb25zLCBzcmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZm4ucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoJ2Rlc3QnIGluIHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRlc3QgPSBvYmouZGVzdDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KS5mbGF0dGVuKCkudmFsdWUoKTtcblxuICByZXR1cm4gZmlsZXM7XG59O1xuIiwiLyoqXG4gKiBhcmNoaXZlci11dGlsc1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBDaHJpcyBUYWxraW5ndG9uLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FyY2hpdmVyanMvYXJjaGl2ZXItdXRpbHMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG52YXIgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgbGF6eXN0cmVhbSA9IHJlcXVpcmUoJ2xhenlzdHJlYW0nKTtcbnZhciBub3JtYWxpemVQYXRoID0gcmVxdWlyZSgnbm9ybWFsaXplLXBhdGgnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJ2xvZGFzaC5kZWZhdWx0cycpO1xuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJykuU3RyZWFtO1xudmFyIFBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuUGFzc1Rocm91Z2g7XG5cbnZhciB1dGlscyA9IG1vZHVsZS5leHBvcnRzID0ge307XG51dGlscy5maWxlID0gcmVxdWlyZSgnLi9maWxlLmpzJyk7XG5cbnV0aWxzLmNvbGxlY3RTdHJlYW0gPSBmdW5jdGlvbihzb3VyY2UsIGNhbGxiYWNrKSB7XG4gIHZhciBjb2xsZWN0aW9uID0gW107XG4gIHZhciBzaXplID0gMDtcblxuICBzb3VyY2Uub24oJ2Vycm9yJywgY2FsbGJhY2spO1xuXG4gIHNvdXJjZS5vbignZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7XG4gICAgY29sbGVjdGlvbi5wdXNoKGNodW5rKTtcbiAgICBzaXplICs9IGNodW5rLmxlbmd0aDtcbiAgfSk7XG5cbiAgc291cmNlLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jKHNpemUpO1xuICAgIHZhciBvZmZzZXQgPSAwO1xuXG4gICAgY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgIGRhdGEuY29weShidWYsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gZGF0YS5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICBjYWxsYmFjayhudWxsLCBidWYpO1xuICB9KTtcbn07XG5cbnV0aWxzLmRhdGVpZnkgPSBmdW5jdGlvbihkYXRlaXNoKSB7XG4gIGRhdGVpc2ggPSBkYXRlaXNoIHx8IG5ldyBEYXRlKCk7XG5cbiAgaWYgKGRhdGVpc2ggaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgZGF0ZWlzaCA9IGRhdGVpc2g7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGVpc2ggPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZWlzaCA9IG5ldyBEYXRlKGRhdGVpc2gpO1xuICB9IGVsc2Uge1xuICAgIGRhdGVpc2ggPSBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGVpc2g7XG59O1xuXG4vLyB0aGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIGxvZGFzaCB2ZXJzaW9uXG51dGlscy5kZWZhdWx0cyA9IGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBndWFyZCkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgYXJnc1swXSA9IGFyZ3NbMF0gfHwge307XG5cbiAgcmV0dXJuIGRlZmF1bHRzKC4uLmFyZ3MpO1xufTtcblxudXRpbHMuaXNTdHJlYW0gPSBmdW5jdGlvbihzb3VyY2UpIHtcbiAgcmV0dXJuIHNvdXJjZSBpbnN0YW5jZW9mIFN0cmVhbTtcbn07XG5cbnV0aWxzLmxhenlSZWFkU3RyZWFtID0gZnVuY3Rpb24oZmlsZXBhdGgpIHtcbiAgcmV0dXJuIG5ldyBsYXp5c3RyZWFtLlJlYWRhYmxlKGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmcy5jcmVhdGVSZWFkU3RyZWFtKGZpbGVwYXRoKTtcbiAgfSk7XG59O1xuXG51dGlscy5ub3JtYWxpemVJbnB1dFNvdXJjZSA9IGZ1bmN0aW9uKHNvdXJjZSkge1xuICBpZiAoc291cmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzb3VyY2UpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmlzU3RyZWFtKHNvdXJjZSkpIHtcbiAgICAvLyBBbHdheXMgcGlwZSB0aHJvdWdoIGEgUGFzc1Rocm91Z2ggc3RyZWFtIHRvIGd1YXJhbnRlZSBwYXVzaW5nIHRoZSBzdHJlYW0gaWYgaXQncyBhbHJlYWR5IGZsb3dpbmcsXG4gICAgLy8gc2luY2UgaXQgd2lsbCBvbmx5IGJlIHByb2Nlc3NlZCBpbiBhIChkaXN0YW50KSBmdXR1cmUgaXRlcmF0aW9uIG9mIHRoZSBldmVudCBsb29wLCBhbmQgd2lsbCBsb3NlXG4gICAgLy8gZGF0YSBpZiBhbHJlYWR5IGZsb3dpbmcgbm93LlxuICAgIHJldHVybiBzb3VyY2UucGlwZShuZXcgUGFzc1Rocm91Z2goKSk7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufTtcblxudXRpbHMuc2FuaXRpemVQYXRoID0gZnVuY3Rpb24oZmlsZXBhdGgpIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgoZmlsZXBhdGgsIGZhbHNlKS5yZXBsYWNlKC9eXFx3KzovLCAnJykucmVwbGFjZSgvXihcXC5cXC5cXC98XFwvKSsvLCAnJyk7XG59O1xuXG51dGlscy50cmFpbGluZ1NsYXNoSXQgPSBmdW5jdGlvbihzdHIpIHtcbiAgcmV0dXJuIHN0ci5zbGljZSgtMSkgIT09ICcvJyA/IHN0ciArICcvJyA6IHN0cjtcbn07XG5cbnV0aWxzLnVuaXhpZnlQYXRoID0gZnVuY3Rpb24oZmlsZXBhdGgpIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgoZmlsZXBhdGgsIGZhbHNlKS5yZXBsYWNlKC9eXFx3KzovLCAnJyk7XG59O1xuXG51dGlscy53YWxrZGlyID0gZnVuY3Rpb24oZGlycGF0aCwgYmFzZSwgY2FsbGJhY2spIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBpZiAodHlwZW9mIGJhc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGJhc2U7XG4gICAgYmFzZSA9IGRpcnBhdGg7XG4gIH1cblxuICBmcy5yZWFkZGlyKGRpcnBhdGgsIGZ1bmN0aW9uKGVyciwgbGlzdCkge1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgZmlsZTtcbiAgICB2YXIgZmlsZXBhdGg7XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB9XG5cbiAgICAoZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIGZpbGUgPSBsaXN0W2krK107XG5cbiAgICAgIGlmICghZmlsZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0cyk7XG4gICAgICB9XG5cbiAgICAgIGZpbGVwYXRoID0gcGF0aC5qb2luKGRpcnBhdGgsIGZpbGUpO1xuXG4gICAgICBmcy5zdGF0KGZpbGVwYXRoLCBmdW5jdGlvbihlcnIsIHN0YXRzKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgcGF0aDogZmlsZXBhdGgsXG4gICAgICAgICAgcmVsYXRpdmU6IHBhdGgucmVsYXRpdmUoYmFzZSwgZmlsZXBhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSxcbiAgICAgICAgICBzdGF0czogc3RhdHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICB1dGlscy53YWxrZGlyKGZpbGVwYXRoLCBiYXNlLCBmdW5jdGlvbihlcnIsIHJlcykge1xuICAgICAgICAgICAgcmVzLmZvckVhY2goZnVuY3Rpb24oZGlyRW50cnkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGRpckVudHJ5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYXNzZXJ0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJ1ZmZlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjaGlsZF9wcm9jZXNzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvbnN0YW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJldmVudHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3RyaW5nX2RlY29kZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXRpbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ6bGliXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9heGlvc19fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9lbGVjdHJvbl9zZXJ2ZV9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9lbGVjdHJvbl9zdG9yZV9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9leHRyYWN0X3ppcF9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9weXRob25fc2hlbGxfXzsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfdGFyX187IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9lbmRzLXdpdGhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9maWx0ZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9mb3ItZWFjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL21hcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL3NvbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9zdGFydHMtd2l0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2pzb24vc3RyaW5naWZ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvb2JqZWN0L2Fzc2lnblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL29iamVjdC9kZWZpbmUtcHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvb2JqZWN0L2tleXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9wYXJzZS1pbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9wcm9taXNlXCIpOyIsInZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9mZWF0dXJlcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX1N5bWJvbCR0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvc3ltYm9sL3RvLXByaW1pdGl2ZS5qc1wiKTtcbnZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtfU3ltYm9sJHRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX1N5bWJvbCA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvc3ltYm9sL2luZGV4LmpzXCIpO1xudmFyIF9TeW1ib2wkaXRlcmF0b3IgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL2ZlYXR1cmVzL3N5bWJvbC9pdGVyYXRvci5qc1wiKTtcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIF9TeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgX1N5bWJvbCRpdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIF9TeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gX1N5bWJvbCAmJiBvICE9PSBfU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvc3ltYm9sJyk7XG5cbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LmZ1bmN0aW9uLm1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuYXN5bmMtZGlzcG9zZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQuc3ltYm9sLmRpc3Bvc2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5tZXRhZGF0YScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvc3ltYm9sL2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9zeW1ib2wvdG8tcHJpbWl0aXZlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5maWx0ZXInKTtcbnZhciBnZXRCdWlsdEluUHJvdG90eXBlTWV0aG9kID0gcmVxdWlyZSgnLi4vLi4vLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbi1wcm90b3R5cGUtbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJblByb3RvdHlwZU1ldGhvZCgnQXJyYXknLCAnZmlsdGVyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoJyk7XG52YXIgZ2V0QnVpbHRJblByb3RvdHlwZU1ldGhvZCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4tcHJvdG90eXBlLW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW5Qcm90b3R5cGVNZXRob2QoJ0FycmF5JywgJ2ZvckVhY2gnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuYXJyYXkubWFwJyk7XG52YXIgZ2V0QnVpbHRJblByb3RvdHlwZU1ldGhvZCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4tcHJvdG90eXBlLW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW5Qcm90b3R5cGVNZXRob2QoJ0FycmF5JywgJ21hcCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5zb21lJyk7XG52YXIgZ2V0QnVpbHRJblByb3RvdHlwZU1ldGhvZCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4tcHJvdG90eXBlLW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW5Qcm90b3R5cGVNZXRob2QoJ0FycmF5JywgJ3NvbWUnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBtZXRob2QgPSByZXF1aXJlKCcuLi9zdHJpbmcvdmlydHVhbC9lbmRzLXdpdGgnKTtcblxudmFyIFN0cmluZ1Byb3RvdHlwZSA9IFN0cmluZy5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC5lbmRzV2l0aDtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3RyaW5nJyB8fCBpdCA9PT0gU3RyaW5nUHJvdG90eXBlXG4gICAgfHwgKGlzUHJvdG90eXBlT2YoU3RyaW5nUHJvdG90eXBlLCBpdCkgJiYgb3duID09PSBTdHJpbmdQcm90b3R5cGUuZW5kc1dpdGgpID8gbWV0aG9kIDogb3duO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBtZXRob2QgPSByZXF1aXJlKCcuLi9hcnJheS92aXJ0dWFsL2ZpbHRlcicpO1xuXG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC5maWx0ZXI7XG4gIHJldHVybiBpdCA9PT0gQXJyYXlQcm90b3R5cGUgfHwgKGlzUHJvdG90eXBlT2YoQXJyYXlQcm90b3R5cGUsIGl0KSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLmZpbHRlcikgPyBtZXRob2QgOiBvd247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIG1ldGhvZCA9IHJlcXVpcmUoJy4uL2FycmF5L3ZpcnR1YWwvbWFwJyk7XG5cbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIG93biA9IGl0Lm1hcDtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXNQcm90b3R5cGVPZihBcnJheVByb3RvdHlwZSwgaXQpICYmIG93biA9PT0gQXJyYXlQcm90b3R5cGUubWFwKSA/IG1ldGhvZCA6IG93bjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgbWV0aG9kID0gcmVxdWlyZSgnLi4vYXJyYXkvdmlydHVhbC9zb21lJyk7XG5cbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIG93biA9IGl0LnNvbWU7XG4gIHJldHVybiBpdCA9PT0gQXJyYXlQcm90b3R5cGUgfHwgKGlzUHJvdG90eXBlT2YoQXJyYXlQcm90b3R5cGUsIGl0KSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLnNvbWUpID8gbWV0aG9kIDogb3duO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBtZXRob2QgPSByZXF1aXJlKCcuLi9zdHJpbmcvdmlydHVhbC9zdGFydHMtd2l0aCcpO1xuXG52YXIgU3RyaW5nUHJvdG90eXBlID0gU3RyaW5nLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIG93biA9IGl0LnN0YXJ0c1dpdGg7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N0cmluZycgfHwgaXQgPT09IFN0cmluZ1Byb3RvdHlwZVxuICAgIHx8IChpc1Byb3RvdHlwZU9mKFN0cmluZ1Byb3RvdHlwZSwgaXQpICYmIG93biA9PT0gU3RyaW5nUHJvdG90eXBlLnN0YXJ0c1dpdGgpID8gbWV0aG9kIDogb3duO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuZGF0ZS50by1qc29uJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5Jyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWpzb24gLS0gc2FmZVxuaWYgKCFwYXRoLkpTT04pIHBhdGguSlNPTiA9IHsgc3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeSB9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzdHJpbmdpZnkoaXQsIHJlcGxhY2VyLCBzcGFjZSkge1xuICByZXR1cm4gYXBwbHkocGF0aC5KU09OLnN0cmluZ2lmeSwgbnVsbCwgYXJndW1lbnRzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLk9iamVjdC5hc3NpZ247XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG52YXIgT2JqZWN0ID0gcGF0aC5PYmplY3Q7XG5cbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKFQsIEQpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFQsIEQpO1xufTtcblxuaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLnNoYW0pIGRlZmluZVByb3BlcnRpZXMuc2hhbSA9IHRydWU7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxudmFyIE9iamVjdCA9IHBhdGguT2JqZWN0O1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG5cbmlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkuc2hhbSkgZGVmaW5lUHJvcGVydHkuc2hhbSA9IHRydWU7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxudmFyIE9iamVjdCA9IHBhdGguT2JqZWN0O1xuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTtcbn07XG5cbmlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLnNoYW0pIGdldE93blByb3BlcnR5RGVzY3JpcHRvci5zaGFtID0gdHJ1ZTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5rZXlzJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5PYmplY3Qua2V5cztcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucGFyc2UtaW50Jyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5wYXJzZUludDtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuYW55Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguUHJvbWlzZTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLmVuZHMtd2l0aCcpO1xudmFyIGdldEJ1aWx0SW5Qcm90b3R5cGVNZXRob2QgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLXByb3RvdHlwZS1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluUHJvdG90eXBlTWV0aG9kKCdTdHJpbmcnLCAnZW5kc1dpdGgnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG52YXIgZ2V0QnVpbHRJblByb3RvdHlwZU1ldGhvZCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4tcHJvdG90eXBlLW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW5Qcm90b3R5cGVNZXRob2QoJ1N0cmluZycsICdzdGFydHNXaXRoJyk7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wuYXN5bmMtaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC5oYXMtaW5zdGFuY2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3ltYm9sLmlzLWNvbmNhdC1zcHJlYWRhYmxlJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wubWF0Y2gnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3ltYm9sLm1hdGNoLWFsbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wucmVwbGFjZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wuc2VhcmNoJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC5zcGVjaWVzJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC5zcGxpdCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC50by1zdHJpbmctdGFnJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC51bnNjb3BhYmxlcycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5qc29uLnRvLXN0cmluZy10YWcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMubWF0aC50by1zdHJpbmctdGFnJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnJlZmxlY3QudG8tc3RyaW5nLXRhZycpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguU3ltYm9sO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3InKTtcbnZhciBXcmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXcmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlLmYoJ2l0ZXJhdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN5bWJvbC50by1wcmltaXRpdmUnKTtcbnZhciBXcmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXcmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlLmYoJ3RvUHJpbWl0aXZlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL3N5bWJvbCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL3N5bWJvbC9pdGVyYXRvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL3N5bWJvbC90by1wcmltaXRpdmUnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvc3ltYm9sJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuaXMtcmVnaXN0ZXJlZC1zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5pcy13ZWxsLWtub3duLXN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQuc3ltYm9sLmN1c3RvbS1tYXRjaGVyJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5zeW1ib2wub2JzZXJ2YWJsZScpO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5pcy1yZWdpc3RlcmVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuaXMtd2VsbC1rbm93bicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQuc3ltYm9sLm1hdGNoZXInKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5tZXRhZGF0YS1rZXknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5wYXR0ZXJuLW1hdGNoJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5zeW1ib2wucmVwbGFjZS1hbGwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL3N5bWJvbC9pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvc3ltYm9sL3RvLXByaW1pdGl2ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ29uc3RydWN0b3IoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wb3NzaWJsZS1wcm90b3R5cGUnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzUG9zc2libGVQcm90b3R5cGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiICsgJFN0cmluZyhhcmd1bWVudCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUHJvdG90eXBlKSB7XG4gIGlmIChpc1Byb3RvdHlwZU9mKFByb3RvdHlwZSwgaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCdJbmNvcnJlY3QgaW52b2NhdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2ZvckVhY2gnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbm1vZHVsZS5leHBvcnRzID0gIVNUUklDVF9NRVRIT0QgPyBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWZvcmVhY2ggLS0gc2FmZVxufSA6IFtdLmZvckVhY2g7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGZvckVhY2gsIG1hcCwgZmlsdGVyLCBzb21lLCBldmVyeSwgZmluZCwgZmluZEluZGV4LCBmaWx0ZXJSZWplY3QgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT09IDY7XG4gIHZhciBJU19GSUxURVJfUkVKRUNUID0gVFlQRSA9PT0gNztcbiAgdmFyIE5PX0hPTEVTID0gVFlQRSA9PT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2Uoc2VsZik7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSIHx8IElTX0ZJTFRFUl9SRUpFQ1QgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclxuICAgICAgICB9IGVsc2Ugc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIC8vIGV2ZXJ5XG4gICAgICAgICAgY2FzZSA3OiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclJlamVjdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcbiAgZmluZEluZGV4OiBjcmVhdGVNZXRob2QoNiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyUmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4gIGZpbHRlclJlamVjdDogY3JlYXRlTWV0aG9kKDcpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3N1xuICByZXR1cm4gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBmb286IDEgfTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheVtNRVRIT0RfTkFNRV0oQm9vbGVhbikuZm9vICE9PSAxO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgIG1ldGhvZC5jYWxsKG51bGwsIGFyZ3VtZW50IHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDE7IH0sIDEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoW10uc2xpY2UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgJEFycmF5ID0gQXJyYXk7XG5cbi8vIGEgcGFydCBvZiBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5KSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKGlzQ29uc3RydWN0b3IoQykgJiYgKEMgPT09ICRBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyAkQXJyYXkgOiBDO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhcnJheVNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbi8vIGBBcnJheVNwZWNpZXNDcmVhdGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheXNwZWNpZXNjcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICByZXR1cm4gbmV3IChhcnJheVNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbEFycmF5KSkobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWZyb20sIG5vLXRocm93LWxpdGVyYWwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICB0cnkge1xuICAgIGlmICghU0tJUF9DTE9TSU5HICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgcmV0dXJuIGZhbHNlOyB9IC8vIHdvcmthcm91bmQgb2Ygb2xkIFdlYktpdCArIGBldmFsYCBidWdcbiAgdmFyIElURVJBVElPTl9TVVBQT1JUID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIG9iamVjdCA9IHt9O1xuICAgIG9iamVjdFtJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogSVRFUkFUSU9OX1NVUFBPUlQgPSB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBleGVjKG9iamVjdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIElURVJBVElPTl9TVVBQT1JUO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9ICRPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgTUFUQ0ggPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHZhciByZWdleHAgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgIHRyeSB7XG4gICAgICByZWdleHBbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gICAgfSBjYXRjaCAoZXJyb3IyKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gZmFsc2U7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICBGLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0cHJvdG90eXBlb2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRigpKSAhPT0gRi5wcm90b3R5cGU7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGBDcmVhdGVJdGVyUmVzdWx0T2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlaXRlcnJlc3VsdG9iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIGRvbmUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiBkb25lIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtrZXldID0gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgcGFkU3RhcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXBhZCcpLnN0YXJ0O1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyICRpc0Zpbml0ZSA9IGlzRmluaXRlO1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIERhdGVQcm90b3R5cGUgPSBEYXRlLnByb3RvdHlwZTtcbnZhciBuYXRpdmVEYXRlVG9JU09TdHJpbmcgPSBEYXRlUHJvdG90eXBlLnRvSVNPU3RyaW5nO1xudmFyIHRoaXNUaW1lVmFsdWUgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFRpbWUpO1xudmFyIGdldFVUQ0RhdGUgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFVUQ0RhdGUpO1xudmFyIGdldFVUQ0Z1bGxZZWFyID0gdW5jdXJyeVRoaXMoRGF0ZVByb3RvdHlwZS5nZXRVVENGdWxsWWVhcik7XG52YXIgZ2V0VVRDSG91cnMgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFVUQ0hvdXJzKTtcbnZhciBnZXRVVENNaWxsaXNlY29uZHMgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFVUQ01pbGxpc2Vjb25kcyk7XG52YXIgZ2V0VVRDTWludXRlcyA9IHVuY3VycnlUaGlzKERhdGVQcm90b3R5cGUuZ2V0VVRDTWludXRlcyk7XG52YXIgZ2V0VVRDTW9udGggPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFVUQ01vbnRoKTtcbnZhciBnZXRVVENTZWNvbmRzID0gdW5jdXJyeVRoaXMoRGF0ZVByb3RvdHlwZS5nZXRVVENTZWNvbmRzKTtcblxuLy8gYERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUudG9pc29zdHJpbmdcbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgZmFpbHMgaGVyZTpcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5hdGl2ZURhdGVUb0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9PSAnMDM4NS0wNy0yNVQwNzowNjozOS45OTlaJztcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIG5hdGl2ZURhdGVUb0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKE5hTikpO1xufSkpID8gZnVuY3Rpb24gdG9JU09TdHJpbmcoKSB7XG4gIGlmICghJGlzRmluaXRlKHRoaXNUaW1lVmFsdWUodGhpcykpKSB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB2YXIgZGF0ZSA9IHRoaXM7XG4gIHZhciB5ZWFyID0gZ2V0VVRDRnVsbFllYXIoZGF0ZSk7XG4gIHZhciBtaWxsaXNlY29uZHMgPSBnZXRVVENNaWxsaXNlY29uZHMoZGF0ZSk7XG4gIHZhciBzaWduID0geWVhciA8IDAgPyAnLScgOiB5ZWFyID4gOTk5OSA/ICcrJyA6ICcnO1xuICByZXR1cm4gc2lnbiArIHBhZFN0YXJ0KGFicyh5ZWFyKSwgc2lnbiA/IDYgOiA0LCAwKSArXG4gICAgJy0nICsgcGFkU3RhcnQoZ2V0VVRDTW9udGgoZGF0ZSkgKyAxLCAyLCAwKSArXG4gICAgJy0nICsgcGFkU3RhcnQoZ2V0VVRDRGF0ZShkYXRlKSwgMiwgMCkgK1xuICAgICdUJyArIHBhZFN0YXJ0KGdldFVUQ0hvdXJzKGRhdGUpLCAyLCAwKSArXG4gICAgJzonICsgcGFkU3RhcnQoZ2V0VVRDTWludXRlcyhkYXRlKSwgMiwgMCkgK1xuICAgICc6JyArIHBhZFN0YXJ0KGdldFVUQ1NlY29uZHMoZGF0ZSksIDIsIDApICtcbiAgICAnLicgKyBwYWRTdGFydChtaWxsaXNlY29uZHMsIDMsIDApICtcbiAgICAnWic7XG59IDogbmF0aXZlRGF0ZVRvSVNPU3RyaW5nO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW51bWVyYWJsZSkgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGFyZ2V0LCBrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPiBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyAkVHlwZUVycm9yKCdNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX0RFTk8gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8nKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIUlTX0RFTk8gJiYgIUlTX05PREVcbiAgJiYgdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0J1xuICAmJiB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCc7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBnbG9iYWwgRGVubyAtLSBEZW5vIGNhc2UgKi9cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIERlbm8gPT0gJ29iamVjdCcgJiYgRGVubyAmJiB0eXBlb2YgRGVuby52ZXJzaW9uID09ICdvYmplY3QnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC9pcGFkfGlwaG9uZXxpcG9kL2kudGVzdCh1c2VyQWdlbnQpICYmIHR5cGVvZiBQZWJibGUgIT0gJ3VuZGVmaW5lZCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWRvcy9uby12dWxuZXJhYmxlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gLyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3QodXNlckFnZW50KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzb2YoZ2xvYmFsLnByb2Nlc3MpID09PSAncHJvY2Vzcyc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdCh1c2VyQWdlbnQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgbmF2aWdhdG9yICE9ICd1bmRlZmluZWQnICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciAkRXJyb3IgPSBFcnJvcjtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG5cbnZhciBURVNUID0gKGZ1bmN0aW9uIChhcmcpIHsgcmV0dXJuIFN0cmluZyhuZXcgJEVycm9yKGFyZykuc3RhY2spOyB9KSgnenhjYXNkJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSAtLSBzYWZlXG52YXIgVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZID0gL1xcblxccyphdCBbXjpdKjpbXlxcbl0qLztcbnZhciBJU19WOF9PUl9DSEFLUkFfU1RBQ0sgPSBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlkudGVzdChURVNUKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RhY2ssIGRyb3BFbnRyaWVzKSB7XG4gIGlmIChJU19WOF9PUl9DSEFLUkFfU1RBQ0sgJiYgdHlwZW9mIHN0YWNrID09ICdzdHJpbmcnICYmICEkRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpIHtcbiAgICB3aGlsZSAoZHJvcEVudHJpZXMtLSkgc3RhY2sgPSByZXBsYWNlKHN0YWNrLCBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlksICcnKTtcbiAgfSByZXR1cm4gc3RhY2s7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjbGVhckVycm9yU3RhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXInKTtcbnZhciBFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZScpO1xuXG4vLyBub24tc3RhbmRhcmQgVjhcbnZhciBjYXB0dXJlU3RhY2tUcmFjZSA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChlcnJvciwgQywgc3RhY2ssIGRyb3BFbnRyaWVzKSB7XG4gIGlmIChFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSkge1xuICAgIGlmIChjYXB0dXJlU3RhY2tUcmFjZSkgY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIEMpO1xuICAgIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCBjbGVhckVycm9yU3RhY2soc3RhY2ssIGRyb3BFbnRyaWVzKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ2EnKTtcbiAgaWYgKCEoJ3N0YWNrJyBpbiBlcnJvcikpIHJldHVybiB0cnVlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgNykpO1xuICByZXR1cm4gZXJyb3Iuc3RhY2sgIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuLy8gYWRkIGRlYnVnZ2luZyBpbmZvXG5yZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciB3cmFwQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoTmF0aXZlQ29uc3RydWN0b3IpIHtcbiAgdmFyIFdyYXBwZXIgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgV3JhcHBlcikge1xuICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgTmF0aXZlQ29uc3RydWN0b3IoYSk7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBOYXRpdmVDb25zdHJ1Y3RvcihhLCBiKTtcbiAgICAgIH0gcmV0dXJuIG5ldyBOYXRpdmVDb25zdHJ1Y3RvcihhLCBiLCBjKTtcbiAgICB9IHJldHVybiBhcHBseShOYXRpdmVDb25zdHJ1Y3RvciwgdGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgV3JhcHBlci5wcm90b3R5cGUgPSBOYXRpdmVDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIHJldHVybiBXcmFwcGVyO1xufTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgICAgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5kb250Q2FsbEdldFNldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIFBST1RPID0gb3B0aW9ucy5wcm90bztcblxuICB2YXIgbmF0aXZlU291cmNlID0gR0xPQkFMID8gZ2xvYmFsIDogU1RBVElDID8gZ2xvYmFsW1RBUkdFVF0gOiBnbG9iYWxbVEFSR0VUXSAmJiBnbG9iYWxbVEFSR0VUXS5wcm90b3R5cGU7XG5cbiAgdmFyIHRhcmdldCA9IEdMT0JBTCA/IHBhdGggOiBwYXRoW1RBUkdFVF0gfHwgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHBhdGgsIFRBUkdFVCwge30pW1RBUkdFVF07XG4gIHZhciB0YXJnZXRQcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuXG4gIHZhciBGT1JDRUQsIFVTRV9OQVRJVkUsIFZJUlRVQUxfUFJPVE9UWVBFO1xuICB2YXIga2V5LCBzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHksIG5hdGl2ZVByb3BlcnR5LCByZXN1bHRQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcblxuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIFVTRV9OQVRJVkUgPSAhRk9SQ0VEICYmIG5hdGl2ZVNvdXJjZSAmJiBoYXNPd24obmF0aXZlU291cmNlLCBrZXkpO1xuXG4gICAgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcblxuICAgIGlmIChVU0VfTkFUSVZFKSBpZiAob3B0aW9ucy5kb250Q2FsbEdldFNldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihuYXRpdmVTb3VyY2UsIGtleSk7XG4gICAgICBuYXRpdmVQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgbmF0aXZlUHJvcGVydHkgPSBuYXRpdmVTb3VyY2Vba2V5XTtcblxuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgaW1wbGVtZW50YXRpb25cbiAgICBzb3VyY2VQcm9wZXJ0eSA9IChVU0VfTkFUSVZFICYmIG5hdGl2ZVByb3BlcnR5KSA/IG5hdGl2ZVByb3BlcnR5IDogc291cmNlW2tleV07XG5cbiAgICBpZiAoIUZPUkNFRCAmJiAhUFJPVE8gJiYgdHlwZW9mIHRhcmdldFByb3BlcnR5ID09IHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSkgY29udGludWU7XG5cbiAgICAvLyBiaW5kIG1ldGhvZHMgdG8gZ2xvYmFsIGZvciBjYWxsaW5nIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBpZiAob3B0aW9ucy5iaW5kICYmIFVTRV9OQVRJVkUpIHJlc3VsdFByb3BlcnR5ID0gYmluZChzb3VyY2VQcm9wZXJ0eSwgZ2xvYmFsKTtcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlcyBpbiB0aGlzIHZlcnNpb25cbiAgICBlbHNlIGlmIChvcHRpb25zLndyYXAgJiYgVVNFX05BVElWRSkgcmVzdWx0UHJvcGVydHkgPSB3cmFwQ29uc3RydWN0b3Ioc291cmNlUHJvcGVydHkpO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIGVsc2UgaWYgKFBST1RPICYmIGlzQ2FsbGFibGUoc291cmNlUHJvcGVydHkpKSByZXN1bHRQcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHNvdXJjZVByb3BlcnR5KTtcbiAgICAvLyBkZWZhdWx0IGNhc2VcbiAgICBlbHNlIHJlc3VsdFByb3BlcnR5ID0gc291cmNlUHJvcGVydHk7XG5cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAoc291cmNlUHJvcGVydHkgJiYgc291cmNlUHJvcGVydHkuc2hhbSkgfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkocmVzdWx0UHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRhcmdldCwga2V5LCByZXN1bHRQcm9wZXJ0eSk7XG5cbiAgICBpZiAoUFJPVE8pIHtcbiAgICAgIFZJUlRVQUxfUFJPVE9UWVBFID0gVEFSR0VUICsgJ1Byb3RvdHlwZSc7XG4gICAgICBpZiAoIWhhc093bihwYXRoLCBWSVJUVUFMX1BST1RPVFlQRSkpIHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHBhdGgsIFZJUlRVQUxfUFJPVE9UWVBFLCB7fSk7XG4gICAgICB9XG4gICAgICAvLyBleHBvcnQgdmlydHVhbCBwcm90b3R5cGUgbWV0aG9kc1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHBhdGhbVklSVFVBTF9QUk9UT1RZUEVdLCBrZXksIHNvdXJjZVByb3BlcnR5KTtcbiAgICAgIC8vIGV4cG9ydCByZWFsIHByb3RvdHlwZSBtZXRob2RzXG4gICAgICBpZiAob3B0aW9ucy5yZWFsICYmIHRhcmdldFByb3RvdHlwZSAmJiAoRk9SQ0VEIHx8ICF0YXJnZXRQcm90b3R5cGVba2V5XSkpIHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRhcmdldFByb3RvdHlwZSwga2V5LCBzb3VyY2VQcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYXBwbHkgPSBGdW5jdGlvblByb3RvdHlwZS5hcHBseTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCA9PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmFwcGx5IHx8IChOQVRJVkVfQklORCA/IGNhbGwuYmluZChhcHBseSkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGFwcGx5LCBhcmd1bWVudHMpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGJpbmQgPSB1bmN1cnJ5VGhpcyh1bmN1cnJ5VGhpcy5iaW5kKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCkge1xuICBhQ2FsbGFibGUoZm4pO1xuICByZXR1cm4gdGhhdCA9PT0gdW5kZWZpbmVkID8gZm4gOiBOQVRJVkVfQklORCA/IGJpbmQoZm4sIHRoYXQpIDogZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZnVuY3Rpb24tcHJvdG90eXBlLWJpbmQgLS0gc2FmZVxuICB2YXIgdGVzdCA9IChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pLmJpbmQoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiB0eXBlb2YgdGVzdCAhPSAnZnVuY3Rpb24nIHx8IHRlc3QuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgbWV0aG9kKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICAgIHJldHVybiB1bmN1cnJ5VGhpcyhhQ2FsbGFibGUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtleSlbbWV0aG9kXSkpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgLy8gTmFzaG9ybiBidWc6XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMjhcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTEzMFxuICBpZiAoY2xhc3NvZlJhdyhmbikgPT09ICdGdW5jdGlvbicpIHJldHVybiB1bmN1cnJ5VGhpcyhmbik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SLCBNRVRIT0QpIHtcbiAgdmFyIE5hbWVzcGFjZSA9IHBhdGhbQ09OU1RSVUNUT1IgKyAnUHJvdG90eXBlJ107XG4gIHZhciBwdXJlTWV0aG9kID0gTmFtZXNwYWNlICYmIE5hbWVzcGFjZVtNRVRIT0RdO1xuICBpZiAocHVyZU1ldGhvZCkgcmV0dXJuIHB1cmVNZXRob2Q7XG4gIHZhciBOYXRpdmVDb25zdHJ1Y3RvciA9IGdsb2JhbFtDT05TVFJVQ1RPUl07XG4gIHZhciBOYXRpdmVQcm90b3R5cGUgPSBOYXRpdmVDb25zdHJ1Y3RvciAmJiBOYXRpdmVDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIHJldHVybiBOYXRpdmVQcm90b3R5cGUgJiYgTmF0aXZlUHJvdG90eXBlW01FVEhPRF07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodmFyaWFibGUpID8gdmFyaWFibGUgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24ocGF0aFtuYW1lc3BhY2VdKSB8fCBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pXG4gICAgOiBwYXRoW25hbWVzcGFjZV0gJiYgcGF0aFtuYW1lc3BhY2VdW21ldGhvZF0gfHwgZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgcmV0dXJuIGdldE1ldGhvZChpdCwgSVRFUkFUT1IpXG4gICAgfHwgZ2V0TWV0aG9kKGl0LCAnQEBpdGVyYXRvcicpXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQsIHVzaW5nSXRlcmF0b3IpIHtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBnZXRJdGVyYXRvck1ldGhvZChhcmd1bWVudCkgOiB1c2luZ0l0ZXJhdG9yO1xuICBpZiAoYUNhbGxhYmxlKGl0ZXJhdG9yTWV0aG9kKSkgcmV0dXJuIGFuT2JqZWN0KGNhbGwoaXRlcmF0b3JNZXRob2QsIGFyZ3VtZW50KSk7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyZXBsYWNlcikge1xuICBpZiAoaXNDYWxsYWJsZShyZXBsYWNlcikpIHJldHVybiByZXBsYWNlcjtcbiAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmV0dXJuO1xuICB2YXIgcmF3TGVuZ3RoID0gcmVwbGFjZXIubGVuZ3RoO1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0xlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZW1lbnQgPSByZXBsYWNlcltpXTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT0gJ3N0cmluZycpIHB1c2goa2V5cywgZWxlbWVudCk7XG4gICAgZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT0gJ251bWJlcicgfHwgY2xhc3NvZihlbGVtZW50KSA9PT0gJ051bWJlcicgfHwgY2xhc3NvZihlbGVtZW50KSA9PT0gJ1N0cmluZycpIHB1c2goa2V5cywgdG9TdHJpbmcoZWxlbWVudCkpO1xuICB9XG4gIHZhciBrZXlzTGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciByb290ID0gdHJ1ZTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgaWYgKHJvb3QpIHtcbiAgICAgIHJvb3QgPSBmYWxzZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkodGhpcykpIHJldHVybiB2YWx1ZTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXNMZW5ndGg7IGorKykgaWYgKGtleXNbal0gPT09IGtleSkgcmV0dXJuIHZhbHVlO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgY2hlY2sodHlwZW9mIHRoaXMgPT0gJ29iamVjdCcgJiYgdGhpcykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gc2FmZVxuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBjb25zb2xlLmVycm9yKGEpIDogY29uc29sZS5lcnJvcihhLCBiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxuLy8gYEluc3RhbGxFcnJvckNhdXNlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1lcnJvci1jYXVzZS8jc2VjLWVycm9yb2JqZWN0cy1pbnN0YWxsLWVycm9yLWNhdXNlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSAmJiAnY2F1c2UnIGluIG9wdGlvbnMpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTywgJ2NhdXNlJywgb3B0aW9ucy5jYXVzZSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG90eXBlW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJndW1lbnQpID09PSAnQXJyYXknO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBjb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xudmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoY29uc3RydWN0b3JSZWdFeHAuZXhlYyk7XG52YXIgSU5DT1JSRUNUX1RPX1NUUklORyA9ICFjb25zdHJ1Y3RvclJlZ0V4cC50ZXN0KG5vb3ApO1xuXG52YXIgaXNDb25zdHJ1Y3Rvck1vZGVybiA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0cnVjdChub29wLCBbXSwgYXJndW1lbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxudmFyIGlzQ29uc3RydWN0b3JMZWdhY3kgPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChjbGFzc29mKGFyZ3VtZW50KSkge1xuICAgIGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0dlbmVyYXRvckZ1bmN0aW9uJzpcbiAgICBjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzogcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gd2UgY2FuJ3QgY2hlY2sgLnByb3RvdHlwZSBzaW5jZSBjb25zdHJ1Y3RvcnMgcHJvZHVjZWQgYnkgLmJpbmQgaGF2ZW4ndCBpdFxuICAgIC8vIGBGdW5jdGlvbiN0b1N0cmluZ2AgdGhyb3dzIG9uIHNvbWUgYnVpbHQtaXQgZnVuY3Rpb24gaW4gc29tZSBsZWdhY3kgZW5naW5lc1xuICAgIC8vIChmb3IgZXhhbXBsZSwgYERPTVF1YWRgIGFuZCBzaW1pbGFyIGluIEZGNDEtKVxuICAgIHJldHVybiBJTkNPUlJFQ1RfVE9fU1RSSU5HIHx8ICEhZXhlYyhjb25zdHJ1Y3RvclJlZ0V4cCwgaW5zcGVjdFNvdXJjZShhcmd1bWVudCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5pc0NvbnN0cnVjdG9yTGVnYWN5LnNoYW0gPSB0cnVlO1xuXG4vLyBgSXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gIWNvbnN0cnVjdCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsZWQ7XG4gIHJldHVybiBpc0NvbnN0cnVjdG9yTW9kZXJuKGlzQ29uc3RydWN0b3JNb2Rlcm4uY2FsbClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihPYmplY3QpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oZnVuY3Rpb24gKCkgeyBjYWxsZWQgPSB0cnVlOyB9KVxuICAgIHx8IGNhbGxlZDtcbn0pID8gaXNDb25zdHJ1Y3RvckxlZ2FjeSA6IGlzQ29uc3RydWN0b3JNb2Rlcm47XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc09iamVjdChhcmd1bWVudCkgfHwgYXJndW1lbnQgPT09IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuXG4vLyBgSXNSZWdFeHBgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc3JlZ2V4cFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGlzUmVnRXhwO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmICgoaXNSZWdFeHAgPSBpdFtNQVRDSF0pICE9PSB1bmRlZmluZWQgPyAhIWlzUmVnRXhwIDogY2xhc3NvZihpdCkgPT09ICdSZWdFeHAnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFJlc3VsdCA9IGZ1bmN0aW9uIChzdG9wcGVkLCByZXN1bHQpIHtcbiAgdGhpcy5zdG9wcGVkID0gc3RvcHBlZDtcbiAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG59O1xuXG52YXIgUmVzdWx0UHJvdG90eXBlID0gUmVzdWx0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aGF0O1xuICB2YXIgQVNfRU5UUklFUyA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5BU19FTlRSSUVTKTtcbiAgdmFyIElTX1JFQ09SRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19SRUNPUkQpO1xuICB2YXIgSVNfSVRFUkFUT1IgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfSVRFUkFUT1IpO1xuICB2YXIgSU5URVJSVVBURUQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSU5URVJSVVBURUQpO1xuICB2YXIgZm4gPSBiaW5kKHVuYm91bmRGdW5jdGlvbiwgdGhhdCk7XG4gIHZhciBpdGVyYXRvciwgaXRlckZuLCBpbmRleCwgbGVuZ3RoLCByZXN1bHQsIG5leHQsIHN0ZXA7XG5cbiAgdmFyIHN0b3AgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7XG4gICAgaWYgKGl0ZXJhdG9yKSBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgY29uZGl0aW9uKTtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh0cnVlLCBjb25kaXRpb24pO1xuICB9O1xuXG4gIHZhciBjYWxsRm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoQVNfRU5UUklFUykge1xuICAgICAgYW5PYmplY3QodmFsdWUpO1xuICAgICAgcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWVbMF0sIHZhbHVlWzFdLCBzdG9wKSA6IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XG4gICAgfSByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZSwgc3RvcCkgOiBmbih2YWx1ZSk7XG4gIH07XG5cbiAgaWYgKElTX1JFQ09SRCkge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGUuaXRlcmF0b3I7XG4gIH0gZWxzZSBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAoIWl0ZXJGbikgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoaXRlcmFibGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbiAgICAvLyBvcHRpbWlzYXRpb24gZm9yIGFycmF5IGl0ZXJhdG9yc1xuICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGl0ZXJhYmxlKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbEZuKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgICB9IHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbiAgICB9XG4gICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSwgaXRlckZuKTtcbiAgfVxuXG4gIG5leHQgPSBJU19SRUNPUkQgPyBpdGVyYWJsZS5uZXh0IDogaXRlcmF0b3IubmV4dDtcbiAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGNhbGxGbihzdGVwLnZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PSAnb2JqZWN0JyAmJiByZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgdmFyIGlubmVyUmVzdWx0LCBpbm5lckVycm9yO1xuICBhbk9iamVjdChpdGVyYXRvcik7XG4gIHRyeSB7XG4gICAgaW5uZXJSZXN1bHQgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0KSB7XG4gICAgICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlubmVyUmVzdWx0ID0gY2FsbChpbm5lclJlc3VsdCwgaXRlcmF0b3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlubmVyRXJyb3IgPSB0cnVlO1xuICAgIGlubmVyUmVzdWx0ID0gZXJyb3I7XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICBpZiAoaW5uZXJFcnJvcikgdGhyb3cgaW5uZXJSZXN1bHQ7XG4gIGFuT2JqZWN0KGlubmVyUmVzdWx0KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCwgRU5VTUVSQUJMRV9ORVhUKSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoKyFFTlVNRVJBQkxFX05FWFQsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIEZ1bmN0aW9uTmFtZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEl0ZXJhdG9yc0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKTtcblxudmFyIFBST1BFUl9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLlBST1BFUjtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5DT05GSUdVUkFCTEU7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCAmJiBLSU5EIGluIEl0ZXJhYmxlUHJvdG90eXBlKSByZXR1cm4gSXRlcmFibGVQcm90b3R5cGVbS0lORF07XG5cbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMpOyB9O1xuICB9O1xuXG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gZmFsc2U7XG4gIHZhciBJdGVyYWJsZVByb3RvdHlwZSA9IEl0ZXJhYmxlLnByb3RvdHlwZTtcbiAgdmFyIG5hdGl2ZUl0ZXJhdG9yID0gSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdXG4gICAgfHwgSXRlcmFibGVQcm90b3R5cGVbJ0BAaXRlcmF0b3InXVxuICAgIHx8IERFRkFVTFQgJiYgSXRlcmFibGVQcm90b3R5cGVbREVGQVVMVF07XG4gIHZhciBkZWZhdWx0SXRlcmF0b3IgPSAhQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBuYXRpdmVJdGVyYXRvciB8fCBnZXRJdGVyYXRpb25NZXRob2QoREVGQVVMVCk7XG4gIHZhciBhbnlOYXRpdmVJdGVyYXRvciA9IE5BTUUgPT09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICBpZiAoIUlTX1BVUkUgJiYgZ2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlKSAhPT0gSXRlcmF0b3JQcm90b3R5cGUpIHtcbiAgICAgICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgc2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQ2FsbGFibGUoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSkpIHtcbiAgICAgICAgICBkZWZpbmVCdWlsdEluKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5LnByb3RvdHlwZS57IHZhbHVlcywgQEBpdGVyYXRvciB9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgREVGQVVMVCA9PT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIGlmICghSVNfUFVSRSAmJiBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhYmxlUHJvdG90eXBlLCAnbmFtZScsIFZBTFVFUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBjYWxsKG5hdGl2ZUl0ZXJhdG9yLCB0aGlzKTsgfTtcbiAgICB9XG4gIH1cblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgZGVmaW5lQnVpbHRJbihJdGVyYWJsZVByb3RvdHlwZSwgS0VZLCBtZXRob2RzW0tFWV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSAkKHsgdGFyZ2V0OiBOQU1FLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB9LCBtZXRob2RzKTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBkZWZpbmVCdWlsdEluKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yLCB7IG5hbWU6IERFRkFVTFQgfSk7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBmYWxzZTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0laXRlcmF0b3Jwcm90b3R5cGUlLW9iamVjdFxudmFyIEl0ZXJhdG9yUHJvdG90eXBlLCBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUsIGFycmF5SXRlcmF0b3I7XG5cbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLWFycmF5LXByb3RvdHlwZS1rZXlzIC0tIHNhZmUgKi9cbmlmIChbXS5rZXlzKSB7XG4gIGFycmF5SXRlcmF0b3IgPSBbXS5rZXlzKCk7XG4gIC8vIFNhZmFyaSA4IGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxuICBpZiAoISgnbmV4dCcgaW4gYXJyYXlJdGVyYXRvcikpIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSB0cnVlO1xuICBlbHNlIHtcbiAgICBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihnZXRQcm90b3R5cGVPZihhcnJheUl0ZXJhdG9yKSk7XG4gICAgaWYgKFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgSXRlcmF0b3JQcm90b3R5cGUgPSBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cbn1cblxudmFyIE5FV19JVEVSQVRPUl9QUk9UT1RZUEUgPSAhaXNPYmplY3QoSXRlcmF0b3JQcm90b3R5cGUpIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgLy8gRkY0NC0gbGVnYWN5IGl0ZXJhdG9ycyBjYXNlXG4gIHJldHVybiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0uY2FsbCh0ZXN0KSAhPT0gdGVzdDtcbn0pO1xuXG5pZiAoTkVXX0lURVJBVE9SX1BST1RPVFlQRSkgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbmVsc2UgaWYgKElTX1BVUkUpIEl0ZXJhdG9yUHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtQEBpdGVyYXRvclxuaWYgKCFpc0NhbGxhYmxlKEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSkpIHtcbiAgZGVmaW5lQnVpbHRJbihJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzYWZlR2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbicpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX0lPU19QRUJCTEUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIG1pY3JvdGFzayA9IHNhZmVHZXRCdWlsdEluKCdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIG5vdGlmeSwgdG9nZ2xlLCBub2RlLCBwcm9taXNlLCB0aGVuO1xuXG4vLyBtb2Rlcm4gZW5naW5lcyBoYXZlIHF1ZXVlTWljcm90YXNrIG1ldGhvZFxuaWYgKCFtaWNyb3Rhc2spIHtcbiAgdmFyIHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGZuID0gcXVldWUuZ2V0KCkpIHRyeSB7XG4gICAgICBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAocXVldWUuaGVhZCkgbm90aWZ5KCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICAvLyBhbHNvIGV4Y2VwdCBXZWJPUyBXZWJraXQgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg5OFxuICBpZiAoIUlTX0lPUyAmJiAhSVNfTk9ERSAmJiAhSVNfV0VCT1NfV0VCS0lUICYmIE11dGF0aW9uT2JzZXJ2ZXIgJiYgZG9jdW1lbnQpIHtcbiAgICB0b2dnbGUgPSB0cnVlO1xuICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmICghSVNfSU9TX1BFQkJMRSAmJiBQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIC8vIHdvcmthcm91bmQgb2YgV2ViS2l0IH4gaU9TIFNhZmFyaSAxMC4xIGJ1Z1xuICAgIHByb21pc2UuY29uc3RydWN0b3IgPSBQcm9taXNlO1xuICAgIHRoZW4gPSBiaW5kKHByb21pc2UudGhlbiwgcHJvbWlzZSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ2VcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgLy8gYHdlYnBhY2tgIGRldiBzZXJ2ZXIgYnVnIG9uIElFIGdsb2JhbCBtZXRob2RzIC0gdXNlIGJpbmQoZm4sIGdsb2JhbClcbiAgICBtYWNyb3Rhc2sgPSBiaW5kKG1hY3JvdGFzaywgZ2xvYmFsKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBtYWNyb3Rhc2soZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICBtaWNyb3Rhc2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIXF1ZXVlLmhlYWQpIG5vdGlmeSgpO1xuICAgIHF1ZXVlLmFkZChmbik7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWljcm90YXNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG52YXIgUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhQ2FsbGFibGUocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUNhbGxhYmxlKHJlamVjdCk7XG59O1xuXG4vLyBgTmV3UHJvbWlzZUNhcGFiaWxpdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1uZXdwcm9taXNlY2FwYWJpbGl0eVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgJGRlZmF1bHQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID09PSB1bmRlZmluZWQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICcnIDogJGRlZmF1bHQgOiB0b1N0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzUmVnRXhwKGl0KSkge1xuICAgIHRocm93IG5ldyAkVHlwZUVycm9yKFwiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zXCIpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyICRwYXJzZUludCA9IGdsb2JhbC5wYXJzZUludDtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIElURVJBVE9SID0gU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBoZXggPSAvXlsrLV0/MHgvaTtcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoaGV4LmV4ZWMpO1xudmFyIEZPUkNFRCA9ICRwYXJzZUludCh3aGl0ZXNwYWNlcyArICcwOCcpICE9PSA4IHx8ICRwYXJzZUludCh3aGl0ZXNwYWNlcyArICcweDE2JykgIT09IDIyXG4gIC8vIE1TIEVkZ2UgMTgtIGJyb2tlbiB3aXRoIGJveGVkIHN5bWJvbHNcbiAgfHwgKElURVJBVE9SICYmICFmYWlscyhmdW5jdGlvbiAoKSB7ICRwYXJzZUludChPYmplY3QoSVRFUkFUT1IpKTsgfSkpO1xuXG4vLyBgcGFyc2VJbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wYXJzZWludC1zdHJpbmctcmFkaXhcbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEID8gZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCkge1xuICB2YXIgUyA9IHRyaW0odG9TdHJpbmcoc3RyaW5nKSk7XG4gIHJldHVybiAkcGFyc2VJbnQoUywgKHJhZGl4ID4+PiAwKSB8fCAoZXhlYyhoZXgsIFMpID8gMTYgOiAxMCkpO1xufSA6ICRwYXJzZUludDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnYXNzaWduIGRldGVjdGlvbicpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9PSA3IHx8IG9iamVjdEtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9PSBhbHBoYWJldDtcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG4gIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkge1xuICAgIHZhciBTID0gSW5kZXhlZE9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KG9iamVjdEtleXMoUyksIGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlLCBTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBnbG9iYWwgQWN0aXZlWE9iamVjdCAtLSBvbGQgSUUsIFdTSCAqL1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xuXG52YXIgR1QgPSAnPic7XG52YXIgTFQgPSAnPCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgU0NSSVBUID0gJ3NjcmlwdCc7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBFbXB0eUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG52YXIgc2NyaXB0VGFnID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIExUICsgU0NSSVBUICsgR1QgKyBjb250ZW50ICsgTFQgKyAnLycgKyBTQ1JJUFQgKyBHVDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBBY3RpdmVYIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIChhY3RpdmVYRG9jdW1lbnQpIHtcbiAgYWN0aXZlWERvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnJykpO1xuICBhY3RpdmVYRG9jdW1lbnQuY2xvc2UoKTtcbiAgdmFyIHRlbXAgPSBhY3RpdmVYRG9jdW1lbnQucGFyZW50V2luZG93Lk9iamVjdDtcbiAgYWN0aXZlWERvY3VtZW50ID0gbnVsbDsgLy8gYXZvaWQgbWVtb3J5IGxlYWtcbiAgcmV0dXJuIHRlbXA7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIEpTID0gJ2phdmEnICsgU0NSSVBUICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy80NzVcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhKUyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCdkb2N1bWVudC5GPU9iamVjdCcpKTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgcmV0dXJuIGlmcmFtZURvY3VtZW50LkY7XG59O1xuXG4vLyBDaGVjayBmb3IgZG9jdW1lbnQuZG9tYWluIGFuZCBhY3RpdmUgeCBzdXBwb3J0XG4vLyBObyBuZWVkIHRvIHVzZSBhY3RpdmUgeCBhcHByb2FjaCB3aGVuIGRvY3VtZW50LmRvbWFpbiBpcyBub3Qgc2V0XG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8xNTBcbi8vIHZhcmlhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2l0Y2FtYnJpZGdlL2VzNS1zaGltL2NvbW1pdC80ZjczOGFjMDY2MzQ2XG4vLyBhdm9pZCBJRSBHQyBidWdcbnZhciBhY3RpdmVYRG9jdW1lbnQ7XG52YXIgTnVsbFByb3RvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIGFjdGl2ZVhEb2N1bWVudCA9IG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBpZ25vcmUgKi8gfVxuICBOdWxsUHJvdG9PYmplY3QgPSB0eXBlb2YgZG9jdW1lbnQgIT0gJ3VuZGVmaW5lZCdcbiAgICA/IGRvY3VtZW50LmRvbWFpbiAmJiBhY3RpdmVYRG9jdW1lbnRcbiAgICAgID8gTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhY3RpdmVYRG9jdW1lbnQpIC8vIG9sZCBJRVxuICAgICAgOiBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUoKVxuICAgIDogTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhY3RpdmVYRG9jdW1lbnQpOyAvLyBXU0hcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgTnVsbFByb3RvT2JqZWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBOdWxsUHJvdG9PYmplY3QoKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWNyZWF0ZSAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHlDb25zdHJ1Y3RvcigpO1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gTnVsbFByb3RvT2JqZWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlLmYocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnRpZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgJiYgIVY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBwcm9wcyA9IHRvSW5kZXhlZE9iamVjdChQcm9wZXJ0aWVzKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXkgPSBrZXlzW2luZGV4KytdLCBwcm9wc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmUgKi9cbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlOYW1lcyhpdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGFycmF5U2xpY2Uod2luZG93TmFtZXMpO1xuICB9XG59O1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgY2xhc3NvZihpdCkgPT09ICdXaW5kb3cnXG4gICAgPyBnZXRXaW5kb3dOYW1lcyhpdClcbiAgICA6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gJE9iamVjdC5wcm90b3R5cGU7XG5cbi8vIGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2Zcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPyAkT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgdmFyIG9iamVjdCA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzT3duKG9iamVjdCwgSUVfUFJPVE8pKSByZXR1cm4gb2JqZWN0W0lFX1BST1RPXTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBpZiAoaXNDYWxsYWJsZShjb25zdHJ1Y3RvcikgJiYgb2JqZWN0IGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiAkT2JqZWN0ID8gT2JqZWN0UHJvdG90eXBlIDogbnVsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhc093bihPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCBwdXNoKHJlc3VsdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWtleXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAtLSBzYWZlICovXG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICBzZXR0ZXIgPSB1bmN1cnJ5VGhpc0FjY2Vzc29yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nLCAnc2V0Jyk7XG4gICAgc2V0dGVyKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKCFpc09iamVjdChPKSkgcmV0dXJuIE87XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8ge30udG9TdHJpbmcgOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlcnJvcjogZmFsc2UsIHZhbHVlOiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgdmFsdWU6IGVycm9yIH07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfQlJPV1NFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3NlcicpO1xudmFyIElTX0RFTk8gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8nKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFNVQkNMQVNTSU5HID0gZmFsc2U7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcblxudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gaXNGb3JjZWQoJ1Byb21pc2UnLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSA9IGluc3BlY3RTb3VyY2UoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgdmFyIEdMT0JBTF9DT1JFX0pTX1BST01JU0UgPSBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSAhPT0gU3RyaW5nKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gIC8vIFdlIG5lZWQgUHJvbWlzZSN7IGNhdGNoLCBmaW5hbGx5IH0gaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICEoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10pKSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgY2FuJ3QgdXNlIEBAc3BlY2llcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKCFWOF9WRVJTSU9OIHx8IFY4X1ZFUlNJT04gPCA1MSB8fCAhL25hdGl2ZSBjb2RlLy50ZXN0KFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFKSkge1xuICAgIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSBuZXcgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUoMSk7IH0pO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgICB9O1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICAgIFNVQkNMQVNTSU5HID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZTtcbiAgICBpZiAoIVNVQkNMQVNTSU5HKSByZXR1cm4gdHJ1ZTtcbiAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICB9IHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiAoSVNfQlJPV1NFUiB8fCBJU19ERU5PKSAmJiAhTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDT05TVFJVQ1RPUjogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IsXG4gIFJFSkVDVElPTl9FVkVOVDogTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5ULFxuICBTVUJDTEFTU0lORzogU1VCQ0xBU1NJTkdcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcblxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IuYWxsKGl0ZXJhYmxlKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhlYWQgPSBudWxsO1xuICB0aGlzLnRhaWwgPSBudWxsO1xufTtcblxuUXVldWUucHJvdG90eXBlID0ge1xuICBhZGQ6IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGVudHJ5ID0geyBpdGVtOiBpdGVtLCBuZXh0OiBudWxsIH07XG4gICAgdmFyIHRhaWwgPSB0aGlzLnRhaWw7XG4gICAgaWYgKHRhaWwpIHRhaWwubmV4dCA9IGVudHJ5O1xuICAgIGVsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gIH0sXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRyeSA9IHRoaXMuaGVhZDtcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIHZhciBuZXh0ID0gdGhpcy5oZWFkID0gZW50cnkubmV4dDtcbiAgICAgIGlmIChuZXh0ID09PSBudWxsKSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGVudHJ5Lml0ZW07XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFF1ZXVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBBdm9pZCBOb2RlSlMgZXhwZXJpbWVudGFsIHdhcm5pbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuIGdsb2JhbFtuYW1lXTtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCBuYW1lKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoQ29uc3RydWN0b3IsIFNQRUNJRVMsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgVEFHLCBTVEFUSUMsIFNFVF9NRVRIT0QpIHtcbiAgdmFyIHRhcmdldCA9IFNUQVRJQyA/IGl0IDogaXQgJiYgaXQucHJvdG90eXBlO1xuICBpZiAodGFyZ2V0KSB7XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBUT19TVFJJTkdfVEFHKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBUT19TVFJJTkdfVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IFRBRyB9KTtcbiAgICB9XG4gICAgaWYgKFNFVF9NRVRIT0QgJiYgIVRPX1NUUklOR19UQUdfU1VQUE9SVCkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRhcmdldCwgJ3RvU3RyaW5nJywgdG9TdHJpbmcpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gbW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbihzdG9yZS52ZXJzaW9ucyB8fCAoc3RvcmUudmVyc2lvbnMgPSBbXSkpLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zNy4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zNy4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgfHwge30pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvcicpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCBpc051bGxPclVuZGVmaW5lZChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID8gZGVmYXVsdENvbnN0cnVjdG9yIDogYUNvbnN0cnVjdG9yKFMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyT3JJbmZpbml0eShwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IGNoYXJDb2RlQXQoUywgcG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBjaGFyQXQoUywgcG9zaXRpb24pXG4gICAgICAgICAgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBzdHJpbmdTbGljZShTLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAyKVxuICAgICAgICAgIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgJHJlcGVhdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcmVwZWF0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyIHJlcGVhdCA9IHVuY3VycnlUaGlzKCRyZXBlYXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgcGFkU3RhcnQsIHBhZEVuZCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0VORCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBtYXhMZW5ndGgsIGZpbGxTdHJpbmcpIHtcbiAgICB2YXIgUyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICB2YXIgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgICB2YXIgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpbGxTdHIgPSBmaWxsU3RyaW5nID09PSB1bmRlZmluZWQgPyAnICcgOiB0b1N0cmluZyhmaWxsU3RyaW5nKTtcbiAgICB2YXIgZmlsbExlbiwgc3RyaW5nRmlsbGVyO1xuICAgIGlmIChpbnRNYXhMZW5ndGggPD0gc3RyaW5nTGVuZ3RoIHx8IGZpbGxTdHIgPT09ICcnKSByZXR1cm4gUztcbiAgICBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICAgIHN0cmluZ0ZpbGxlciA9IHJlcGVhdChmaWxsU3RyLCBjZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICAgIGlmIChzdHJpbmdGaWxsZXIubGVuZ3RoID4gZmlsbExlbikgc3RyaW5nRmlsbGVyID0gc3RyaW5nU2xpY2Uoc3RyaW5nRmlsbGVyLCAwLCBmaWxsTGVuKTtcbiAgICByZXR1cm4gSVNfRU5EID8gUyArIHN0cmluZ0ZpbGxlciA6IHN0cmluZ0ZpbGxlciArIFM7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUucGFkU3RhcnRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucGFkc3RhcnRcbiAgc3RhcnQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnBhZEVuZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5wYWRlbmRcbiAgZW5kOiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwZWF0YCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBlYXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVwZWF0KGNvdW50KSB7XG4gIHZhciBzdHIgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoY291bnQpO1xuICBpZiAobiA8IDAgfHwgbiA9PT0gSW5maW5pdHkpIHRocm93IG5ldyAkUmFuZ2VFcnJvcignV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zJyk7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXN1bHQgKz0gc3RyO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ15bJyArIHdoaXRlc3BhY2VzICsgJ10rJyk7XG52YXIgcnRyaW0gPSBSZWdFeHAoJyhefFteJyArIHdoaXRlc3BhY2VzICsgJ10pWycgKyB3aGl0ZXNwYWNlcyArICddKyQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltLCB0cmltU3RhcnQsIHRyaW1FbmQsIHRyaW1MZWZ0LCB0cmltUmlnaHQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMpIHtcbiAgICB2YXIgc3RyaW5nID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIGlmIChUWVBFICYgMSkgc3RyaW5nID0gcmVwbGFjZShzdHJpbmcsIGx0cmltLCAnJyk7XG4gICAgaWYgKFRZUEUgJiAyKSBzdHJpbmcgPSByZXBsYWNlKHN0cmluZywgcnRyaW0sICckMScpO1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltTGVmdCwgdHJpbVN0YXJ0IH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltZW5kXG4gIGVuZDogY3JlYXRlTWV0aG9kKDIpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS50cmltYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiAgdHJpbTogY3JlYXRlTWV0aG9kKDMpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHZhciBTeW1ib2xQcm90b3R5cGUgPSBTeW1ib2wgJiYgU3ltYm9sLnByb3RvdHlwZTtcbiAgdmFyIHZhbHVlT2YgPSBTeW1ib2xQcm90b3R5cGUgJiYgU3ltYm9sUHJvdG90eXBlLnZhbHVlT2Y7XG4gIHZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbiAgaWYgKFN5bWJvbFByb3RvdHlwZSAmJiAhU3ltYm9sUHJvdG90eXBlW1RPX1BSSU1JVElWRV0pIHtcbiAgICAvLyBgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLUBAdG9wcmltaXRpdmVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIC5sZW5ndGhcbiAgICBkZWZpbmVCdWlsdEluKFN5bWJvbFByb3RvdHlwZSwgVE9fUFJJTUlUSVZFLCBmdW5jdGlvbiAoaGludCkge1xuICAgICAgcmV0dXJuIGNhbGwodmFsdWVPZiwgdGhpcyk7XG4gICAgfSwgeyBhcml0eTogMSB9KTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG52YXIga2V5Rm9yID0gU3ltYm9sLmtleUZvcjtcbnZhciB0aGlzU3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xuXG4vLyBgU3ltYm9sLmlzUmVnaXN0ZXJlZFN5bWJvbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtc3ltYm9sLXByZWRpY2F0ZXMvI3NlYy1zeW1ib2wtaXNyZWdpc3RlcmVkc3ltYm9sXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbC5pc1JlZ2lzdGVyZWRTeW1ib2wgfHwgZnVuY3Rpb24gaXNSZWdpc3RlcmVkU3ltYm9sKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGtleUZvcih0aGlzU3ltYm9sVmFsdWUodmFsdWUpKSAhPT0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xudmFyICRpc1dlbGxLbm93blN5bWJvbCA9IFN5bWJvbC5pc1dlbGxLbm93blN5bWJvbDtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZ2V0QnVpbHRJbignT2JqZWN0JywgJ2dldE93blByb3BlcnR5TmFtZXMnKTtcbnZhciB0aGlzU3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbmZvciAodmFyIGkgPSAwLCBzeW1ib2xLZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpLCBzeW1ib2xLZXlzTGVuZ3RoID0gc3ltYm9sS2V5cy5sZW5ndGg7IGkgPCBzeW1ib2xLZXlzTGVuZ3RoOyBpKyspIHtcbiAgLy8gc29tZSBvbGQgZW5naW5lcyB0aHJvd3Mgb24gYWNjZXNzIHRvIHNvbWUga2V5cyBsaWtlIGBhcmd1bWVudHNgIG9yIGBjYWxsZXJgXG4gIHRyeSB7XG4gICAgdmFyIHN5bWJvbEtleSA9IHN5bWJvbEtleXNbaV07XG4gICAgaWYgKGlzU3ltYm9sKFN5bWJvbFtzeW1ib2xLZXldKSkgd2VsbEtub3duU3ltYm9sKHN5bWJvbEtleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn1cblxuLy8gYFN5bWJvbC5pc1dlbGxLbm93blN5bWJvbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtc3ltYm9sLXByZWRpY2F0ZXMvI3NlYy1zeW1ib2wtaXN3ZWxsa25vd25zeW1ib2xcbi8vIFdlIHNob3VsZCBwYXRjaCBpdCBmb3IgbmV3bHkgYWRkZWQgd2VsbC1rbm93biBzeW1ib2xzLiBJZiBpdCdzIG5vdCByZXF1aXJlZCwgdGhpcyBtb2R1bGUganVzdCB3aWxsIG5vdCBiZSBpbmplY3RlZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1dlbGxLbm93blN5bWJvbCh2YWx1ZSkge1xuICBpZiAoJGlzV2VsbEtub3duU3ltYm9sICYmICRpc1dlbGxLbm93blN5bWJvbCh2YWx1ZSkpIHJldHVybiB0cnVlO1xuICB0cnkge1xuICAgIHZhciBzeW1ib2wgPSB0aGlzU3ltYm9sVmFsdWUodmFsdWUpO1xuICAgIGZvciAodmFyIGogPSAwLCBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhXZWxsS25vd25TeW1ib2xzU3RvcmUpLCBrZXlzTGVuZ3RoID0ga2V5cy5sZW5ndGg7IGogPCBrZXlzTGVuZ3RoOyBqKyspIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXEgLS0gcG9seWZpbGxlZCBzeW1ib2xzIGNhc2VcbiAgICAgIGlmIChXZWxsS25vd25TeW1ib2xzU3RvcmVba2V5c1tqXV0gPT0gc3ltYm9sKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHNhZmUgKi9cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTCAmJiAhIVN5bWJvbFsnZm9yJ10gJiYgISFTeW1ib2wua2V5Rm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBhcHBseSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBhcnJheVNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIHNldCA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXIgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIEZ1bmN0aW9uID0gZ2xvYmFsLkZ1bmN0aW9uO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciAkbG9jYXRpb24sIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXG5mYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIERlbm8gdGhyb3dzIGEgUmVmZXJlbmNlRXJyb3Igb24gYGxvY2F0aW9uYCBhY2Nlc3Mgd2l0aG91dCBgLS1sb2NhdGlvbmAgZmxhZ1xuICAkbG9jYXRpb24gPSBnbG9iYWwubG9jYXRpb247XG59KTtcblxudmFyIHJ1biA9IGZ1bmN0aW9uIChpZCkge1xuICBpZiAoaGFzT3duKHF1ZXVlLCBpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBldmVudExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bihldmVudC5kYXRhKTtcbn07XG5cbnZhciBnbG9iYWxQb3N0TWVzc2FnZURlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIC8vIG9sZCBlbmdpbmVzIGhhdmUgbm90IGxvY2F0aW9uLm9yaWdpblxuICBnbG9iYWwucG9zdE1lc3NhZ2UoU3RyaW5nKGlkKSwgJGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArICRsb2NhdGlvbi5ob3N0KTtcbn07XG5cbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0IHx8ICFjbGVhcikge1xuICBzZXQgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoaGFuZGxlcikge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBmbiA9IGlzQ2FsbGFibGUoaGFuZGxlcikgPyBoYW5kbGVyIDogRnVuY3Rpb24oaGFuZGxlcik7XG4gICAgdmFyIGFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cywgMSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwcGx5KGZuLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKElTX05PREUpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgLy8gZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82MjRcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCAmJiAhSVNfSU9TKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjtcbiAgICBkZWZlciA9IGJpbmQocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKFxuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmXG4gICAgaXNDYWxsYWJsZShnbG9iYWwucG9zdE1lc3NhZ2UpICYmXG4gICAgIWdsb2JhbC5pbXBvcnRTY3JpcHRzICYmXG4gICAgJGxvY2F0aW9uICYmICRsb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2ZpbGU6JyAmJlxuICAgICFmYWlscyhnbG9iYWxQb3N0TWVzc2FnZURlZmVyKVxuICApIHtcbiAgICBkZWZlciA9IGdsb2JhbFBvc3RNZXNzYWdlRGVmZXI7XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkge1xuICB2YXIgU3ltYm9sID0gcGF0aC5TeW1ib2wgfHwgKHBhdGguU3ltYm9sID0ge30pO1xuICBpZiAoIWhhc093bihTeW1ib2wsIE5BTUUpKSBkZWZpbmVQcm9wZXJ0eShTeW1ib2wsIE5BTUUsIHtcbiAgICB2YWx1ZTogd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZS5mKE5BTUUpXG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuZXhwb3J0cy5mID0gd2VsbEtub3duU3ltYm9sO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gYSBzdHJpbmcgb2YgYWxsIHZhbGlkIHVuaWNvZGUgd2hpdGVzcGFjZXNcbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyJyArXG4gICdcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBpbnN0YWxsRXJyb3JDYXVzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlJyk7XG52YXIgaW5zdGFsbEVycm9yU3RhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJEVycm9yID0gRXJyb3I7XG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbnZhciAkQWdncmVnYXRlRXJyb3IgPSBmdW5jdGlvbiBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIG1lc3NhZ2UgLyogLCBvcHRpb25zICovKSB7XG4gIHZhciBpc0luc3RhbmNlID0gaXNQcm90b3R5cGVPZihBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSwgdGhpcyk7XG4gIHZhciB0aGF0O1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICB0aGF0ID0gc2V0UHJvdG90eXBlT2YobmV3ICRFcnJvcigpLCBpc0luc3RhbmNlID8gZ2V0UHJvdG90eXBlT2YodGhpcykgOiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhhdCA9IGlzSW5zdGFuY2UgPyB0aGlzIDogY3JlYXRlKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKTtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgVE9fU1RSSU5HX1RBRywgJ0Vycm9yJyk7XG4gIH1cbiAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdtZXNzYWdlJywgbm9ybWFsaXplU3RyaW5nQXJndW1lbnQobWVzc2FnZSkpO1xuICBpbnN0YWxsRXJyb3JTdGFjayh0aGF0LCAkQWdncmVnYXRlRXJyb3IsIHRoYXQuc3RhY2ssIDEpO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIGluc3RhbGxFcnJvckNhdXNlKHRoYXQsIGFyZ3VtZW50c1syXSk7XG4gIHZhciBlcnJvcnNBcnJheSA9IFtdO1xuICBpdGVyYXRlKGVycm9ycywgcHVzaCwgeyB0aGF0OiBlcnJvcnNBcnJheSB9KTtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdlcnJvcnMnLCBlcnJvcnNBcnJheSk7XG4gIHJldHVybiB0aGF0O1xufTtcblxuaWYgKHNldFByb3RvdHlwZU9mKSBzZXRQcm90b3R5cGVPZigkQWdncmVnYXRlRXJyb3IsICRFcnJvcik7XG5lbHNlIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoJEFnZ3JlZ2F0ZUVycm9yLCAkRXJyb3IsIHsgbmFtZTogdHJ1ZSB9KTtcblxudmFyIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlID0gJEFnZ3JlZ2F0ZUVycm9yLnByb3RvdHlwZSA9IGNyZWF0ZSgkRXJyb3IucHJvdG90eXBlLCB7XG4gIGNvbnN0cnVjdG9yOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJEFnZ3JlZ2F0ZUVycm9yKSxcbiAgbWVzc2FnZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICcnKSxcbiAgbmFtZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICdBZ2dyZWdhdGVFcnJvcicpXG59KTtcblxuLy8gYEFnZ3JlZ2F0ZUVycm9yYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZ2dyZWdhdGUtZXJyb3ItY29uc3RydWN0b3JcbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBhcml0eTogMiB9LCB7XG4gIEFnZ3JlZ2F0ZUVycm9yOiAkQWdncmVnYXRlRXJyb3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmNvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2VzLW5vdC1leGNlZWQtc2FmZS1pbnRlZ2VyJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcblxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gd2VsbEtub3duU3ltYm9sKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcblxuLy8gV2UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4vLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgPSBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBhcnJheVtJU19DT05DQVRfU1BSRUFEQUJMRV0gPSBmYWxzZTtcbiAgcmV0dXJuIGFycmF5LmNvbmNhdCgpWzBdICE9PSBhcnJheTtcbn0pO1xuXG52YXIgaXNDb25jYXRTcHJlYWRhYmxlID0gZnVuY3Rpb24gKE8pIHtcbiAgaWYgKCFpc09iamVjdChPKSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgc3ByZWFkYWJsZSA9IE9bSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICByZXR1cm4gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShPKTtcbn07XG5cbnZhciBGT1JDRUQgPSAhSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCB8fCAhYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnY29uY2F0Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29uY2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvbmNhdFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQGlzQ29uY2F0U3ByZWFkYWJsZSBhbmQgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgY29uY2F0OiBmdW5jdGlvbiBjb25jYXQoYXJnKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICB2YXIgbiA9IDA7XG4gICAgdmFyIGksIGssIGxlbmd0aCwgbGVuLCBFO1xuICAgIGZvciAoaSA9IC0xLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIEUgPSBpID09PSAtMSA/IE8gOiBhcmd1bWVudHNbaV07XG4gICAgICBpZiAoaXNDb25jYXRTcHJlYWRhYmxlKEUpKSB7XG4gICAgICAgIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKEUpO1xuICAgICAgICBkb2VzTm90RXhjZWVkU2FmZUludGVnZXIobiArIGxlbik7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBsZW47IGsrKywgbisrKSBpZiAoayBpbiBFKSBjcmVhdGVQcm9wZXJ0eShBLCBuLCBFW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlcihuICsgMSk7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KEEsIG4rKywgRSk7XG4gICAgICB9XG4gICAgfVxuICAgIEEubGVuZ3RoID0gbjtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbHRlcjtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnZmlsdGVyJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIH0sIHtcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1mb3JlYWNoIC0tIHNhZmVcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFtdLmZvckVhY2ggIT09IGZvckVhY2ggfSwge1xuICBmb3JFYWNoOiBmb3JFYWNoXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbiAgc3dpdGNoIChzdGF0ZS5raW5kKSB7XG4gICAgY2FzZSAna2V5cyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGluZGV4LCBmYWxzZSk7XG4gICAgY2FzZSAndmFsdWVzJzogcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodGFyZ2V0W2luZGV4XSwgZmFsc2UpO1xuICB9IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KFtpbmRleCwgdGFyZ2V0W2luZGV4XV0sIGZhbHNlKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZXVubWFwcGVkYXJndW1lbnRzb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxudmFyIHZhbHVlcyA9IEl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG4vLyBWOCB+IENocm9tZSA0NS0gYnVnXG5pZiAoIUlTX1BVUkUgJiYgREVTQ1JJUFRPUlMgJiYgdmFsdWVzLm5hbWUgIT09ICd2YWx1ZXMnKSB0cnkge1xuICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZXMsICduYW1lJywgeyB2YWx1ZTogJ3ZhbHVlcycgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkbWFwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLm1hcDtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnbWFwJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIH0sIHtcbiAgbWFwOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuc29tZTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdzb21lJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb21lXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJHNvbWUodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIHRvSVNPU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RhdGUtdG8taXNvLXN0cmluZycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IERhdGUoTmFOKS50b0pTT04oKSAhPT0gbnVsbFxuICAgIHx8IGNhbGwoRGF0ZS5wcm90b3R5cGUudG9KU09OLCB7IHRvSVNPU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9IH0pICE9PSAxO1xufSk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS50b2pzb25cbiQoeyB0YXJnZXQ6ICdEYXRlJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgcHYgPSB0b1ByaW1pdGl2ZShPLCAnbnVtYmVyJyk7XG4gICAgcmV0dXJuIHR5cGVvZiBwdiA9PSAnbnVtYmVyJyAmJiAhaXNGaW5pdGUocHYpID8gbnVsbCA6XG4gICAgICAoISgndG9JU09TdHJpbmcnIGluIE8pICYmIGNsYXNzb2YoTykgPT09ICdEYXRlJykgPyBjYWxsKHRvSVNPU3RyaW5nLCBPKSA6IE8udG9JU09TdHJpbmcoKTtcbiAgfVxufSk7XG4iLCIvLyBlbXB0eVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhcHBseSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseScpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcbnZhciBnZXRSZXBsYWNlckZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1qc29uLXJlcGxhY2VyLWZ1bmN0aW9uJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRzdHJpbmdpZnkgPSBnZXRCdWlsdEluKCdKU09OJywgJ3N0cmluZ2lmeScpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIG51bWJlclRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxudmFyIHRlc3RlciA9IC9bXFx1RDgwMC1cXHVERkZGXS9nO1xudmFyIGxvdyA9IC9eW1xcdUQ4MDAtXFx1REJGRl0kLztcbnZhciBoaSA9IC9eW1xcdURDMDAtXFx1REZGRl0kLztcblxudmFyIFdST05HX1NZTUJPTFNfQ09OVkVSU0lPTiA9ICFOQVRJVkVfU1lNQk9MIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpKCdzdHJpbmdpZnkgZGV0ZWN0aW9uJyk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIHJldHVybiAkc3RyaW5naWZ5KFtzeW1ib2xdKSAhPT0gJ1tudWxsXSdcbiAgICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgICB8fCAkc3RyaW5naWZ5KHsgYTogc3ltYm9sIH0pICE9PSAne30nXG4gICAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgICB8fCAkc3RyaW5naWZ5KE9iamVjdChzeW1ib2wpKSAhPT0gJ3t9Jztcbn0pO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC13ZWxsLWZvcm1lZC1zdHJpbmdpZnlcbnZhciBJTExfRk9STUVEX1VOSUNPREUgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkc3RyaW5naWZ5KCdcXHVERjA2XFx1RDgzNCcpICE9PSAnXCJcXFxcdWRmMDZcXFxcdWQ4MzRcIidcbiAgICB8fCAkc3RyaW5naWZ5KCdcXHVERUFEJykgIT09ICdcIlxcXFx1ZGVhZFwiJztcbn0pO1xuXG52YXIgc3RyaW5naWZ5V2l0aFN5bWJvbHNGaXggPSBmdW5jdGlvbiAoaXQsIHJlcGxhY2VyKSB7XG4gIHZhciBhcmdzID0gYXJyYXlTbGljZShhcmd1bWVudHMpO1xuICB2YXIgJHJlcGxhY2VyID0gZ2V0UmVwbGFjZXJGdW5jdGlvbihyZXBsYWNlcik7XG4gIGlmICghaXNDYWxsYWJsZSgkcmVwbGFjZXIpICYmIChpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICBhcmdzWzFdID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAvLyBzb21lIG9sZCBpbXBsZW1lbnRhdGlvbnMgKGxpa2UgV2ViS2l0KSBjb3VsZCBwYXNzIG51bWJlcnMgYXMga2V5c1xuICAgIGlmIChpc0NhbGxhYmxlKCRyZXBsYWNlcikpIHZhbHVlID0gY2FsbCgkcmVwbGFjZXIsIHRoaXMsICRTdHJpbmcoa2V5KSwgdmFsdWUpO1xuICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIH07XG4gIHJldHVybiBhcHBseSgkc3RyaW5naWZ5LCBudWxsLCBhcmdzKTtcbn07XG5cbnZhciBmaXhJbGxGb3JtZWQgPSBmdW5jdGlvbiAobWF0Y2gsIG9mZnNldCwgc3RyaW5nKSB7XG4gIHZhciBwcmV2ID0gY2hhckF0KHN0cmluZywgb2Zmc2V0IC0gMSk7XG4gIHZhciBuZXh0ID0gY2hhckF0KHN0cmluZywgb2Zmc2V0ICsgMSk7XG4gIGlmICgoZXhlYyhsb3csIG1hdGNoKSAmJiAhZXhlYyhoaSwgbmV4dCkpIHx8IChleGVjKGhpLCBtYXRjaCkgJiYgIWV4ZWMobG93LCBwcmV2KSkpIHtcbiAgICByZXR1cm4gJ1xcXFx1JyArIG51bWJlclRvU3RyaW5nKGNoYXJDb2RlQXQobWF0Y2gsIDApLCAxNik7XG4gIH0gcmV0dXJuIG1hdGNoO1xufTtcblxuaWYgKCRzdHJpbmdpZnkpIHtcbiAgLy8gYEpTT04uc3RyaW5naWZ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLnN0cmluZ2lmeVxuICAkKHsgdGFyZ2V0OiAnSlNPTicsIHN0YXQ6IHRydWUsIGFyaXR5OiAzLCBmb3JjZWQ6IFdST05HX1NZTUJPTFNfQ09OVkVSU0lPTiB8fCBJTExfRk9STUVEX1VOSUNPREUgfSwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gICAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgICAgdmFyIGFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cyk7XG4gICAgICB2YXIgcmVzdWx0ID0gYXBwbHkoV1JPTkdfU1lNQk9MU19DT05WRVJTSU9OID8gc3RyaW5naWZ5V2l0aFN5bWJvbHNGaXggOiAkc3RyaW5naWZ5LCBudWxsLCBhcmdzKTtcbiAgICAgIHJldHVybiBJTExfRk9STUVEX1VOSUNPREUgJiYgdHlwZW9mIHJlc3VsdCA9PSAnc3RyaW5nJyA/IHJlcGxhY2UocmVzdWx0LCB0ZXN0ZXIsIGZpeElsbEZvcm1lZCkgOiByZXN1bHQ7XG4gICAgfVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcblxuLy8gSlNPTltAQHRvU3RyaW5nVGFnXSBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwiLy8gZW1wdHlcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG5cbi8vIGBPYmplY3QuYXNzaWduYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBhcml0eTogMiwgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBhc3NpZ24gfSwge1xuICBhc3NpZ246IGFzc2lnblxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJykuZjtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydGllcyAtLSBzYWZlXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyAhPT0gZGVmaW5lUHJvcGVydGllcywgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZGVmaW5lUHJvcGVydGllczogZGVmaW5lUHJvcGVydGllc1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAhPT0gZGVmaW5lUHJvcGVydHksIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGRlZmluZVByb3BlcnR5OiBkZWZpbmVQcm9wZXJ0eVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgRk9SQ0VEID0gIURFU0NSSVBUT1JTIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKDEpOyB9KTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSW5kZXhlZE9iamVjdChpdCksIGtleSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICAgIHZhciBrZXlzID0gb3duS2V5cyhPKTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIga2V5LCBkZXNjcmlwdG9yO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIGtleSA9IGtleXNbaW5kZXgrK10pO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT09IHVuZGVmaW5lZCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxuLy8gVjggfiBDaHJvbWUgMzggYW5kIDM5IGBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzYCBmYWlscyBvbiBwcmltaXRpdmVzXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNDQzXG52YXIgRk9SQ0VEID0gIU5BVElWRV9TWU1CT0wgfHwgZmFpbHMoZnVuY3Rpb24gKCkgeyBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZigxKTsgfSk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5c3ltYm9sc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICB2YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gJGdldE93blByb3BlcnR5U3ltYm9scyh0b09iamVjdChpdCkpIDogW107XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBuYXRpdmVLZXlzKDEpOyB9KTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMgfSwge1xuICBrZXlzOiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXModG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG4iLCIvLyBlbXB0eVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1wYXJzZS1pbnQnKTtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IHBhcnNlSW50ICE9PSAkcGFyc2VJbnQgfSwge1xuICBwYXJzZUludDogJHBhcnNlSW50XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbi8vIGBQcm9taXNlLmFsbFNldHRsZWRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbHNldHRsZWRcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFsbFNldHRsZWQ6IGZ1bmN0aW9uIGFsbFNldHRsZWQoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgY2FsbChwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB7IHN0YXR1czogJ2Z1bGZpbGxlZCcsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdyZWplY3RlZCcsIHJlYXNvbjogZXJyb3IgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5hbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG52YXIgUFJPTUlTRV9BTllfRVJST1IgPSAnTm8gb25lIHByb21pc2UgcmVzb2x2ZWQnO1xuXG4vLyBgUHJvbWlzZS5hbnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFueVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYW55OiBmdW5jdGlvbiBhbnkoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIEFnZ3JlZ2F0ZUVycm9yID0gZ2V0QnVpbHRJbignQWdncmVnYXRlRXJyb3InKTtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICB2YXIgYWxyZWFkeVJlc29sdmVkID0gZmFsc2U7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5UmVqZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwocHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeVJlamVjdGVkIHx8IGFscmVhZHlSZXNvbHZlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlSZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgZXJyb3JzW2luZGV4XSA9IGVycm9yO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVqZWN0KG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIFBST01JU0VfQU5ZX0VSUk9SKSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5jYXRjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLmNhdGNoXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SLCByZWFsOiB0cnVlIH0sIHtcbiAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gIH1cbn0pO1xuXG4vLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNjYXRjaGAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG5pZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpKSB7XG4gIHZhciBtZXRob2QgPSBnZXRCdWlsdEluKCdQcm9taXNlJykucHJvdG90eXBlWydjYXRjaCddO1xuICBpZiAoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAhPT0gbWV0aG9kKSB7XG4gICAgZGVmaW5lQnVpbHRJbihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnY2F0Y2gnLCBtZXRob2QsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzJyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5DT05TVFJVQ1RPUjtcbnZhciBOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uUkVKRUNUSU9OX0VWRU5UO1xudmFyIE5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLlNVQkNMQVNTSU5HO1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbnZhciBQcm9taXNlQ29uc3RydWN0b3IgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3I7XG52YXIgUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGU7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xudmFyIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5O1xuXG52YXIgRElTUEFUQ0hfRVZFTlQgPSAhIShkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAmJiBnbG9iYWwuZGlzcGF0Y2hFdmVudCk7XG52YXIgVU5IQU5ETEVEX1JFSkVDVElPTiA9ICd1bmhhbmRsZWRyZWplY3Rpb24nO1xudmFyIFJFSkVDVElPTl9IQU5ETEVEID0gJ3JlamVjdGlvbmhhbmRsZWQnO1xudmFyIFBFTkRJTkcgPSAwO1xudmFyIEZVTEZJTExFRCA9IDE7XG52YXIgUkVKRUNURUQgPSAyO1xudmFyIEhBTkRMRUQgPSAxO1xudmFyIFVOSEFORExFRCA9IDI7XG5cbnZhciBJbnRlcm5hbCwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFByb21pc2VXcmFwcGVyLCBuYXRpdmVUaGVuO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiBpc0NhbGxhYmxlKHRoZW4gPSBpdC50aGVuKSA/IHRoZW4gOiBmYWxzZTtcbn07XG5cbnZhciBjYWxsUmVhY3Rpb24gPSBmdW5jdGlvbiAocmVhY3Rpb24sIHN0YXRlKSB7XG4gIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICB2YXIgb2sgPSBzdGF0ZS5zdGF0ZSA9PT0gRlVMRklMTEVEO1xuICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgdHJ5IHtcbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaWYgKCFvaykge1xuICAgICAgICBpZiAoc3RhdGUucmVqZWN0aW9uID09PSBVTkhBTkRMRUQpIG9uSGFuZGxlVW5oYW5kbGVkKHN0YXRlKTtcbiAgICAgICAgc3RhdGUucmVqZWN0aW9uID0gSEFORExFRDtcbiAgICAgIH1cbiAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIGNhbiB0aHJvd1xuICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgIGNhbGwodGhlbiwgcmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufTtcblxudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChzdGF0ZSwgaXNSZWplY3QpIHtcbiAgaWYgKHN0YXRlLm5vdGlmaWVkKSByZXR1cm47XG4gIHN0YXRlLm5vdGlmaWVkID0gdHJ1ZTtcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVhY3Rpb25zID0gc3RhdGUucmVhY3Rpb25zO1xuICAgIHZhciByZWFjdGlvbjtcbiAgICB3aGlsZSAocmVhY3Rpb24gPSByZWFjdGlvbnMuZ2V0KCkpIHtcbiAgICAgIGNhbGxSZWFjdGlvbihyZWFjdGlvbiwgc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5ub3RpZmllZCA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhc3RhdGUucmVqZWN0aW9uKSBvblVuaGFuZGxlZChzdGF0ZSk7XG4gIH0pO1xufTtcblxudmFyIGRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAobmFtZSwgcHJvbWlzZSwgcmVhc29uKSB7XG4gIHZhciBldmVudCwgaGFuZGxlcjtcbiAgaWYgKERJU1BBVENIX0VWRU5UKSB7XG4gICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldmVudC5wcm9taXNlID0gcHJvbWlzZTtcbiAgICBldmVudC5yZWFzb24gPSByZWFzb247XG4gICAgZXZlbnQuaW5pdEV2ZW50KG5hbWUsIGZhbHNlLCB0cnVlKTtcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH0gZWxzZSBldmVudCA9IHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiByZWFzb24gfTtcbiAgaWYgKCFOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgSVNfVU5IQU5ETEVEID0gaXNVbmhhbmRsZWQoc3RhdGUpO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKElTX1VOSEFORExFRCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChJU19OT0RFKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFVOSEFORExFRF9SRUpFQ1RJT04sIHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHN0YXRlLnJlamVjdGlvbiA9IElTX05PREUgfHwgaXNVbmhhbmRsZWQoc3RhdGUpID8gVU5IQU5ETEVEIDogSEFORExFRDtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gIH0pO1xufTtcblxudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5yZWplY3Rpb24gIT09IEhBTkRMRUQgJiYgIXN0YXRlLnBhcmVudDtcbn07XG5cbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjYWxsKHRhc2ssIGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIGlmIChJU19OT0RFKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChSRUpFQ1RJT05fSEFORExFRCwgcHJvbWlzZSwgc3RhdGUudmFsdWUpO1xuICB9KTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gKGZuLCBzdGF0ZSwgdW53cmFwKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmbihzdGF0ZSwgdmFsdWUsIHVud3JhcCk7XG4gIH07XG59O1xuXG52YXIgaW50ZXJuYWxSZWplY3QgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICBzdGF0ZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICBub3RpZnkoc3RhdGUsIHRydWUpO1xufTtcblxudmFyIGludGVybmFsUmVzb2x2ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHRyeSB7XG4gICAgaWYgKHN0YXRlLmZhY2FkZSA9PT0gdmFsdWUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICB2YXIgdGhlbiA9IGlzVGhlbmFibGUodmFsdWUpO1xuICAgIGlmICh0aGVuKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYWxsKHRoZW4sIHZhbHVlLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlc29sdmUsIHdyYXBwZXIsIHN0YXRlKSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZWplY3QsIHdyYXBwZXIsIHN0YXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaW50ZXJuYWxSZWplY3Qod3JhcHBlciwgZXJyb3IsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gICAgICBzdGF0ZS5zdGF0ZSA9IEZVTEZJTExFRDtcbiAgICAgIG5vdGlmeShzdGF0ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbnRlcm5hbFJlamVjdCh7IGRvbmU6IGZhbHNlIH0sIGVycm9yLCBzdGF0ZSk7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5pZiAoRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgUHJvbWlzZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgYUNhbGxhYmxlKGV4ZWN1dG9yKTtcbiAgICBjYWxsKEludGVybmFsLCB0aGlzKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKSwgYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaW50ZXJuYWxSZWplY3Qoc3RhdGUsIGVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgUHJvbWlzZVByb3RvdHlwZSA9IFByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBQUk9NSVNFLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBub3RpZmllZDogZmFsc2UsXG4gICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgcmVhY3Rpb25zOiBuZXcgUXVldWUoKSxcbiAgICAgIHJlamVjdGlvbjogZmFsc2UsXG4gICAgICBzdGF0ZTogUEVORElORyxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgfTtcblxuICAvLyBgUHJvbWlzZS5wcm90b3R5cGUudGhlbmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUudGhlblxuICBJbnRlcm5hbC5wcm90b3R5cGUgPSBkZWZpbmVCdWlsdEluKFByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBQcm9taXNlQ29uc3RydWN0b3IpKTtcbiAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgIHJlYWN0aW9uLm9rID0gaXNDYWxsYWJsZShvbkZ1bGZpbGxlZCkgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgcmVhY3Rpb24uZmFpbCA9IGlzQ2FsbGFibGUob25SZWplY3RlZCkgJiYgb25SZWplY3RlZDtcbiAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHN0YXRlLnN0YXRlID09PSBQRU5ESU5HKSBzdGF0ZS5yZWFjdGlvbnMuYWRkKHJlYWN0aW9uKTtcbiAgICBlbHNlIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgfSk7XG5cbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG5cbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yIHx8IEMgPT09IFByb21pc2VXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG5cbiAgaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGUudGhlbjtcblxuICAgIGlmICghTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkcpIHtcbiAgICAgIC8vIG1ha2UgYFByb21pc2UjdGhlbmAgcmV0dXJuIGEgcG9seWZpbGxlZCBgUHJvbWlzZWAgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGNhbGwobmF0aXZlVGhlbiwgdGhhdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjQwXG4gICAgICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIGAuY29uc3RydWN0b3IgPT09IFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICB0cnkge1xuICAgICAgZGVsZXRlIE5hdGl2ZVByb21pc2VQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgLy8gbWFrZSBgaW5zdGFuY2VvZiBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICBzZXRQcm90b3R5cGVPZihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIHdyYXA6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICBQcm9taXNlOiBQcm9taXNlQ29uc3RydWN0b3Jcbn0pO1xuXG5zZXRUb1N0cmluZ1RhZyhQcm9taXNlQ29uc3RydWN0b3IsIFBST01JU0UsIGZhbHNlLCB0cnVlKTtcbnNldFNwZWNpZXMoUFJPTUlTRSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcblxudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuLy8gU2FmYXJpIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODI5XG52YXIgTk9OX0dFTkVSSUMgPSAhIU5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXRoZW5hYmxlIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2ZpbmFsbHknXS5jYWxsKHsgdGhlbjogZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9IH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gYFByb21pc2UucHJvdG90eXBlLmZpbmFsbHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5maW5hbGx5XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IE5PTl9HRU5FUklDIH0sIHtcbiAgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgZ2V0QnVpbHRJbignUHJvbWlzZScpKTtcbiAgICB2YXIgaXNGdW5jdGlvbiA9IGlzQ2FsbGFibGUob25GaW5hbGx5KTtcbiAgICByZXR1cm4gdGhpcy50aGVuKFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICAgIH0gOiBvbkZpbmFsbHksXG4gICAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5XG4gICAgKTtcbiAgfVxufSk7XG5cbi8vIG1ha2VzIHN1cmUgdGhhdCBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzIGBQcm9taXNlI2ZpbmFsbHlgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnZmluYWxseSddO1xuICBpZiAoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddICE9PSBtZXRob2QpIHtcbiAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICdmaW5hbGx5JywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBzcGxpdCB0byBtb2R1bGVzIGxpc3RlZCBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuYWxsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2gnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVqZWN0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVzb2x2ZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UucmFjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmFjZVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG5cbi8vIGBQcm9taXNlLnJlamVjdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVqZWN0XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciBjYXBhYmlsaXR5UmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgY2FwYWJpbGl0eVJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcblxudmFyIFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG52YXIgQ0hFQ0tfV1JBUFBFUiA9IElTX1BVUkUgJiYgIUZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SO1xuXG4vLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZXNvbHZlXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB9LCB7XG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDSEVDS19XUkFQUEVSICYmIHRoaXMgPT09IFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPyBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbi8vIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS13aXRoLXJlc29sdmVyc1xuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlIH0sIHtcbiAgd2l0aFJlc29sdmVyczogZnVuY3Rpb24gd2l0aFJlc29sdmVycygpIHtcbiAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHJldHVybiB7XG4gICAgICBwcm9taXNlOiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlLFxuICAgICAgcmVzb2x2ZTogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSxcbiAgICAgIHJlamVjdDogcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0XG4gICAgfTtcbiAgfVxufSk7XG4iLCIvLyBlbXB0eVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZScpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBub3RBUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25vdC1hLXJlZ2V4cCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgY29ycmVjdElzUmVnRXhwTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIHNsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG52YXIgQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgPSBjb3JyZWN0SXNSZWdFeHBMb2dpYygnZW5kc1dpdGgnKTtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL3B1bGwvNzAyXG52YXIgTUROX1BPTFlGSUxMX0JVRyA9ICFJU19QVVJFICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyAmJiAhIWZ1bmN0aW9uICgpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgJ2VuZHNXaXRoJyk7XG4gIHJldHVybiBkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLndyaXRhYmxlO1xufSgpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuZW5kc3dpdGhcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhTUROX1BPTFlGSUxMX0JVRyAmJiAhQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgfSwge1xuICBlbmRzV2l0aDogZnVuY3Rpb24gZW5kc1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgZW5kUG9zaXRpb24gPSBAbGVuZ3RoICovKSB7XG4gICAgdmFyIHRoYXQgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgICBub3RBUmVnRXhwKHNlYXJjaFN0cmluZyk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRoYXQubGVuZ3RoO1xuICAgIHZhciBlbmQgPSBlbmRQb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gbGVuIDogbWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gdG9TdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gc2xpY2UodGhhdCwgZW5kIC0gc2VhcmNoLmxlbmd0aCwgZW5kKSA9PT0gc2VhcmNoO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogdG9TdHJpbmcoaXRlcmF0ZWQpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xuLy8gYCVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHBvaW50LCBmYWxzZSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxudmFyIENPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDID0gY29ycmVjdElzUmVnRXhwTG9naWMoJ3N0YXJ0c1dpdGgnKTtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL3B1bGwvNzAyXG52YXIgTUROX1BPTFlGSUxMX0JVRyA9ICFJU19QVVJFICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyAmJiAhIWZ1bmN0aW9uICgpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgJ3N0YXJ0c1dpdGgnKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGU7XG59KCk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnN0YXJ0c3dpdGhcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhTUROX1BPTFlGSUxMX0JVRyAmJiAhQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgfSwge1xuICBzdGFydHNXaXRoOiBmdW5jdGlvbiBzdGFydHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHZhciB0aGF0ID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgbm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKG1pbihhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgdGhhdC5sZW5ndGgpKTtcbiAgICB2YXIgc2VhcmNoID0gdG9TdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gc3RyaW5nU2xpY2UodGhhdCwgaW5kZXgsIGluZGV4ICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLmFzeW5jSXRlcmF0b3JgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5hc3luY2l0ZXJhdG9yXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2FzeW5jSXRlcmF0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBuYXRpdmVPYmplY3RDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG52YXIgZGVmaW5lU3ltYm9sVG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWRlZmluZS10by1wcmltaXRpdmUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xuXG52YXIgSElEREVOID0gc2hhcmVkS2V5KCdoaWRkZW4nKTtcbnZhciBTWU1CT0wgPSAnU3ltYm9sJztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoU1lNQk9MKTtcblxudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIFN5bWJvbFByb3RvdHlwZSA9ICRTeW1ib2wgJiYgJFN5bWJvbFtQUk9UT1RZUEVdO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyA9IGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbC5mO1xudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0gcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZjtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIFVTRV9TRVRURVIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBmYWxsYmFja0RlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgdmFyIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCBQKTtcbiAgaWYgKE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpIGRlbGV0ZSBPYmplY3RQcm90b3R5cGVbUF07XG4gIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICBpZiAoT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciAmJiBPICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPYmplY3RQcm90b3R5cGUsIFAsIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpO1xuICB9XG59O1xuXG52YXIgc2V0U3ltYm9sRGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdENyZWF0ZShuYXRpdmVEZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPT0gNztcbn0pID8gZmFsbGJhY2tEZWZpbmVQcm9wZXJ0eSA6IG5hdGl2ZURlZmluZVByb3BlcnR5O1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcsIGRlc2NyaXB0aW9uKSB7XG4gIHZhciBzeW1ib2wgPSBBbGxTeW1ib2xzW3RhZ10gPSBuYXRpdmVPYmplY3RDcmVhdGUoU3ltYm9sUHJvdG90eXBlKTtcbiAgc2V0SW50ZXJuYWxTdGF0ZShzeW1ib2wsIHtcbiAgICB0eXBlOiBTWU1CT0wsXG4gICAgdGFnOiB0YWcsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uXG4gIH0pO1xuICBpZiAoIURFU0NSSVBUT1JTKSBzeW1ib2wuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgcmV0dXJuIHN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGlmIChPID09PSBPYmplY3RQcm90b3R5cGUpICRkZWZpbmVQcm9wZXJ0eShPYmplY3RQcm90b3R5cGVTeW1ib2xzLCBQLCBBdHRyaWJ1dGVzKTtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXkgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKGhhc093bihBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFBdHRyaWJ1dGVzLmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzT3duKE8sIEhJRERFTikpIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIEhJRERFTiwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIG5hdGl2ZU9iamVjdENyZWF0ZShudWxsKSkpO1xuICAgICAgT1tISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzT3duKE8sIEhJRERFTikgJiYgT1tISURERU5dW2tleV0pIE9bSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBBdHRyaWJ1dGVzID0gbmF0aXZlT2JqZWN0Q3JlYXRlKEF0dHJpYnV0ZXMsIHsgZW51bWVyYWJsZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjcmlwdG9yKE8sIGtleSwgQXR0cmlidXRlcyk7XG4gIH0gcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIGtleSwgQXR0cmlidXRlcyk7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBwcm9wZXJ0aWVzID0gdG9JbmRleGVkT2JqZWN0KFByb3BlcnRpZXMpO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMocHJvcGVydGllcykuY29uY2F0KCRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMocHJvcGVydGllcykpO1xuICAkZm9yRWFjaChrZXlzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFERVNDUklQVE9SUyB8fCBjYWxsKCRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgcHJvcGVydGllcywga2V5KSkgJGRlZmluZVByb3BlcnR5KE8sIGtleSwgcHJvcGVydGllc1trZXldKTtcbiAgfSk7XG4gIHJldHVybiBPO1xufTtcblxudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gbmF0aXZlT2JqZWN0Q3JlYXRlKE8pIDogJGRlZmluZVByb3BlcnRpZXMobmF0aXZlT2JqZWN0Q3JlYXRlKE8pLCBQcm9wZXJ0aWVzKTtcbn07XG5cbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBQID0gdG9Qcm9wZXJ0eUtleShWKTtcbiAgdmFyIGVudW1lcmFibGUgPSBjYWxsKG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLCB0aGlzLCBQKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvdHlwZSAmJiBoYXNPd24oQWxsU3ltYm9scywgUCkgJiYgIWhhc093bihPYmplY3RQcm90b3R5cGVTeW1ib2xzLCBQKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZW51bWVyYWJsZSB8fCAhaGFzT3duKHRoaXMsIFApIHx8ICFoYXNPd24oQWxsU3ltYm9scywgUCkgfHwgaGFzT3duKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW1BdXG4gICAgPyBlbnVtZXJhYmxlIDogdHJ1ZTtcbn07XG5cbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgdmFyIGl0ID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICB2YXIga2V5ID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzT3duKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhc093bihPYmplY3RQcm90b3R5cGVTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBkZXNjcmlwdG9yID0gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpO1xuICBpZiAoZGVzY3JpcHRvciAmJiBoYXNPd24oQWxsU3ltYm9scywga2V5KSAmJiAhKGhhc093bihpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSB7XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZGVzY3JpcHRvcjtcbn07XG5cbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICB2YXIgbmFtZXMgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChPKSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgJGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIWhhc093bihBbGxTeW1ib2xzLCBrZXkpICYmICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSkgcHVzaChyZXN1bHQsIGtleSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiAoTykge1xuICB2YXIgSVNfT0JKRUNUX1BST1RPVFlQRSA9IE8gPT09IE9iamVjdFByb3RvdHlwZTtcbiAgdmFyIG5hbWVzID0gbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyhJU19PQkpFQ1RfUFJPVE9UWVBFID8gT2JqZWN0UHJvdG90eXBlU3ltYm9scyA6IHRvSW5kZXhlZE9iamVjdChPKSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgJGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoaGFzT3duKEFsbFN5bWJvbHMsIGtleSkgJiYgKCFJU19PQkpFQ1RfUFJPVE9UWVBFIHx8IGhhc093bihPYmplY3RQcm90b3R5cGUsIGtleSkpKSB7XG4gICAgICBwdXNoKHJlc3VsdCwgQWxsU3ltYm9sc1trZXldKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gYFN5bWJvbGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLWNvbnN0cnVjdG9yXG5pZiAoIU5BVElWRV9TWU1CT0wpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAoaXNQcm90b3R5cGVPZihTeW1ib2xQcm90b3R5cGUsIHRoaXMpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSAhYXJndW1lbnRzLmxlbmd0aCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICR0b1N0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgIHZhciB0YWcgPSB1aWQoZGVzY3JpcHRpb24pO1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHZhciAkdGhpcyA9IHRoaXMgPT09IHVuZGVmaW5lZCA/IGdsb2JhbCA6IHRoaXM7XG4gICAgICBpZiAoJHRoaXMgPT09IE9iamVjdFByb3RvdHlwZSkgY2FsbChzZXR0ZXIsIE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXNPd24oJHRoaXMsIEhJRERFTikgJiYgaGFzT3duKCR0aGlzW0hJRERFTl0sIHRhZykpICR0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0U3ltYm9sRGVzY3JpcHRvcigkdGhpcywgdGFnLCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICBmYWxsYmFja0RlZmluZVByb3BlcnR5KCR0aGlzLCB0YWcsIGRlc2NyaXB0b3IpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIFVTRV9TRVRURVIpIHNldFN5bWJvbERlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6IHNldHRlciB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcsIGRlc2NyaXB0aW9uKTtcbiAgfTtcblxuICBTeW1ib2xQcm90b3R5cGUgPSAkU3ltYm9sW1BST1RPVFlQRV07XG5cbiAgZGVmaW5lQnVpbHRJbihTeW1ib2xQcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnRhZztcbiAgfSk7XG5cbiAgZGVmaW5lQnVpbHRJbigkU3ltYm9sLCAnd2l0aG91dFNldHRlcicsIGZ1bmN0aW9uIChkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiB3cmFwKHVpZChkZXNjcmlwdGlvbiksIGRlc2NyaXB0aW9uKTtcbiAgfSk7XG5cbiAgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgZGVmaW5lUHJvcGVydGllc01vZHVsZS5mID0gJGRlZmluZVByb3BlcnRpZXM7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mID0gZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsLmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2VsbEtub3duU3ltYm9sKG5hbWUpLCBuYW1lKTtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1TeW1ib2wtZGVzY3JpcHRpb25cbiAgICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoU3ltYm9sUHJvdG90eXBlLCAnZGVzY3JpcHRpb24nLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5kZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIUlTX1BVUkUpIHtcbiAgICAgIGRlZmluZUJ1aWx0SW4oT2JqZWN0UHJvdG90eXBlLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgd3JhcDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCwgc2hhbTogIU5BVElWRV9TWU1CT0wgfSwge1xuICBTeW1ib2w6ICRTeW1ib2xcbn0pO1xuXG4kZm9yRWFjaChvYmplY3RLZXlzKFdlbGxLbm93blN5bWJvbHNTdG9yZSksIGZ1bmN0aW9uIChuYW1lKSB7XG4gIGRlZmluZVdlbGxLbm93blN5bWJvbChuYW1lKTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiBTWU1CT0wsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wgfSwge1xuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgVVNFX1NFVFRFUiA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBVU0VfU0VUVEVSID0gZmFsc2U7IH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JzXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvclxufSk7XG5cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MIH0sIHtcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lc1xufSk7XG5cbi8vIGBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnByb3RvdHlwZS1AQHRvcHJpbWl0aXZlXG5kZWZpbmVTeW1ib2xUb1ByaW1pdGl2ZSgpO1xuXG4vLyBgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXWAgcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnByb3RvdHlwZS1AQHRvc3RyaW5ndGFnXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCBTWU1CT0wpO1xuXG5oaWRkZW5LZXlzW0hJRERFTl0gPSB0cnVlO1xuIiwiLy8gZW1wdHlcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgTkFUSVZFX1NZTUJPTF9SRUdJU1RSWSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtcmVnaXN0cnktZGV0ZWN0aW9uJyk7XG5cbnZhciBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xuXG4vLyBgU3ltYm9sLmZvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5mb3JcbiQoeyB0YXJnZXQ6ICdTeW1ib2wnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MX1JFR0lTVFJZIH0sIHtcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgc3RyaW5nID0gdG9TdHJpbmcoa2V5KTtcbiAgICBpZiAoaGFzT3duKFN0cmluZ1RvU3ltYm9sUmVnaXN0cnksIHN0cmluZykpIHJldHVybiBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ107XG4gICAgdmFyIHN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpKHN0cmluZyk7XG4gICAgU3RyaW5nVG9TeW1ib2xSZWdpc3RyeVtzdHJpbmddID0gc3ltYm9sO1xuICAgIFN5bWJvbFRvU3RyaW5nUmVnaXN0cnlbc3ltYm9sXSA9IHN0cmluZztcbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wuaGFzSW5zdGFuY2VgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5oYXNpbnN0YW5jZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdoYXNJbnN0YW5jZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5pc2NvbmNhdHNwcmVhZGFibGVcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLml0ZXJhdG9yYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuaXRlcmF0b3JcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3Mgc3BsaXQgdG8gbW9kdWxlcyBsaXN0ZWQgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3ltYm9sLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnN5bWJvbC5mb3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3ltYm9sLmtleS1mb3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIE5BVElWRV9TWU1CT0xfUkVHSVNUUlkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLXJlZ2lzdHJ5LWRldGVjdGlvbicpO1xuXG52YXIgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xuXG4vLyBgU3ltYm9sLmtleUZvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5rZXlmb3JcbiQoeyB0YXJnZXQ6ICdTeW1ib2wnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MX1JFR0lTVFJZIH0sIHtcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBuZXcgVHlwZUVycm9yKHRyeVRvU3RyaW5nKHN5bSkgKyAnIGlzIG5vdCBhIHN5bWJvbCcpO1xuICAgIGlmIChoYXNPd24oU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSwgc3ltKSkgcmV0dXJuIFN5bWJvbFRvU3RyaW5nUmVnaXN0cnlbc3ltXTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLm1hdGNoQWxsYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wubWF0Y2hhbGxcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnbWF0Y2hBbGwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wubWF0Y2hgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5tYXRjaFxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5yZXBsYWNlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wucmVwbGFjZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdyZXBsYWNlJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLnNlYXJjaGAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNlYXJjaFxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdzZWFyY2gnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wuc3BlY2llc2Agd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNwZWNpZXNcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5zcGxpdGAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNwbGl0XG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3NwbGl0Jyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xudmFyIGRlZmluZVN5bWJvbFRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1kZWZpbmUtdG8tcHJpbWl0aXZlJyk7XG5cbi8vIGBTeW1ib2wudG9QcmltaXRpdmVgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC50b3ByaW1pdGl2ZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUtQEB0b3ByaW1pdGl2ZVxuZGVmaW5lU3ltYm9sVG9QcmltaXRpdmUoKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xuXG4vLyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wudG9zdHJpbmd0YWdcbmRlZmluZVdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11gIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUtQEB0b3N0cmluZ3RhZ1xuc2V0VG9TdHJpbmdUYWcoZ2V0QnVpbHRJbignU3ltYm9sJyksICdTeW1ib2wnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wudW5zY29wYWJsZXNgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC51bnNjb3BhYmxlc1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCd1bnNjb3BhYmxlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG52YXIgTUVUQURBVEEgPSB3ZWxsS25vd25TeW1ib2woJ21ldGFkYXRhJyk7XG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8vIEZ1bmN0aW9uLnByb3RvdHlwZVtAQG1ldGFkYXRhXVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZGVjb3JhdG9yLW1ldGFkYXRhXG5pZiAoRnVuY3Rpb25Qcm90b3R5cGVbTUVUQURBVEFdID09PSB1bmRlZmluZWQpIHtcbiAgZGVmaW5lUHJvcGVydHkoRnVuY3Rpb25Qcm90b3R5cGUsIE1FVEFEQVRBLCB7XG4gICAgdmFsdWU6IG51bGxcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFzeW5jLWV4cGxpY2l0LXJlc291cmNlLW1hbmFnZW1lbnRcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnYXN5bmNEaXNwb3NlJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG4vLyBgU3ltYm9sLmN1c3RvbU1hdGNoZXJgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wYXR0ZXJuLW1hdGNoaW5nXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2N1c3RvbU1hdGNoZXInKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wuZGlzcG9zZWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWV4cGxpY2l0LXJlc291cmNlLW1hbmFnZW1lbnRcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnZGlzcG9zZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNSZWdpc3RlcmVkU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1pcy1yZWdpc3RlcmVkJyk7XG5cbi8vIGBTeW1ib2wuaXNSZWdpc3RlcmVkU3ltYm9sYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1zeW1ib2wtcHJlZGljYXRlcy8jc2VjLXN5bWJvbC1pc3JlZ2lzdGVyZWRzeW1ib2xcbiQoeyB0YXJnZXQ6ICdTeW1ib2wnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNSZWdpc3RlcmVkU3ltYm9sOiBpc1JlZ2lzdGVyZWRTeW1ib2xcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNSZWdpc3RlcmVkU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1pcy1yZWdpc3RlcmVkJyk7XG5cbi8vIGBTeW1ib2wuaXNSZWdpc3RlcmVkYCBtZXRob2Rcbi8vIG9ic29sZXRlIHZlcnNpb24gb2YgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXN5bWJvbC1wcmVkaWNhdGVzLyNzZWMtc3ltYm9sLWlzcmVnaXN0ZXJlZHN5bWJvbFxuJCh7IHRhcmdldDogJ1N5bWJvbCcsIHN0YXQ6IHRydWUsIG5hbWU6ICdpc1JlZ2lzdGVyZWRTeW1ib2wnIH0sIHtcbiAgaXNSZWdpc3RlcmVkOiBpc1JlZ2lzdGVyZWRTeW1ib2xcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWlzLXdlbGwta25vd24nKTtcblxuLy8gYFN5bWJvbC5pc1dlbGxLbm93blN5bWJvbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtc3ltYm9sLXByZWRpY2F0ZXMvI3NlYy1zeW1ib2wtaXN3ZWxsa25vd25zeW1ib2xcbi8vIFdlIHNob3VsZCBwYXRjaCBpdCBmb3IgbmV3bHkgYWRkZWQgd2VsbC1rbm93biBzeW1ib2xzLiBJZiBpdCdzIG5vdCByZXF1aXJlZCwgdGhpcyBtb2R1bGUganVzdCB3aWxsIG5vdCBiZSBpbmplY3RlZFxuJCh7IHRhcmdldDogJ1N5bWJvbCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gIGlzV2VsbEtub3duU3ltYm9sOiBpc1dlbGxLbm93blN5bWJvbFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1dlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtaXMtd2VsbC1rbm93bicpO1xuXG4vLyBgU3ltYm9sLmlzV2VsbEtub3duYCBtZXRob2Rcbi8vIG9ic29sZXRlIHZlcnNpb24gb2YgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXN5bWJvbC1wcmVkaWNhdGVzLyNzZWMtc3ltYm9sLWlzd2VsbGtub3duc3ltYm9sXG4vLyBXZSBzaG91bGQgcGF0Y2ggaXQgZm9yIG5ld2x5IGFkZGVkIHdlbGwta25vd24gc3ltYm9scy4gSWYgaXQncyBub3QgcmVxdWlyZWQsIHRoaXMgbW9kdWxlIGp1c3Qgd2lsbCBub3QgYmUgaW5qZWN0ZWRcbiQoeyB0YXJnZXQ6ICdTeW1ib2wnLCBzdGF0OiB0cnVlLCBuYW1lOiAnaXNXZWxsS25vd25TeW1ib2wnLCBmb3JjZWQ6IHRydWUgfSwge1xuICBpc1dlbGxLbm93bjogaXNXZWxsS25vd25TeW1ib2xcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5tYXRjaGVyYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcGF0dGVybi1tYXRjaGluZ1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtYXRjaGVyJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5tZXRhZGF0YUtleWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWRlY29yYXRvci1tZXRhZGF0YVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtZXRhZGF0YUtleScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUnKTtcblxuLy8gYFN5bWJvbC5tZXRhZGF0YWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWRlY29yYXRvcnNcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnbWV0YWRhdGEnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wub2JzZXJ2YWJsZWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnb2JzZXJ2YWJsZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogcmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lJyk7XG5cbi8vIGBTeW1ib2wucGF0dGVybk1hdGNoYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcGF0dGVybi1tYXRjaGluZ1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdwYXR0ZXJuTWF0Y2gnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IHJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZScpO1xuXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3JlcGxhY2VBbGwnKTtcbiIsIi8vIGVtcHR5XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgc2V0VG9TdHJpbmdUYWcoZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV0sIENPTExFQ1RJT05fTkFNRSk7XG4gIEl0ZXJhdG9yc1tDT0xMRUNUSU9OX05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uLy4uL2VzL2FycmF5L3ZpcnR1YWwvZm9yLWVhY2gnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvaW5zdGFuY2UvZW5kcy13aXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL2ZpbHRlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIG1ldGhvZCA9IHJlcXVpcmUoJy4uL2FycmF5L3ZpcnR1YWwvZm9yLWVhY2gnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaCcpO1xuXG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbnZhciBET01JdGVyYWJsZXMgPSB7XG4gIERPTVRva2VuTGlzdDogdHJ1ZSxcbiAgTm9kZUxpc3Q6IHRydWVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC5mb3JFYWNoO1xuICByZXR1cm4gaXQgPT09IEFycmF5UHJvdG90eXBlIHx8IChpc1Byb3RvdHlwZU9mKEFycmF5UHJvdG90eXBlLCBpdCkgJiYgb3duID09PSBBcnJheVByb3RvdHlwZS5mb3JFYWNoKVxuICAgIHx8IGhhc093bihET01JdGVyYWJsZXMsIGNsYXNzb2YoaXQpKSA/IG1ldGhvZCA6IG93bjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvaW5zdGFuY2UvbWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL3NvbWUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvaW5zdGFuY2Uvc3RhcnRzLXdpdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvanNvbi9zdHJpbmdpZnknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvb2JqZWN0L2Fzc2lnbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvZGVmaW5lLXByb3BlcnRpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvb2JqZWN0L2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vZXMvcGFyc2UtaW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL3Byb21pc2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9zeW1ib2wvaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9zeW1ib2wvdG8tcHJpbWl0aXZlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgY29udGludWF0aW9uIGZ1bmN0aW9uIHdpdGggc29tZSBhcmd1bWVudHMgYWxyZWFkeSBhcHBsaWVkLlxuICpcbiAqIFVzZWZ1bCBhcyBhIHNob3J0aGFuZCB3aGVuIGNvbWJpbmVkIHdpdGggb3RoZXIgY29udHJvbCBmbG93IGZ1bmN0aW9ucy4gQW55XG4gKiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBhcmUgYWRkZWQgdG8gdGhlIGFyZ3VtZW50c1xuICogb3JpZ2luYWxseSBwYXNzZWQgdG8gYXBwbHkuXG4gKlxuICogQG5hbWUgYXBwbHlcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIFRoZSBmdW5jdGlvbiB5b3Ugd2FudCB0byBldmVudHVhbGx5IGFwcGx5IGFsbFxuICogYXJndW1lbnRzIHRvLiBJbnZva2VzIHdpdGggKGFyZ3VtZW50cy4uLikuXG4gKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGF1dG9tYXRpY2FsbHkgYXBwbHlcbiAqIHdoZW4gdGhlIGNvbnRpbnVhdGlvbiBpcyBjYWxsZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IHRoZSBwYXJ0aWFsbHktYXBwbGllZCBmdW5jdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyB1c2luZyBhcHBseVxuICogYXN5bmMucGFyYWxsZWwoW1xuICogICAgIGFzeW5jLmFwcGx5KGZzLndyaXRlRmlsZSwgJ3Rlc3RmaWxlMScsICd0ZXN0MScpLFxuICogICAgIGFzeW5jLmFwcGx5KGZzLndyaXRlRmlsZSwgJ3Rlc3RmaWxlMicsICd0ZXN0MicpXG4gKiBdKTtcbiAqXG4gKlxuICogLy8gdGhlIHNhbWUgcHJvY2VzcyB3aXRob3V0IHVzaW5nIGFwcGx5XG4gKiBhc3luYy5wYXJhbGxlbChbXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgZnMud3JpdGVGaWxlKCd0ZXN0ZmlsZTEnLCAndGVzdDEnLCBjYWxsYmFjayk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBmcy53cml0ZUZpbGUoJ3Rlc3RmaWxlMicsICd0ZXN0MicsIGNhbGxiYWNrKTtcbiAqICAgICB9XG4gKiBdKTtcbiAqXG4gKiAvLyBJdCdzIHBvc3NpYmxlIHRvIHBhc3MgYW55IG51bWJlciBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGVuIGNhbGxpbmcgdGhlXG4gKiAvLyBjb250aW51YXRpb246XG4gKlxuICogbm9kZT4gdmFyIGZuID0gYXN5bmMuYXBwbHkoc3lzLnB1dHMsICdvbmUnKTtcbiAqIG5vZGU+IGZuKCd0d28nLCAndGhyZWUnKTtcbiAqIG9uZVxuICogdHdvXG4gKiB0aHJlZVxuICovXG5mdW5jdGlvbiBhcHBseShmbiwgLi4uYXJncykge1xuICAgIHJldHVybiAoLi4uY2FsbEFyZ3MpID0+IGZuKC4uLmFyZ3MsLi4uY2FsbEFyZ3MpO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsUGFyYW1zIChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncy8qLCBjYWxsYmFjayovKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3MucG9wKCk7XG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGFyZ3MsIGNhbGxiYWNrKTtcbiAgICB9O1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuXG52YXIgaGFzUXVldWVNaWNyb3Rhc2sgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09ICdmdW5jdGlvbicgJiYgcXVldWVNaWNyb3Rhc2s7XG52YXIgaGFzU2V0SW1tZWRpYXRlID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBzZXRJbW1lZGlhdGU7XG52YXIgaGFzTmV4dFRpY2sgPSB0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHByb2Nlc3MubmV4dFRpY2sgPT09ICdmdW5jdGlvbic7XG5cbmZ1bmN0aW9uIGZhbGxiYWNrKGZuKSB7XG4gICAgc2V0VGltZW91dChmbiwgMCk7XG59XG5cbmZ1bmN0aW9uIHdyYXAoZGVmZXIpIHtcbiAgICByZXR1cm4gKGZuLCAuLi5hcmdzKSA9PiBkZWZlcigoKSA9PiBmbiguLi5hcmdzKSk7XG59XG5cbnZhciBfZGVmZXIkMTtcblxuaWYgKGhhc1F1ZXVlTWljcm90YXNrKSB7XG4gICAgX2RlZmVyJDEgPSBxdWV1ZU1pY3JvdGFzaztcbn0gZWxzZSBpZiAoaGFzU2V0SW1tZWRpYXRlKSB7XG4gICAgX2RlZmVyJDEgPSBzZXRJbW1lZGlhdGU7XG59IGVsc2UgaWYgKGhhc05leHRUaWNrKSB7XG4gICAgX2RlZmVyJDEgPSBwcm9jZXNzLm5leHRUaWNrO1xufSBlbHNlIHtcbiAgICBfZGVmZXIkMSA9IGZhbGxiYWNrO1xufVxuXG52YXIgc2V0SW1tZWRpYXRlJDEgPSB3cmFwKF9kZWZlciQxKTtcblxuLyoqXG4gKiBUYWtlIGEgc3luYyBmdW5jdGlvbiBhbmQgbWFrZSBpdCBhc3luYywgcGFzc2luZyBpdHMgcmV0dXJuIHZhbHVlIHRvIGFcbiAqIGNhbGxiYWNrLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcGx1Z2dpbmcgc3luYyBmdW5jdGlvbnMgaW50byBhIHdhdGVyZmFsbCxcbiAqIHNlcmllcywgb3Igb3RoZXIgYXN5bmMgZnVuY3Rpb25zLiBBbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZ2VuZXJhdGVkXG4gKiBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgd3JhcHBlZCBmdW5jdGlvbiAoZXhjZXB0IGZvciB0aGUgZmluYWxcbiAqIGNhbGxiYWNrIGFyZ3VtZW50KS4gRXJyb3JzIHRocm93biB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGJhY2suXG4gKlxuICogSWYgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBgYXN5bmNpZnlgIHJldHVybnMgYSBQcm9taXNlLCB0aGF0IHByb21pc2VzJ3NcbiAqIHJlc29sdmVkL3JlamVjdGVkIHN0YXRlIHdpbGwgYmUgdXNlZCB0byBjYWxsIHRoZSBjYWxsYmFjaywgcmF0aGVyIHRoYW4gc2ltcGx5XG4gKiB0aGUgc3luY2hyb25vdXMgcmV0dXJuIHZhbHVlLlxuICpcbiAqIFRoaXMgYWxzbyBtZWFucyB5b3UgY2FuIGFzeW5jaWZ5IEVTMjAxNyBgYXN5bmNgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAbmFtZSBhc3luY2lmeVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGFsaWFzIHdyYXBTeW5jXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyAtIFRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiwgb3IgUHJvbWlzZS1yZXR1cm5pbmdcbiAqIGZ1bmN0aW9uIHRvIGNvbnZlcnQgdG8gYW4ge0BsaW5rIEFzeW5jRnVuY3Rpb259LlxuICogQHJldHVybnMge0FzeW5jRnVuY3Rpb259IEFuIGFzeW5jaHJvbm91cyB3cmFwcGVyIG9mIHRoZSBgZnVuY2AuIFRvIGJlXG4gKiBpbnZva2VkIHdpdGggYChhcmdzLi4uLCBjYWxsYmFjaylgLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBwYXNzaW5nIGEgcmVndWxhciBzeW5jaHJvbm91cyBmdW5jdGlvblxuICogYXN5bmMud2F0ZXJmYWxsKFtcbiAqICAgICBhc3luYy5hcHBseShmcy5yZWFkRmlsZSwgZmlsZW5hbWUsIFwidXRmOFwiKSxcbiAqICAgICBhc3luYy5hc3luY2lmeShKU09OLnBhcnNlKSxcbiAqICAgICBmdW5jdGlvbiAoZGF0YSwgbmV4dCkge1xuICogICAgICAgICAvLyBkYXRhIGlzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgdGV4dC5cbiAqICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcGFyc2luZyBlcnJvciwgaXQgd291bGQgaGF2ZSBiZWVuIGNhdWdodC5cbiAqICAgICB9XG4gKiBdLCBjYWxsYmFjayk7XG4gKlxuICogLy8gcGFzc2luZyBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHByb21pc2VcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgYXN5bmMuYXBwbHkoZnMucmVhZEZpbGUsIGZpbGVuYW1lLCBcInV0ZjhcIiksXG4gKiAgICAgYXN5bmMuYXN5bmNpZnkoZnVuY3Rpb24gKGNvbnRlbnRzKSB7XG4gKiAgICAgICAgIHJldHVybiBkYi5tb2RlbC5jcmVhdGUoY29udGVudHMpO1xuICogICAgIH0pLFxuICogICAgIGZ1bmN0aW9uIChtb2RlbCwgbmV4dCkge1xuICogICAgICAgICAvLyBgbW9kZWxgIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kZWwgb2JqZWN0LlxuICogICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHRoaXMgZnVuY3Rpb24gd291bGQgYmUgc2tpcHBlZC5cbiAqICAgICB9XG4gKiBdLCBjYWxsYmFjayk7XG4gKlxuICogLy8gZXMyMDE3IGV4YW1wbGUsIHRob3VnaCBgYXN5bmNpZnlgIGlzIG5vdCBuZWVkZWQgaWYgeW91ciBKUyBlbnZpcm9ubWVudFxuICogLy8gc3VwcG9ydHMgYXN5bmMgZnVuY3Rpb25zIG91dCBvZiB0aGUgYm94XG4gKiB2YXIgcSA9IGFzeW5jLnF1ZXVlKGFzeW5jLmFzeW5jaWZ5KGFzeW5jIGZ1bmN0aW9uKGZpbGUpIHtcbiAqICAgICB2YXIgaW50ZXJtZWRpYXRlU3RlcCA9IGF3YWl0IHByb2Nlc3NGaWxlKGZpbGUpO1xuICogICAgIHJldHVybiBhd2FpdCBzb21lUHJvbWlzZShpbnRlcm1lZGlhdGVTdGVwKVxuICogfSkpO1xuICpcbiAqIHEucHVzaChmaWxlcyk7XG4gKi9cbmZ1bmN0aW9uIGFzeW5jaWZ5KGZ1bmMpIHtcbiAgICBpZiAoaXNBc3luYyhmdW5jKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MvKiwgY2FsbGJhY2sqLykge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlUHJvbWlzZShwcm9taXNlLCBjYWxsYmFjaylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbml0aWFsUGFyYW1zKGZ1bmN0aW9uIChhcmdzLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHJlc3VsdCBpcyBQcm9taXNlIG9iamVjdFxuICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVByb21pc2UocmVzdWx0LCBjYWxsYmFjaylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUHJvbWlzZShwcm9taXNlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBwcm9taXNlLnRoZW4odmFsdWUgPT4ge1xuICAgICAgICBpbnZva2VDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgdmFsdWUpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICAgIGludm9rZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnIgJiYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IGVyci5tZXNzYWdlKSA/IGVyciA6IG5ldyBFcnJvcihlcnIpKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaW52b2tlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yLCB2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCB2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEltbWVkaWF0ZSQxKGUgPT4geyB0aHJvdyBlIH0sIGVycik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0FzeW5jKGZuKSB7XG4gICAgcmV0dXJuIGZuW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNBc3luY0dlbmVyYXRvcihmbikge1xuICAgIHJldHVybiBmbltTeW1ib2wudG9TdHJpbmdUYWddID09PSAnQXN5bmNHZW5lcmF0b3InO1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiB3cmFwQXN5bmMoYXN5bmNGbikge1xuICAgIGlmICh0eXBlb2YgYXN5bmNGbiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBhIGZ1bmN0aW9uJylcbiAgICByZXR1cm4gaXNBc3luYyhhc3luY0ZuKSA/IGFzeW5jaWZ5KGFzeW5jRm4pIDogYXN5bmNGbjtcbn1cblxuLy8gY29uZGl0aW9uYWxseSBwcm9taXNpZnkgYSBmdW5jdGlvbi5cbi8vIG9ubHkgcmV0dXJuIGEgcHJvbWlzZSBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbmZ1bmN0aW9uIGF3YWl0aWZ5IChhc3luY0ZuLCBhcml0eSkge1xuICAgIGlmICghYXJpdHkpIGFyaXR5ID0gYXN5bmNGbi5sZW5ndGg7XG4gICAgaWYgKCFhcml0eSkgdGhyb3cgbmV3IEVycm9yKCdhcml0eSBpcyB1bmRlZmluZWQnKVxuICAgIGZ1bmN0aW9uIGF3YWl0YWJsZSAoLi4uYXJncykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3NbYXJpdHkgLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jRm4uYXBwbHkodGhpcywgYXJncylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBhcmdzW2FyaXR5IC0gMV0gPSAoZXJyLCAuLi5jYkFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgICAgICAgICByZXNvbHZlKGNiQXJncy5sZW5ndGggPiAxID8gY2JBcmdzIDogY2JBcmdzWzBdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhc3luY0ZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdGFibGVcbn1cblxuZnVuY3Rpb24gYXBwbHlFYWNoJDEgKGVhY2hmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiBhcHBseUVhY2goZm5zLCAuLi5jYWxsQXJncykge1xuICAgICAgICBjb25zdCBnbyA9IGF3YWl0aWZ5KGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGVhY2hmbihmbnMsIChmbiwgY2IpID0+IHtcbiAgICAgICAgICAgICAgICB3cmFwQXN5bmMoZm4pLmFwcGx5KHRoYXQsIGNhbGxBcmdzLmNvbmNhdChjYikpO1xuICAgICAgICAgICAgfSwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdvO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIF9hc3luY01hcChlYWNoZm4sIGFyciwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgYXJyID0gYXJyIHx8IFtdO1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuXG4gICAgcmV0dXJuIGVhY2hmbihhcnIsICh2YWx1ZSwgXywgaXRlckNiKSA9PiB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgX2l0ZXJhdGVlKHZhbHVlLCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRzW2luZGV4XSA9IHY7XG4gICAgICAgICAgICBpdGVyQ2IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgICAgY2FsbGJhY2soZXJyLCByZXN1bHRzKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUubGVuZ3RoID49IDAgJiZcbiAgICAgICAgdmFsdWUubGVuZ3RoICUgMSA9PT0gMDtcbn1cblxuLy8gQSB0ZW1wb3JhcnkgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBpZiB0aGUgbG9vcCBzaG91bGQgYmUgYnJva2VuLlxuLy8gU2VlICMxMDY0LCAjMTI5M1xuY29uc3QgYnJlYWtMb29wID0ge307XG52YXIgYnJlYWtMb29wJDEgPSBicmVha0xvb3A7XG5cbmZ1bmN0aW9uIG9uY2UoZm4pIHtcbiAgICBmdW5jdGlvbiB3cmFwcGVyICguLi5hcmdzKSB7XG4gICAgICAgIGlmIChmbiA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICB2YXIgY2FsbEZuID0gZm47XG4gICAgICAgIGZuID0gbnVsbDtcbiAgICAgICAgY2FsbEZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cbiAgICBPYmplY3QuYXNzaWduKHdyYXBwZXIsIGZuKTtcbiAgICByZXR1cm4gd3JhcHBlclxufVxuXG5mdW5jdGlvbiBnZXRJdGVyYXRvciAoY29sbCkge1xuICAgIHJldHVybiBjb2xsW1N5bWJvbC5pdGVyYXRvcl0gJiYgY29sbFtTeW1ib2wuaXRlcmF0b3JdKCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5SXRlcmF0b3IoY29sbCkge1xuICAgIHZhciBpID0gLTE7XG4gICAgdmFyIGxlbiA9IGNvbGwubGVuZ3RoO1xuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICByZXR1cm4gKytpIDwgbGVuID8ge3ZhbHVlOiBjb2xsW2ldLCBrZXk6IGl9IDogbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVTMjAxNUl0ZXJhdG9yKGl0ZXJhdG9yKSB7XG4gICAgdmFyIGkgPSAtMTtcbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgIGlmIChpdGVtLmRvbmUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICByZXR1cm4ge3ZhbHVlOiBpdGVtLnZhbHVlLCBrZXk6IGl9O1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0SXRlcmF0b3Iob2JqKSB7XG4gICAgdmFyIG9rZXlzID0gb2JqID8gT2JqZWN0LmtleXMob2JqKSA6IFtdO1xuICAgIHZhciBpID0gLTE7XG4gICAgdmFyIGxlbiA9IG9rZXlzLmxlbmd0aDtcbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIGtleSA9IG9rZXlzWysraV07XG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpIDwgbGVuID8ge3ZhbHVlOiBvYmpba2V5XSwga2V5fSA6IG51bGw7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3IoY29sbCkge1xuICAgIGlmIChpc0FycmF5TGlrZShjb2xsKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXlJdGVyYXRvcihjb2xsKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihjb2xsKTtcbiAgICByZXR1cm4gaXRlcmF0b3IgPyBjcmVhdGVFUzIwMTVJdGVyYXRvcihpdGVyYXRvcikgOiBjcmVhdGVPYmplY3RJdGVyYXRvcihjb2xsKTtcbn1cblxuZnVuY3Rpb24gb25seU9uY2UoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGZuID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJDYWxsYmFjayB3YXMgYWxyZWFkeSBjYWxsZWQuXCIpO1xuICAgICAgICB2YXIgY2FsbEZuID0gZm47XG4gICAgICAgIGZuID0gbnVsbDtcbiAgICAgICAgY2FsbEZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG59XG5cbi8vIGZvciBhc3luYyBnZW5lcmF0b3JzXG5mdW5jdGlvbiBhc3luY0VhY2hPZkxpbWl0KGdlbmVyYXRvciwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7XG4gICAgbGV0IGF3YWl0aW5nID0gZmFsc2U7XG4gICAgbGV0IHJ1bm5pbmcgPSAwO1xuICAgIGxldCBpZHggPSAwO1xuXG4gICAgZnVuY3Rpb24gcmVwbGVuaXNoKCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKCdyZXBsZW5pc2gnKVxuICAgICAgICBpZiAocnVubmluZyA+PSBsaW1pdCB8fCBhd2FpdGluZyB8fCBkb25lKSByZXR1cm5cbiAgICAgICAgLy9jb25zb2xlLmxvZygncmVwbGVuaXNoIGF3YWl0aW5nJylcbiAgICAgICAgYXdhaXRpbmcgPSB0cnVlO1xuICAgICAgICBnZW5lcmF0b3IubmV4dCgpLnRoZW4oKHt2YWx1ZSwgZG9uZTogaXRlckRvbmV9KSA9PiB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdnb3QgdmFsdWUnLCB2YWx1ZSlcbiAgICAgICAgICAgIGlmIChjYW5jZWxlZCB8fCBkb25lKSByZXR1cm5cbiAgICAgICAgICAgIGF3YWl0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXRlckRvbmUpIHtcbiAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocnVubmluZyA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2RvbmUgbmV4dENiJylcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJ1bm5pbmcrKztcbiAgICAgICAgICAgIGl0ZXJhdGVlKHZhbHVlLCBpZHgsIGl0ZXJhdGVlQ2FsbGJhY2spO1xuICAgICAgICAgICAgaWR4Kys7XG4gICAgICAgICAgICByZXBsZW5pc2goKTtcbiAgICAgICAgfSkuY2F0Y2goaGFuZGxlRXJyb3IpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlQ2FsbGJhY2soZXJyLCByZXN1bHQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnaXRlcmF0ZWVDYWxsYmFjaycpXG4gICAgICAgIHJ1bm5pbmcgLT0gMTtcbiAgICAgICAgaWYgKGNhbmNlbGVkKSByZXR1cm5cbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGhhbmRsZUVycm9yKGVycilcblxuICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgPT09IGJyZWFrTG9vcCQxIHx8IChkb25lICYmIHJ1bm5pbmcgPD0gMCkpIHtcbiAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnZG9uZSBpdGVyQ2InKVxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJlcGxlbmlzaCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycikge1xuICAgICAgICBpZiAoY2FuY2VsZWQpIHJldHVyblxuICAgICAgICBhd2FpdGluZyA9IGZhbHNlO1xuICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9XG5cbiAgICByZXBsZW5pc2goKTtcbn1cblxudmFyIGVhY2hPZkxpbWl0JDIgPSAobGltaXQpID0+IHtcbiAgICByZXR1cm4gKG9iaiwgaXRlcmF0ZWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gICAgICAgIGlmIChsaW1pdCA8PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignY29uY3VycmVuY3kgbGltaXQgY2Fubm90IGJlIGxlc3MgdGhhbiAxJylcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9iaikge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FzeW5jR2VuZXJhdG9yKG9iaikpIHtcbiAgICAgICAgICAgIHJldHVybiBhc3luY0VhY2hPZkxpbWl0KG9iaiwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKG9iaikpIHtcbiAgICAgICAgICAgIHJldHVybiBhc3luY0VhY2hPZkxpbWl0KG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV4dEVsZW0gPSBjcmVhdGVJdGVyYXRvcihvYmopO1xuICAgICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgICB2YXIgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHJ1bm5pbmcgPSAwO1xuICAgICAgICB2YXIgbG9vcGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGZ1bmN0aW9uIGl0ZXJhdGVlQ2FsbGJhY2soZXJyLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhbmNlbGVkKSByZXR1cm5cbiAgICAgICAgICAgIHJ1bm5pbmcgLT0gMTtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBicmVha0xvb3AkMSB8fCAoZG9uZSAmJiBydW5uaW5nIDw9IDApKSB7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWxvb3BpbmcpIHtcbiAgICAgICAgICAgICAgICByZXBsZW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcGxlbmlzaCAoKSB7XG4gICAgICAgICAgICBsb29waW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHdoaWxlIChydW5uaW5nIDwgbGltaXQgJiYgIWRvbmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IG5leHRFbGVtKCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChydW5uaW5nIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcnVubmluZyArPSAxO1xuICAgICAgICAgICAgICAgIGl0ZXJhdGVlKGVsZW0udmFsdWUsIGVsZW0ua2V5LCBvbmx5T25jZShpdGVyYXRlZUNhbGxiYWNrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb29waW5nID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXBsZW5pc2goKTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGVhY2hPZmBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNoT2Z9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICogdGltZS5cbiAqXG4gKiBAbmFtZSBlYWNoT2ZMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaE9mXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaE9mfVxuICogQGFsaWFzIGZvckVhY2hPZkxpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaFxuICogaXRlbSBpbiBgY29sbGAuIFRoZSBga2V5YCBpcyB0aGUgaXRlbSdzIGtleSwgb3IgaW5kZXggaW4gdGhlIGNhc2Ugb2YgYW5cbiAqIGFycmF5LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqL1xuZnVuY3Rpb24gZWFjaE9mTGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBlYWNoT2ZMaW1pdCQyKGxpbWl0KShjb2xsLCB3cmFwQXN5bmMoaXRlcmF0ZWUpLCBjYWxsYmFjayk7XG59XG5cbnZhciBlYWNoT2ZMaW1pdCQxID0gYXdhaXRpZnkoZWFjaE9mTGltaXQsIDQpO1xuXG4vLyBlYWNoT2YgaW1wbGVtZW50YXRpb24gb3B0aW1pemVkIGZvciBhcnJheS1saWtlc1xuZnVuY3Rpb24gZWFjaE9mQXJyYXlMaWtlKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgY29tcGxldGVkID0gMCxcbiAgICAgICAge2xlbmd0aH0gPSBjb2xsLFxuICAgICAgICBjYW5jZWxlZCA9IGZhbHNlO1xuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXRlcmF0b3JDYWxsYmFjayhlcnIsIHZhbHVlKSB7XG4gICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbmNlbGVkID09PSB0cnVlKSByZXR1cm5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfSBlbHNlIGlmICgoKytjb21wbGV0ZWQgPT09IGxlbmd0aCkgfHwgdmFsdWUgPT09IGJyZWFrTG9vcCQxKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBpdGVyYXRlZShjb2xsW2luZGV4XSwgaW5kZXgsIG9ubHlPbmNlKGl0ZXJhdG9yQ2FsbGJhY2spKTtcbiAgICB9XG59XG5cbi8vIGEgZ2VuZXJpYyB2ZXJzaW9uIG9mIGVhY2hPZiB3aGljaCBjYW4gaGFuZGxlIGFycmF5LCBvYmplY3QsIGFuZCBpdGVyYXRvciBjYXNlcy5cbmZ1bmN0aW9uIGVhY2hPZkdlbmVyaWMgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBlYWNoT2ZMaW1pdCQxKGNvbGwsIEluZmluaXR5LCBpdGVyYXRlZSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIExpa2UgW2BlYWNoYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9LCBleGNlcHQgdGhhdCBpdCBwYXNzZXMgdGhlIGtleSAob3IgaW5kZXgpIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcbiAqIHRvIHRoZSBpdGVyYXRlZS5cbiAqXG4gKiBAbmFtZSBlYWNoT2ZcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBhbGlhcyBmb3JFYWNoT2ZcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAc2VlIFthc3luYy5lYWNoXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaH1cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaFxuICogaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgYGtleWAgaXMgdGhlIGl0ZW0ncyBrZXksIG9yIGluZGV4IGluIHRoZSBjYXNlIG9mIGFuIGFycmF5LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gZGV2Lmpzb24gaXMgYSBmaWxlIGNvbnRhaW5pbmcgYSB2YWxpZCBqc29uIG9iamVjdCBjb25maWcgZm9yIGRldiBlbnZpcm9ubWVudFxuICogLy8gZGV2Lmpzb24gaXMgYSBmaWxlIGNvbnRhaW5pbmcgYSB2YWxpZCBqc29uIG9iamVjdCBjb25maWcgZm9yIHRlc3QgZW52aXJvbm1lbnRcbiAqIC8vIHByb2QuanNvbiBpcyBhIGZpbGUgY29udGFpbmluZyBhIHZhbGlkIGpzb24gb2JqZWN0IGNvbmZpZyBmb3IgcHJvZCBlbnZpcm9ubWVudFxuICogLy8gaW52YWxpZC5qc29uIGlzIGEgZmlsZSB3aXRoIGEgbWFsZm9ybWVkIGpzb24gb2JqZWN0XG4gKlxuICogbGV0IGNvbmZpZ3MgPSB7fTsgLy9nbG9iYWwgdmFyaWFibGVcbiAqIGxldCB2YWxpZENvbmZpZ0ZpbGVNYXAgPSB7ZGV2OiAnZGV2Lmpzb24nLCB0ZXN0OiAndGVzdC5qc29uJywgcHJvZDogJ3Byb2QuanNvbid9O1xuICogbGV0IGludmFsaWRDb25maWdGaWxlTWFwID0ge2RldjogJ2Rldi5qc29uJywgdGVzdDogJ3Rlc3QuanNvbicsIGludmFsaWQ6ICdpbnZhbGlkLmpzb24nfTtcbiAqXG4gKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCByZWFkcyBhIGpzb24gZmlsZSBhbmQgcGFyc2VzIHRoZSBjb250ZW50cyBhcyBqc29uIG9iamVjdFxuICogZnVuY3Rpb24gcGFyc2VGaWxlKGZpbGUsIGtleSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5yZWFkRmlsZShmaWxlLCBcInV0ZjhcIiwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxiYWNrKGVycik7XG4gKiAgICAgICAgIHRyeSB7XG4gKiAgICAgICAgICAgICBjb25maWdzW2tleV0gPSBKU09OLnBhcnNlKGRhdGEpO1xuICogICAgICAgICB9IGNhdGNoIChlKSB7XG4gKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZSk7XG4gKiAgICAgICAgIH1cbiAqICAgICAgICAgY2FsbGJhY2soKTtcbiAqICAgICB9KTtcbiAqIH1cbiAqXG4gKiAvLyBVc2luZyBjYWxsYmFja3NcbiAqIGFzeW5jLmZvckVhY2hPZih2YWxpZENvbmZpZ0ZpbGVNYXAsIHBhcnNlRmlsZSwgZnVuY3Rpb24gKGVycikge1xuICogICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICogICAgICAgICAvLyBjb25maWdzIGlzIG5vdyBhIG1hcCBvZiBKU09OIGRhdGEsIGUuZy5cbiAqICAgICAgICAgLy8geyBkZXY6IC8vcGFyc2VkIGRldi5qc29uLCB0ZXN0OiAvL3BhcnNlZCB0ZXN0Lmpzb24sIHByb2Q6IC8vcGFyc2VkIHByb2QuanNvbn1cbiAqICAgICB9XG4gKiB9KTtcbiAqXG4gKiAvL0Vycm9yIGhhbmRpbmdcbiAqIGFzeW5jLmZvckVhY2hPZihpbnZhbGlkQ29uZmlnRmlsZU1hcCwgcGFyc2VGaWxlLCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgaWYgKGVycikge1xuICogICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gKiAgICAgICAgIC8vIEpTT04gcGFyc2UgZXJyb3IgZXhjZXB0aW9uXG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coY29uZmlncyk7XG4gKiAgICAgfVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLmZvckVhY2hPZih2YWxpZENvbmZpZ0ZpbGVNYXAsIHBhcnNlRmlsZSlcbiAqIC50aGVuKCAoKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coY29uZmlncyk7XG4gKiAgICAgLy8gY29uZmlncyBpcyBub3cgYSBtYXAgb2YgSlNPTiBkYXRhLCBlLmcuXG4gKiAgICAgLy8geyBkZXY6IC8vcGFyc2VkIGRldi5qc29uLCB0ZXN0OiAvL3BhcnNlZCB0ZXN0Lmpzb24sIHByb2Q6IC8vcGFyc2VkIHByb2QuanNvbn1cbiAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICogICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vRXJyb3IgaGFuZGluZ1xuICogYXN5bmMuZm9yRWFjaE9mKGludmFsaWRDb25maWdGaWxlTWFwLCBwYXJzZUZpbGUpXG4gKiAudGhlbiggKCkgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICogICAgIC8vIEpTT04gcGFyc2UgZXJyb3IgZXhjZXB0aW9uXG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5mb3JFYWNoT2YodmFsaWRDb25maWdGaWxlTWFwLCBwYXJzZUZpbGUpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhjb25maWdzKTtcbiAqICAgICAgICAgLy8gY29uZmlncyBpcyBub3cgYSBtYXAgb2YgSlNPTiBkYXRhLCBlLmcuXG4gKiAgICAgICAgIC8vIHsgZGV2OiAvL3BhcnNlZCBkZXYuanNvbiwgdGVzdDogLy9wYXJzZWQgdGVzdC5qc29uLCBwcm9kOiAvL3BhcnNlZCBwcm9kLmpzb259XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy9FcnJvciBoYW5kaW5nXG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmZvckVhY2hPZihpbnZhbGlkQ29uZmlnRmlsZU1hcCwgcGFyc2VGaWxlKTtcbiAqICAgICAgICAgY29uc29sZS5sb2coY29uZmlncyk7XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAgICAgLy8gSlNPTiBwYXJzZSBlcnJvciBleGNlcHRpb25cbiAqICAgICB9XG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBlYWNoT2YoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGVhY2hPZkltcGxlbWVudGF0aW9uID0gaXNBcnJheUxpa2UoY29sbCkgPyBlYWNoT2ZBcnJheUxpa2UgOiBlYWNoT2ZHZW5lcmljO1xuICAgIHJldHVybiBlYWNoT2ZJbXBsZW1lbnRhdGlvbihjb2xsLCB3cmFwQXN5bmMoaXRlcmF0ZWUpLCBjYWxsYmFjayk7XG59XG5cbnZhciBlYWNoT2YkMSA9IGF3YWl0aWZ5KGVhY2hPZiwgMyk7XG5cbi8qKlxuICogUHJvZHVjZXMgYSBuZXcgY29sbGVjdGlvbiBvZiB2YWx1ZXMgYnkgbWFwcGluZyBlYWNoIHZhbHVlIGluIGBjb2xsYCB0aHJvdWdoXG4gKiB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbi4gVGhlIGBpdGVyYXRlZWAgaXMgY2FsbGVkIHdpdGggYW4gaXRlbSBmcm9tIGBjb2xsYFxuICogYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcuIEVhY2ggb2YgdGhlc2UgY2FsbGJhY2tzXG4gKiB0YWtlcyAyIGFyZ3VtZW50czogYW4gYGVycm9yYCwgYW5kIHRoZSB0cmFuc2Zvcm1lZCBpdGVtIGZyb20gYGNvbGxgLiBJZlxuICogYGl0ZXJhdGVlYCBwYXNzZXMgYW4gZXJyb3IgdG8gaXRzIGNhbGxiYWNrLCB0aGUgbWFpbiBgY2FsbGJhY2tgIChmb3IgdGhlXG4gKiBgbWFwYCBmdW5jdGlvbikgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIGVycm9yLlxuICpcbiAqIE5vdGUsIHRoYXQgc2luY2UgdGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpblxuICogcGFyYWxsZWwsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyB3aWxsIGNvbXBsZXRlXG4gKiBpbiBvcmRlci4gSG93ZXZlciwgdGhlIHJlc3VsdHMgYXJyYXkgd2lsbCBiZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGVcbiAqIG9yaWdpbmFsIGBjb2xsYC5cbiAqXG4gKiBJZiBgbWFwYCBpcyBwYXNzZWQgYW4gT2JqZWN0LCB0aGUgcmVzdWx0cyB3aWxsIGJlIGFuIEFycmF5LiAgVGhlIHJlc3VsdHNcbiAqIHdpbGwgcm91Z2hseSBiZSBpbiB0aGUgb3JkZXIgb2YgdGhlIG9yaWdpbmFsIE9iamVjdHMnIGtleXMgKGJ1dCB0aGlzIGNhblxuICogdmFyeSBhY3Jvc3MgSmF2YVNjcmlwdCBlbmdpbmVzKS5cbiAqXG4gKiBAbmFtZSBtYXBcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgaXRlbS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gQXJyYXkgb2YgdGhlXG4gKiB0cmFuc2Zvcm1lZCBpdGVtcyBmcm9tIHRoZSBgY29sbGAuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBmaWxlMS50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMTAwMCBieXRlcyBpbiBzaXplXG4gKiAvLyBmaWxlMi50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMjAwMCBieXRlcyBpbiBzaXplXG4gKiAvLyBmaWxlMy50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMzAwMCBieXRlcyBpbiBzaXplXG4gKiAvLyBmaWxlNC50eHQgZG9lcyBub3QgZXhpc3RcbiAqXG4gKiBjb25zdCBmaWxlTGlzdCA9IFsnZmlsZTEudHh0JywnZmlsZTIudHh0JywnZmlsZTMudHh0J107XG4gKiBjb25zdCB3aXRoTWlzc2luZ0ZpbGVMaXN0ID0gWydmaWxlMS50eHQnLCdmaWxlMi50eHQnLCdmaWxlNC50eHQnXTtcbiAqXG4gKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBmaWxlIHNpemUgaW4gYnl0ZXNcbiAqIGZ1bmN0aW9uIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBjYWxsYmFjaykge1xuICogICAgIGZzLnN0YXQoZmlsZSwgZnVuY3Rpb24oZXJyLCBzdGF0KSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICogICAgICAgICB9XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHN0YXQuc2l6ZSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKlxuICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gKiBhc3luYy5tYXAoZmlsZUxpc3QsIGdldEZpbGVTaXplSW5CeXRlcywgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgaWYgKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgICAvLyByZXN1bHRzIGlzIG5vdyBhbiBhcnJheSBvZiB0aGUgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAqICAgICAgICAgLy8gWyAxMDAwLCAyMDAwLCAzMDAwXVxuICogICAgIH1cbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYy5tYXAod2l0aE1pc3NpbmdGaWxlTGlzdCwgZ2V0RmlsZVNpemVJbkJ5dGVzLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgfVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLm1hcChmaWxlTGlzdCwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICogLnRoZW4oIHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgaXMgbm93IGFuIGFycmF5IG9mIHRoZSBmaWxlIHNpemUgaW4gYnl0ZXMgZm9yIGVhY2ggZmlsZSwgZS5nLlxuICogICAgIC8vIFsgMTAwMCwgMjAwMCwgMzAwMF1cbiAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiB9KTtcbiAqXG4gKiAvLyBFcnJvciBIYW5kbGluZ1xuICogYXN5bmMubWFwKHdpdGhNaXNzaW5nRmlsZUxpc3QsIGdldEZpbGVTaXplSW5CeXRlcylcbiAqIC50aGVuKCByZXN1bHRzID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5tYXAoZmlsZUxpc3QsIGdldEZpbGVTaXplSW5CeXRlcyk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgICAvLyByZXN1bHRzIGlzIG5vdyBhbiBhcnJheSBvZiB0aGUgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAqICAgICAgICAgLy8gWyAxMDAwLCAyMDAwLCAzMDAwXVxuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5tYXAod2l0aE1pc3NpbmdGaWxlTGlzdCwgZ2V0RmlsZVNpemVJbkJ5dGVzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqICAgICB9XG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBtYXAgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfYXN5bmNNYXAoZWFjaE9mJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBtYXAkMSA9IGF3YWl0aWZ5KG1hcCwgMyk7XG5cbi8qKlxuICogQXBwbGllcyB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIHRvIGVhY2ggZnVuY3Rpb24gaW4gdGhlIGFycmF5LCBjYWxsaW5nXG4gKiBgY2FsbGJhY2tgIGFmdGVyIGFsbCBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQuIElmIHlvdSBvbmx5IHByb3ZpZGUgdGhlIGZpcnN0XG4gKiBhcmd1bWVudCwgYGZuc2AsIHRoZW4gaXQgd2lsbCByZXR1cm4gYSBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBwYXNzIGluIHRoZVxuICogYXJndW1lbnRzIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSWYgbW9yZSBhcmd1bWVudHMgYXJlXG4gKiBwcm92aWRlZCwgYGNhbGxiYWNrYCBpcyByZXF1aXJlZCB3aGlsZSBgYXJnc2AgaXMgc3RpbGwgb3B0aW9uYWwuIFRoZSByZXN1bHRzXG4gKiBmb3IgZWFjaCBvZiB0aGUgYXBwbGllZCBhc3luYyBmdW5jdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgZmluYWwgY2FsbGJhY2tcbiAqIGFzIGFuIGFycmF5LlxuICpcbiAqIEBuYW1lIGFwcGx5RWFjaFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gZm5zIC0gQSBjb2xsZWN0aW9uIG9mIHtAbGluayBBc3luY0Z1bmN0aW9ufXNcbiAqIHRvIGFsbCBjYWxsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSAtIGFueSBudW1iZXIgb2Ygc2VwYXJhdGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlXG4gKiBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSB0aGUgZmluYWwgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBjYWxsYmFjayxcbiAqIGNhbGxlZCB3aGVuIGFsbCBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQgcHJvY2Vzc2luZy5cbiAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSAtIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3Mgb3RoZXIgdGhhblxuICogYW4gb3B0aW9uYWwgY2FsbGJhY2ssIHRoYXQgaXMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgYGFyZ3NgIHRvIGVhY2hcbiAqIG9mIHRoZSBmdW5jdGlvbnMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGNvbnN0IGFwcGxpZWRGbiA9IGFzeW5jLmFwcGx5RWFjaChbZW5hYmxlU2VhcmNoLCB1cGRhdGVTY2hlbWFdLCAnYnVja2V0JylcbiAqXG4gKiBhcHBsaWVkRm4oKGVyciwgcmVzdWx0cykgPT4ge1xuICogICAgIC8vIHJlc3VsdHNbMF0gaXMgdGhlIHJlc3VsdHMgZm9yIGBlbmFibGVTZWFyY2hgXG4gKiAgICAgLy8gcmVzdWx0c1sxXSBpcyB0aGUgcmVzdWx0cyBmb3IgYHVwZGF0ZVNjaGVtYWBcbiAqIH0pO1xuICpcbiAqIC8vIHBhcnRpYWwgYXBwbGljYXRpb24gZXhhbXBsZTpcbiAqIGFzeW5jLmVhY2goXG4gKiAgICAgYnVja2V0cyxcbiAqICAgICBhc3luYyAoYnVja2V0KSA9PiBhc3luYy5hcHBseUVhY2goW2VuYWJsZVNlYXJjaCwgdXBkYXRlU2NoZW1hXSwgYnVja2V0KSgpLFxuICogICAgIGNhbGxiYWNrXG4gKiApO1xuICovXG52YXIgYXBwbHlFYWNoID0gYXBwbHlFYWNoJDEobWFwJDEpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZWFjaE9mYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2hPZn0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGVhY2hPZlNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaE9mXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaE9mfVxuICogQGFsaWFzIGZvckVhY2hPZlNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqL1xuZnVuY3Rpb24gZWFjaE9mU2VyaWVzKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBlYWNoT2ZMaW1pdCQxKGNvbGwsIDEsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBlYWNoT2ZTZXJpZXMkMSA9IGF3YWl0aWZ5KGVhY2hPZlNlcmllcywgMyk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BtYXBgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgbWFwU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5tYXBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIGl0ZW0uXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHRzIGlzIGFuIGFycmF5IG9mIHRoZVxuICogdHJhbnNmb3JtZWQgaXRlbXMgZnJvbSB0aGUgYGNvbGxgLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqL1xuZnVuY3Rpb24gbWFwU2VyaWVzIChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2FzeW5jTWFwKGVhY2hPZlNlcmllcyQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgbWFwU2VyaWVzJDEgPSBhd2FpdGlmeShtYXBTZXJpZXMsIDMpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgYXBwbHlFYWNoYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmFwcGx5RWFjaH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGFwcGx5RWFjaFNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuYXBwbHlFYWNoXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXBwbHlFYWNofVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gZm5zIC0gQSBjb2xsZWN0aW9uIG9mIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgdG8gYWxsXG4gKiBjYWxsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSAtIGFueSBudW1iZXIgb2Ygc2VwYXJhdGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlXG4gKiBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSB0aGUgZmluYWwgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBjYWxsYmFjayxcbiAqIGNhbGxlZCB3aGVuIGFsbCBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQgcHJvY2Vzc2luZy5cbiAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSAtIEEgZnVuY3Rpb24sIHRoYXQgd2hlbiBjYWxsZWQsIGlzIHRoZSByZXN1bHQgb2ZcbiAqIGFwcGxpbmcgdGhlIGBhcmdzYCB0byB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuICBJdCB0YWtlcyBubyBhcmdzLCBvdGhlciB0aGFuXG4gKiBhIGNhbGxiYWNrLlxuICovXG52YXIgYXBwbHlFYWNoU2VyaWVzID0gYXBwbHlFYWNoJDEobWFwU2VyaWVzJDEpO1xuXG5jb25zdCBQUk9NSVNFX1NZTUJPTCA9IFN5bWJvbCgncHJvbWlzZUNhbGxiYWNrJyk7XG5cbmZ1bmN0aW9uIHByb21pc2VDYWxsYmFjayAoKSB7XG4gICAgbGV0IHJlc29sdmUsIHJlamVjdDtcbiAgICBmdW5jdGlvbiBjYWxsYmFjayAoZXJyLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKVxuICAgICAgICByZXNvbHZlKGFyZ3MubGVuZ3RoID4gMSA/IGFyZ3MgOiBhcmdzWzBdKTtcbiAgICB9XG5cbiAgICBjYWxsYmFja1tQUk9NSVNFX1NZTUJPTF0gPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgcmVzb2x2ZSA9IHJlcyxcbiAgICAgICAgcmVqZWN0ID0gcmVqO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgYmVzdCBvcmRlciBmb3IgcnVubmluZyB0aGUge0BsaW5rIEFzeW5jRnVuY3Rpb259cyBpbiBgdGFza3NgLCBiYXNlZCBvblxuICogdGhlaXIgcmVxdWlyZW1lbnRzLiBFYWNoIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGRlcGVuZCBvbiBvdGhlciBmdW5jdGlvbnNcbiAqIGJlaW5nIGNvbXBsZXRlZCBmaXJzdCwgYW5kIGVhY2ggZnVuY3Rpb24gaXMgcnVuIGFzIHNvb24gYXMgaXRzIHJlcXVpcmVtZW50c1xuICogYXJlIHNhdGlzZmllZC5cbiAqXG4gKiBJZiBhbnkgb2YgdGhlIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgcGFzcyBhbiBlcnJvciB0byB0aGVpciBjYWxsYmFjaywgdGhlIGBhdXRvYCBzZXF1ZW5jZVxuICogd2lsbCBzdG9wLiBGdXJ0aGVyIHRhc2tzIHdpbGwgbm90IGV4ZWN1dGUgKHNvIGFueSBvdGhlciBmdW5jdGlvbnMgZGVwZW5kaW5nXG4gKiBvbiBpdCB3aWxsIG5vdCBydW4pLCBhbmQgdGhlIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGVcbiAqIGVycm9yLlxuICpcbiAqIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgYWxzbyByZWNlaXZlIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXN1bHRzIG9mIGZ1bmN0aW9ucyB3aGljaFxuICogaGF2ZSBjb21wbGV0ZWQgc28gZmFyIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgaWYgdGhleSBoYXZlIGRlcGVuZGVuY2llcy4gSWYgYVxuICogdGFzayBmdW5jdGlvbiBoYXMgbm8gZGVwZW5kZW5jaWVzLCBpdCB3aWxsIG9ubHkgYmUgcGFzc2VkIGEgY2FsbGJhY2suXG4gKlxuICogQG5hbWUgYXV0b1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtPYmplY3R9IHRhc2tzIC0gQW4gb2JqZWN0LiBFYWNoIG9mIGl0cyBwcm9wZXJ0aWVzIGlzIGVpdGhlciBhXG4gKiBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiByZXF1aXJlbWVudHMsIHdpdGggdGhlIHtAbGluayBBc3luY0Z1bmN0aW9ufSBpdHNlbGYgdGhlIGxhc3QgaXRlbVxuICogaW4gdGhlIGFycmF5LiBUaGUgb2JqZWN0J3Mga2V5IG9mIGEgcHJvcGVydHkgc2VydmVzIGFzIHRoZSBuYW1lIG9mIHRoZSB0YXNrXG4gKiBkZWZpbmVkIGJ5IHRoYXQgcHJvcGVydHksIGkuZS4gY2FuIGJlIHVzZWQgd2hlbiBzcGVjaWZ5aW5nIHJlcXVpcmVtZW50cyBmb3JcbiAqIG90aGVyIHRhc2tzLiBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgb25lIG9yIHR3byBhcmd1bWVudHM6XG4gKiAqIGEgYHJlc3VsdHNgIG9iamVjdCwgY29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXNseSBleGVjdXRlZFxuICogICBmdW5jdGlvbnMsIG9ubHkgcGFzc2VkIGlmIHRoZSB0YXNrIGhhcyBhbnkgZGVwZW5kZW5jaWVzLFxuICogKiBhIGBjYWxsYmFjayhlcnIsIHJlc3VsdClgIGZ1bmN0aW9uLCB3aGljaCBtdXN0IGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLFxuICogICBwYXNzaW5nIGFuIGBlcnJvcmAgKHdoaWNoIGNhbiBiZSBgbnVsbGApIGFuZCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbidzXG4gKiAgIGV4ZWN1dGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbY29uY3VycmVuY3k9SW5maW5pdHldIC0gQW4gb3B0aW9uYWwgYGludGVnZXJgIGZvclxuICogZGV0ZXJtaW5pbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIHRoYXQgY2FuIGJlIHJ1biBpbiBwYXJhbGxlbC4gQnlcbiAqIGRlZmF1bHQsIGFzIG1hbnkgYXMgcG9zc2libGUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gKiB0aGUgdGFza3MgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gSXQgcmVjZWl2ZXMgdGhlIGBlcnJgIGFyZ3VtZW50IGlmIGFueSBgdGFza3NgXG4gKiBwYXNzIGFuIGVycm9yIHRvIHRoZWlyIGNhbGxiYWNrLiBSZXN1bHRzIGFyZSBhbHdheXMgcmV0dXJuZWQ7IGhvd2V2ZXIsIGlmIGFuXG4gKiBlcnJvciBvY2N1cnMsIG5vIGZ1cnRoZXIgYHRhc2tzYCB3aWxsIGJlIHBlcmZvcm1lZCwgYW5kIHRoZSByZXN1bHRzIG9iamVjdFxuICogd2lsbCBvbmx5IGNvbnRhaW4gcGFydGlhbCByZXN1bHRzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG5vdCBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy9Vc2luZyBDYWxsYmFja3NcbiAqIGFzeW5jLmF1dG8oe1xuICogICAgIGdldF9kYXRhOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gKiAgICAgfSxcbiAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gKiAgICAgICAgIC8vIHRoaXMgaXMgcnVuIGF0IHRoZSBzYW1lIHRpbWUgYXMgZ2V0dGluZyB0aGUgZGF0YVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gKiAgICAgfSxcbiAqICAgICB3cml0ZV9maWxlOiBbJ2dldF9kYXRhJywgJ21ha2VfZm9sZGVyJywgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gb25jZSB0aGVyZSBpcyBzb21lIGRhdGEgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLFxuICogICAgICAgICAvLyB3cml0ZSB0aGUgZGF0YSB0byBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZmlsZW5hbWUnKTtcbiAqICAgICB9XSxcbiAqICAgICBlbWFpbF9saW5rOiBbJ3dyaXRlX2ZpbGUnLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICogICAgICAgICAvLyBvbmNlIHRoZSBmaWxlIGlzIHdyaXR0ZW4gbGV0J3MgZW1haWwgYSBsaW5rIHRvIGl0Li4uXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6cmVzdWx0cy53cml0ZV9maWxlLCAnZW1haWwnOid1c2VyQGV4YW1wbGUuY29tJ30pO1xuICogICAgIH1dXG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKCdlcnIgPSAnLCBlcnIpO1xuICogICAgIH1cbiAqICAgICBjb25zb2xlLmxvZygncmVzdWx0cyA9ICcsIHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgPSB7XG4gKiAgICAgLy8gICAgIGdldF9kYXRhOiBbJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5J11cbiAqICAgICAvLyAgICAgbWFrZV9mb2xkZXI7ICdmb2xkZXInLFxuICogICAgIC8vICAgICB3cml0ZV9maWxlOiAnZmlsZW5hbWUnXG4gKiAgICAgLy8gICAgIGVtYWlsX2xpbms6IHsgZmlsZTogJ2ZpbGVuYW1lJywgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyB9XG4gKiAgICAgLy8gfVxuICogfSk7XG4gKlxuICogLy9Vc2luZyBQcm9taXNlc1xuICogYXN5bmMuYXV0byh7XG4gKiAgICAgZ2V0X2RhdGE6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKCdpbiBnZXRfZGF0YScpO1xuICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gKiAgICAgfSxcbiAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coJ2luIG1ha2VfZm9sZGVyJyk7XG4gKiAgICAgICAgIC8vIGFzeW5jIGNvZGUgdG8gY3JlYXRlIGEgZGlyZWN0b3J5IHRvIHN0b3JlIGEgZmlsZSBpblxuICogICAgICAgICAvLyB0aGlzIGlzIHJ1biBhdCB0aGUgc2FtZSB0aW1lIGFzIGdldHRpbmcgdGhlIGRhdGFcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZvbGRlcicpO1xuICogICAgIH0sXG4gKiAgICAgd3JpdGVfZmlsZTogWydnZXRfZGF0YScsICdtYWtlX2ZvbGRlcicsIGZ1bmN0aW9uKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAqICAgICAgICAgLy8gd3JpdGUgdGhlIGRhdGEgdG8gYSBmaWxlIGluIHRoZSBkaXJlY3RvcnlcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gKiAgICAgfV0sXG4gKiAgICAgZW1haWxfbGluazogWyd3cml0ZV9maWxlJywgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gb25jZSB0aGUgZmlsZSBpcyB3cml0dGVuIGxldCdzIGVtYWlsIGEgbGluayB0byBpdC4uLlxuICogICAgICAgICBjYWxsYmFjayhudWxsLCB7J2ZpbGUnOnJlc3VsdHMud3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XVxuICogfSkudGhlbihyZXN1bHRzID0+IHtcbiAqICAgICBjb25zb2xlLmxvZygncmVzdWx0cyA9ICcsIHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgPSB7XG4gKiAgICAgLy8gICAgIGdldF9kYXRhOiBbJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5J11cbiAqICAgICAvLyAgICAgbWFrZV9mb2xkZXI7ICdmb2xkZXInLFxuICogICAgIC8vICAgICB3cml0ZV9maWxlOiAnZmlsZW5hbWUnXG4gKiAgICAgLy8gICAgIGVtYWlsX2xpbms6IHsgZmlsZTogJ2ZpbGVuYW1lJywgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyB9XG4gKiAgICAgLy8gfVxuICogfSkuY2F0Y2goZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vVXNpbmcgYXN5bmMvYXdhaXRcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLmF1dG8oe1xuICogICAgICAgICAgICAgZ2V0X2RhdGE6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBnZXQgc29tZSBkYXRhXG4gKiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gKiAgICAgICAgICAgICB9LFxuICogICAgICAgICAgICAgbWFrZV9mb2xkZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gKiAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBydW4gYXQgdGhlIHNhbWUgdGltZSBhcyBnZXR0aW5nIHRoZSBkYXRhXG4gKiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZvbGRlcicpO1xuICogICAgICAgICAgICAgfSxcbiAqICAgICAgICAgICAgIHdyaXRlX2ZpbGU6IFsnZ2V0X2RhdGEnLCAnbWFrZV9mb2xkZXInLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICogICAgICAgICAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAqICAgICAgICAgICAgICAgICAvLyB3cml0ZSB0aGUgZGF0YSB0byBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeVxuICogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdmaWxlbmFtZScpO1xuICogICAgICAgICAgICAgfV0sXG4gKiAgICAgICAgICAgICBlbWFpbF9saW5rOiBbJ3dyaXRlX2ZpbGUnLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICogICAgICAgICAgICAgICAgIC8vIG9uY2UgdGhlIGZpbGUgaXMgd3JpdHRlbiBsZXQncyBlbWFpbCBhIGxpbmsgdG8gaXQuLi5cbiAqICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7J2ZpbGUnOnJlc3VsdHMud3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICAgICAgICAgIH1dXG4gKiAgICAgICAgIH0pO1xuICogICAgICAgICBjb25zb2xlLmxvZygncmVzdWx0cyA9ICcsIHJlc3VsdHMpO1xuICogICAgICAgICAvLyByZXN1bHRzID0ge1xuICogICAgICAgICAvLyAgICAgZ2V0X2RhdGE6IFsnZGF0YScsICdjb252ZXJ0ZWQgdG8gYXJyYXknXVxuICogICAgICAgICAvLyAgICAgbWFrZV9mb2xkZXI7ICdmb2xkZXInLFxuICogICAgICAgICAvLyAgICAgd3JpdGVfZmlsZTogJ2ZpbGVuYW1lJ1xuICogICAgICAgICAvLyAgICAgZW1haWxfbGluazogeyBmaWxlOiAnZmlsZW5hbWUnLCBlbWFpbDogJ3VzZXJAZXhhbXBsZS5jb20nIH1cbiAqICAgICAgICAgLy8gfVxuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gYXV0byh0YXNrcywgY29uY3VycmVuY3ksIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjb25jdXJyZW5jeSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gY29uY3VycmVuY3kgaXMgb3B0aW9uYWwsIHNoaWZ0IHRoZSBhcmdzLlxuICAgICAgICBjYWxsYmFjayA9IGNvbmN1cnJlbmN5O1xuICAgICAgICBjb25jdXJyZW5jeSA9IG51bGw7XG4gICAgfVxuICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayB8fCBwcm9taXNlQ2FsbGJhY2soKSk7XG4gICAgdmFyIG51bVRhc2tzID0gT2JqZWN0LmtleXModGFza3MpLmxlbmd0aDtcbiAgICBpZiAoIW51bVRhc2tzKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICB9XG4gICAgaWYgKCFjb25jdXJyZW5jeSkge1xuICAgICAgICBjb25jdXJyZW5jeSA9IG51bVRhc2tzO1xuICAgIH1cblxuICAgIHZhciByZXN1bHRzID0ge307XG4gICAgdmFyIHJ1bm5pbmdUYXNrcyA9IDA7XG4gICAgdmFyIGNhbmNlbGVkID0gZmFsc2U7XG4gICAgdmFyIGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHZhciByZWFkeVRhc2tzID0gW107XG5cbiAgICAvLyBmb3IgY3ljbGUgZGV0ZWN0aW9uOlxuICAgIHZhciByZWFkeVRvQ2hlY2sgPSBbXTsgLy8gdGFza3MgdGhhdCBoYXZlIGJlZW4gaWRlbnRpZmllZCBhcyByZWFjaGFibGVcbiAgICAvLyB3aXRob3V0IHRoZSBwb3NzaWJpbGl0eSBvZiByZXR1cm5pbmcgdG8gYW4gYW5jZXN0b3IgdGFza1xuICAgIHZhciB1bmNoZWNrZWREZXBlbmRlbmNpZXMgPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHRhc2tzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHZhciB0YXNrID0gdGFza3Nba2V5XTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhc2spKSB7XG4gICAgICAgICAgICAvLyBubyBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIGVucXVldWVUYXNrKGtleSwgW3Rhc2tdKTtcbiAgICAgICAgICAgIHJlYWR5VG9DaGVjay5wdXNoKGtleSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGVwZW5kZW5jaWVzID0gdGFzay5zbGljZSgwLCB0YXNrLmxlbmd0aCAtIDEpO1xuICAgICAgICB2YXIgcmVtYWluaW5nRGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzLmxlbmd0aDtcbiAgICAgICAgaWYgKHJlbWFpbmluZ0RlcGVuZGVuY2llcyA9PT0gMCkge1xuICAgICAgICAgICAgZW5xdWV1ZVRhc2soa2V5LCB0YXNrKTtcbiAgICAgICAgICAgIHJlYWR5VG9DaGVjay5wdXNoKGtleSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5jaGVja2VkRGVwZW5kZW5jaWVzW2tleV0gPSByZW1haW5pbmdEZXBlbmRlbmNpZXM7XG5cbiAgICAgICAgZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwZW5kZW5jeU5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKCF0YXNrc1tkZXBlbmRlbmN5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jLmF1dG8gdGFzayBgJyArIGtleSArXG4gICAgICAgICAgICAgICAgICAgICdgIGhhcyBhIG5vbi1leGlzdGVudCBkZXBlbmRlbmN5IGAnICtcbiAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWUgKyAnYCBpbiAnICtcbiAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkTGlzdGVuZXIoZGVwZW5kZW5jeU5hbWUsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdEZXBlbmRlbmNpZXMtLTtcbiAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nRGVwZW5kZW5jaWVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVucXVldWVUYXNrKGtleSwgdGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hlY2tGb3JEZWFkbG9ja3MoKTtcbiAgICBwcm9jZXNzUXVldWUoKTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWVUYXNrKGtleSwgdGFzaykge1xuICAgICAgICByZWFkeVRhc2tzLnB1c2goKCkgPT4gcnVuVGFzayhrZXksIHRhc2spKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUXVldWUoKSB7XG4gICAgICAgIGlmIChjYW5jZWxlZCkgcmV0dXJuXG4gICAgICAgIGlmIChyZWFkeVRhc2tzLmxlbmd0aCA9PT0gMCAmJiBydW5uaW5nVGFza3MgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZShyZWFkeVRhc2tzLmxlbmd0aCAmJiBydW5uaW5nVGFza3MgPCBjb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgdmFyIHJ1biA9IHJlYWR5VGFza3Muc2hpZnQoKTtcbiAgICAgICAgICAgIHJ1bigpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0YXNrTmFtZSwgZm4pIHtcbiAgICAgICAgdmFyIHRhc2tMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbdGFza05hbWVdO1xuICAgICAgICBpZiAoIXRhc2tMaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIHRhc2tMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbdGFza05hbWVdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0YXNrTGlzdGVuZXJzLnB1c2goZm4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhc2tDb21wbGV0ZSh0YXNrTmFtZSkge1xuICAgICAgICB2YXIgdGFza0xpc3RlbmVycyA9IGxpc3RlbmVyc1t0YXNrTmFtZV0gfHwgW107XG4gICAgICAgIHRhc2tMaXN0ZW5lcnMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBydW5UYXNrKGtleSwgdGFzaykge1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybjtcblxuICAgICAgICB2YXIgdGFza0NhbGxiYWNrID0gb25seU9uY2UoKGVyciwgLi4ucmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBydW5uaW5nVGFza3MtLTtcbiAgICAgICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgW3Jlc3VsdF0gPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNhZmVSZXN1bHRzID0ge307XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0cykuZm9yRWFjaChya2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2FmZVJlc3VsdHNbcmtleV0gPSByZXN1bHRzW3JrZXldO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNhZmVSZXN1bHRzW2tleV0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGVkKSByZXR1cm5cbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIHNhZmVSZXN1bHRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIHRhc2tDb21wbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBydW5uaW5nVGFza3MrKztcbiAgICAgICAgdmFyIHRhc2tGbiA9IHdyYXBBc3luYyh0YXNrW3Rhc2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGFzay5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0YXNrRm4ocmVzdWx0cywgdGFza0NhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhc2tGbih0YXNrQ2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tGb3JEZWFkbG9ja3MoKSB7XG4gICAgICAgIC8vIEthaG4ncyBhbGdvcml0aG1cbiAgICAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVG9wb2xvZ2ljYWxfc29ydGluZyNLYWhuLjI3c19hbGdvcml0aG1cbiAgICAgICAgLy8gaHR0cDovL2Nvbm5hbGxlLmJsb2dzcG90LmNvbS8yMDEzLzEwL3RvcG9sb2dpY2FsLXNvcnRpbmdrYWhuLWFsZ29yaXRobS5odG1sXG4gICAgICAgIHZhciBjdXJyZW50VGFzaztcbiAgICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgICB3aGlsZSAocmVhZHlUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgY3VycmVudFRhc2sgPSByZWFkeVRvQ2hlY2sucG9wKCk7XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgICAgICBnZXREZXBlbmRlbnRzKGN1cnJlbnRUYXNrKS5mb3JFYWNoKGRlcGVuZGVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKC0tdW5jaGVja2VkRGVwZW5kZW5jaWVzW2RlcGVuZGVudF0gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZHlUb0NoZWNrLnB1c2goZGVwZW5kZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3VudGVyICE9PSBudW1UYXNrcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdhc3luYy5hdXRvIGNhbm5vdCBleGVjdXRlIHRhc2tzIGR1ZSB0byBhIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERlcGVuZGVudHModGFza05hbWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICBPYmplY3Qua2V5cyh0YXNrcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IHRhc2tzW2tleV07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXNrKSAmJiB0YXNrLmluZGV4T2YodGFza05hbWUpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsbGJhY2tbUFJPTUlTRV9TWU1CT0xdXG59XG5cbnZhciBGTl9BUkdTID0gL14oPzphc3luY1xccyspPyg/OmZ1bmN0aW9uKT9cXHMqXFx3KlxccypcXChcXHMqKFteKV0rKVxccypcXCkoPzpcXHMqeykvO1xudmFyIEFSUk9XX0ZOX0FSR1MgPSAvXig/OmFzeW5jXFxzKyk/XFwoP1xccyooW14pPV0rKVxccypcXCk/KD86XFxzKj0+KS87XG52YXIgRk5fQVJHX1NQTElUID0gLywvO1xudmFyIEZOX0FSRyA9IC8oPS4rKT8oXFxzKikkLztcblxuZnVuY3Rpb24gc3RyaXBDb21tZW50cyhzdHJpbmcpIHtcbiAgICBsZXQgc3RyaXBwZWQgPSAnJztcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGxldCBlbmRCbG9ja0NvbW1lbnQgPSBzdHJpbmcuaW5kZXhPZignKi8nKTtcbiAgICB3aGlsZSAoaW5kZXggPCBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChzdHJpbmdbaW5kZXhdID09PSAnLycgJiYgc3RyaW5nW2luZGV4KzFdID09PSAnLycpIHtcbiAgICAgICAgICAgIC8vIGlubGluZSBjb21tZW50XG4gICAgICAgICAgICBsZXQgZW5kSW5kZXggPSBzdHJpbmcuaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgICAgICAgICAgaW5kZXggPSAoZW5kSW5kZXggPT09IC0xKSA/IHN0cmluZy5sZW5ndGggOiBlbmRJbmRleDtcbiAgICAgICAgfSBlbHNlIGlmICgoZW5kQmxvY2tDb21tZW50ICE9PSAtMSkgJiYgKHN0cmluZ1tpbmRleF0gPT09ICcvJykgJiYgKHN0cmluZ1tpbmRleCsxXSA9PT0gJyonKSkge1xuICAgICAgICAgICAgLy8gYmxvY2sgY29tbWVudFxuICAgICAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RyaW5nLmluZGV4T2YoJyovJywgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGVuZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZW5kSW5kZXggKyAyO1xuICAgICAgICAgICAgICAgIGVuZEJsb2NrQ29tbWVudCA9IHN0cmluZy5pbmRleE9mKCcqLycsIGluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyaXBwZWQgKz0gc3RyaW5nW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyaXBwZWQgKz0gc3RyaW5nW2luZGV4XTtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmlwcGVkO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBhcmFtcyhmdW5jKSB7XG4gICAgY29uc3Qgc3JjID0gc3RyaXBDb21tZW50cyhmdW5jLnRvU3RyaW5nKCkpO1xuICAgIGxldCBtYXRjaCA9IHNyYy5tYXRjaChGTl9BUkdTKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIG1hdGNoID0gc3JjLm1hdGNoKEFSUk9XX0ZOX0FSR1MpO1xuICAgIH1cbiAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBwYXJzZSBhcmdzIGluIGF1dG9JbmplY3RcXG5Tb3VyY2U6XFxuJyArIHNyYylcbiAgICBsZXQgWywgYXJnc10gPSBtYXRjaDtcbiAgICByZXR1cm4gYXJnc1xuICAgICAgICAucmVwbGFjZSgvXFxzL2csICcnKVxuICAgICAgICAuc3BsaXQoRk5fQVJHX1NQTElUKVxuICAgICAgICAubWFwKChhcmcpID0+IGFyZy5yZXBsYWNlKEZOX0FSRywgJycpLnRyaW0oKSk7XG59XG5cbi8qKlxuICogQSBkZXBlbmRlbmN5LWluamVjdGVkIHZlcnNpb24gb2YgdGhlIFthc3luYy5hdXRvXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXV0b30gZnVuY3Rpb24uIERlcGVuZGVudFxuICogdGFza3MgYXJlIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXJzIHRvIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgdGhlIHVzdWFsIGNhbGxiYWNrXG4gKiBwYXJhbWV0ZXIsIHdpdGggdGhlIHBhcmFtZXRlciBuYW1lcyBtYXRjaGluZyB0aGUgbmFtZXMgb2YgdGhlIHRhc2tzIGl0XG4gKiBkZXBlbmRzIG9uLiBUaGlzIGNhbiBwcm92aWRlIGV2ZW4gbW9yZSByZWFkYWJsZSB0YXNrIGdyYXBocyB3aGljaCBjYW4gYmVcbiAqIGVhc2llciB0byBtYWludGFpbi5cbiAqXG4gKiBJZiBhIGZpbmFsIGNhbGxiYWNrIGlzIHNwZWNpZmllZCwgdGhlIHRhc2sgcmVzdWx0cyBhcmUgc2ltaWxhcmx5IGluamVjdGVkLFxuICogc3BlY2lmaWVkIGFzIG5hbWVkIHBhcmFtZXRlcnMgYWZ0ZXIgdGhlIGluaXRpYWwgZXJyb3IgcGFyYW1ldGVyLlxuICpcbiAqIFRoZSBhdXRvSW5qZWN0IGZ1bmN0aW9uIGlzIHB1cmVseSBzeW50YWN0aWMgc3VnYXIgYW5kIGl0cyBzZW1hbnRpY3MgYXJlXG4gKiBvdGhlcndpc2UgZXF1aXZhbGVudCB0byBbYXN5bmMuYXV0b117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmF1dG99LlxuICpcbiAqIEBuYW1lIGF1dG9JbmplY3RcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmF1dG9de0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtPYmplY3R9IHRhc2tzIC0gQW4gb2JqZWN0LCBlYWNoIG9mIHdob3NlIHByb3BlcnRpZXMgaXMgYW4ge0BsaW5rIEFzeW5jRnVuY3Rpb259IG9mXG4gKiB0aGUgZm9ybSAnZnVuYyhbZGVwZW5kZW5jaWVzLi4uXSwgY2FsbGJhY2spLiBUaGUgb2JqZWN0J3Mga2V5IG9mIGEgcHJvcGVydHlcbiAqIHNlcnZlcyBhcyB0aGUgbmFtZSBvZiB0aGUgdGFzayBkZWZpbmVkIGJ5IHRoYXQgcHJvcGVydHksIGkuZS4gY2FuIGJlIHVzZWRcbiAqIHdoZW4gc3BlY2lmeWluZyByZXF1aXJlbWVudHMgZm9yIG90aGVyIHRhc2tzLlxuICogKiBUaGUgYGNhbGxiYWNrYCBwYXJhbWV0ZXIgaXMgYSBgY2FsbGJhY2soZXJyLCByZXN1bHQpYCB3aGljaCBtdXN0IGJlIGNhbGxlZFxuICogICB3aGVuIGZpbmlzaGVkLCBwYXNzaW5nIGFuIGBlcnJvcmAgKHdoaWNoIGNhbiBiZSBgbnVsbGApIGFuZCB0aGUgcmVzdWx0IG9mXG4gKiAgIHRoZSBmdW5jdGlvbidzIGV4ZWN1dGlvbi4gVGhlIHJlbWFpbmluZyBwYXJhbWV0ZXJzIG5hbWUgb3RoZXIgdGFza3Mgb25cbiAqICAgd2hpY2ggdGhlIHRhc2sgaXMgZGVwZW5kZW50LCBhbmQgdGhlIHJlc3VsdHMgZnJvbSB0aG9zZSB0YXNrcyBhcmUgdGhlXG4gKiAgIGFyZ3VtZW50cyBvZiB0aG9zZSBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIG9wdGlvbmFsIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogdGhlIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuIEl0IHJlY2VpdmVzIHRoZSBgZXJyYCBhcmd1bWVudCBpZiBhbnkgYHRhc2tzYFxuICogcGFzcyBhbiBlcnJvciB0byB0aGVpciBjYWxsYmFjaywgYW5kIGEgYHJlc3VsdHNgIG9iamVjdCB3aXRoIGFueSBjb21wbGV0ZWRcbiAqIHRhc2sgcmVzdWx0cywgc2ltaWxhciB0byBgYXV0b2AuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gIFRoZSBleGFtcGxlIGZyb20gYGF1dG9gIGNhbiBiZSByZXdyaXR0ZW4gYXMgZm9sbG93czpcbiAqIGFzeW5jLmF1dG9JbmplY3Qoe1xuICogICAgIGdldF9kYXRhOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gKiAgICAgfSxcbiAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gKiAgICAgICAgIC8vIHRoaXMgaXMgcnVuIGF0IHRoZSBzYW1lIHRpbWUgYXMgZ2V0dGluZyB0aGUgZGF0YVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gKiAgICAgfSxcbiAqICAgICB3cml0ZV9maWxlOiBmdW5jdGlvbihnZXRfZGF0YSwgbWFrZV9mb2xkZXIsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAqICAgICAgICAgLy8gd3JpdGUgdGhlIGRhdGEgdG8gYSBmaWxlIGluIHRoZSBkaXJlY3RvcnlcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gKiAgICAgfSxcbiAqICAgICBlbWFpbF9saW5rOiBmdW5jdGlvbih3cml0ZV9maWxlLCBjYWxsYmFjaykge1xuICogICAgICAgICAvLyBvbmNlIHRoZSBmaWxlIGlzIHdyaXR0ZW4gbGV0J3MgZW1haWwgYSBsaW5rIHRvIGl0Li4uXG4gKiAgICAgICAgIC8vIHdyaXRlX2ZpbGUgY29udGFpbnMgdGhlIGZpbGVuYW1lIHJldHVybmVkIGJ5IHdyaXRlX2ZpbGUuXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6d3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAqICAgICBjb25zb2xlLmxvZygnZW1haWxfbGluayA9ICcsIHJlc3VsdHMuZW1haWxfbGluayk7XG4gKiB9KTtcbiAqXG4gKiAvLyBJZiB5b3UgYXJlIHVzaW5nIGEgSlMgbWluaWZpZXIgdGhhdCBtYW5nbGVzIHBhcmFtZXRlciBuYW1lcywgYGF1dG9JbmplY3RgXG4gKiAvLyB3aWxsIG5vdCB3b3JrIHdpdGggcGxhaW4gZnVuY3Rpb25zLCBzaW5jZSB0aGUgcGFyYW1ldGVyIG5hbWVzIHdpbGwgYmVcbiAqIC8vIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBsZXR0ZXIgaWRlbnRpZmllci4gIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHlvdSBjYW5cbiAqIC8vIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgbmFtZXMgb2YgdGhlIHBhcmFtZXRlcnMgeW91ciB0YXNrIGZ1bmN0aW9uIG5lZWRzXG4gKiAvLyBpbiBhbiBhcnJheSwgc2ltaWxhciB0byBBbmd1bGFyLmpzIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICpcbiAqIC8vIFRoaXMgc3RpbGwgaGFzIGFuIGFkdmFudGFnZSBvdmVyIHBsYWluIGBhdXRvYCwgc2luY2UgdGhlIHJlc3VsdHMgYSB0YXNrXG4gKiAvLyBkZXBlbmRzIG9uIGFyZSBzdGlsbCBzcHJlYWQgaW50byBhcmd1bWVudHMuXG4gKiBhc3luYy5hdXRvSW5qZWN0KHtcbiAqICAgICAvLy4uLlxuICogICAgIHdyaXRlX2ZpbGU6IFsnZ2V0X2RhdGEnLCAnbWFrZV9mb2xkZXInLCBmdW5jdGlvbihnZXRfZGF0YSwgbWFrZV9mb2xkZXIsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdmaWxlbmFtZScpO1xuICogICAgIH1dLFxuICogICAgIGVtYWlsX2xpbms6IFsnd3JpdGVfZmlsZScsIGZ1bmN0aW9uKHdyaXRlX2ZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6d3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XVxuICogICAgIC8vLi4uXG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAqICAgICBjb25zb2xlLmxvZygnZW1haWxfbGluayA9ICcsIHJlc3VsdHMuZW1haWxfbGluayk7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gYXV0b0luamVjdCh0YXNrcywgY2FsbGJhY2spIHtcbiAgICB2YXIgbmV3VGFza3MgPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHRhc2tzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHZhciB0YXNrRm4gPSB0YXNrc1trZXldO1xuICAgICAgICB2YXIgcGFyYW1zO1xuICAgICAgICB2YXIgZm5Jc0FzeW5jID0gaXNBc3luYyh0YXNrRm4pO1xuICAgICAgICB2YXIgaGFzTm9EZXBzID1cbiAgICAgICAgICAgICghZm5Jc0FzeW5jICYmIHRhc2tGbi5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgICAgICAoZm5Jc0FzeW5jICYmIHRhc2tGbi5sZW5ndGggPT09IDApO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhc2tGbikpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IFsuLi50YXNrRm5dO1xuICAgICAgICAgICAgdGFza0ZuID0gcGFyYW1zLnBvcCgpO1xuXG4gICAgICAgICAgICBuZXdUYXNrc1trZXldID0gcGFyYW1zLmNvbmNhdChwYXJhbXMubGVuZ3RoID4gMCA/IG5ld1Rhc2sgOiB0YXNrRm4pO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc05vRGVwcykge1xuICAgICAgICAgICAgLy8gbm8gZGVwZW5kZW5jaWVzLCB1c2UgdGhlIGZ1bmN0aW9uIGFzLWlzXG4gICAgICAgICAgICBuZXdUYXNrc1trZXldID0gdGFza0ZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyc2VQYXJhbXModGFza0ZuKTtcbiAgICAgICAgICAgIGlmICgodGFza0ZuLmxlbmd0aCA9PT0gMCAmJiAhZm5Jc0FzeW5jKSAmJiBwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXV0b0luamVjdCB0YXNrIGZ1bmN0aW9ucyByZXF1aXJlIGV4cGxpY2l0IHBhcmFtZXRlcnMuXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZW1vdmUgY2FsbGJhY2sgcGFyYW1cbiAgICAgICAgICAgIGlmICghZm5Jc0FzeW5jKSBwYXJhbXMucG9wKCk7XG5cbiAgICAgICAgICAgIG5ld1Rhc2tzW2tleV0gPSBwYXJhbXMuY29uY2F0KG5ld1Rhc2spO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbmV3VGFzayhyZXN1bHRzLCB0YXNrQ2IpIHtcbiAgICAgICAgICAgIHZhciBuZXdBcmdzID0gcGFyYW1zLm1hcChuYW1lID0+IHJlc3VsdHNbbmFtZV0pO1xuICAgICAgICAgICAgbmV3QXJncy5wdXNoKHRhc2tDYik7XG4gICAgICAgICAgICB3cmFwQXN5bmModGFza0ZuKSguLi5uZXdBcmdzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF1dG8obmV3VGFza3MsIGNhbGxiYWNrKTtcbn1cblxuLy8gU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG91Ymx5X2xpbmtlZF9saXN0KSBpbXBsZW1lbnRhdGlvblxuLy8gdXNlZCBmb3IgcXVldWVzLiBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgbm9kZSBwcm92aWRlZCBieSB0aGUgdXNlciBjYW4gYmUgbW9kaWZpZWRcbi8vIHRvIGFkanVzdCB0aGUgbmV4dCBhbmQgbGFzdCBwcm9wZXJ0aWVzLiBXZSBpbXBsZW1lbnQgb25seSB0aGUgbWluaW1hbCBmdW5jdGlvbmFsaXR5XG4vLyBmb3IgcXVldWUgc3VwcG9ydC5cbmNsYXNzIERMTCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB9XG5cbiAgICByZW1vdmVMaW5rKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUucHJldikgbm9kZS5wcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgIGVsc2UgdGhpcy5oZWFkID0gbm9kZS5uZXh0O1xuICAgICAgICBpZiAobm9kZS5uZXh0KSBub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtcbiAgICAgICAgZWxzZSB0aGlzLnRhaWwgPSBub2RlLnByZXY7XG5cbiAgICAgICAgbm9kZS5wcmV2ID0gbm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sZW5ndGggLT0gMTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgZW1wdHkgKCkge1xuICAgICAgICB3aGlsZSh0aGlzLmhlYWQpIHRoaXMuc2hpZnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaW5zZXJ0QWZ0ZXIobm9kZSwgbmV3Tm9kZSkge1xuICAgICAgICBuZXdOb2RlLnByZXYgPSBub2RlO1xuICAgICAgICBuZXdOb2RlLm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgIGlmIChub2RlLm5leHQpIG5vZGUubmV4dC5wcmV2ID0gbmV3Tm9kZTtcbiAgICAgICAgZWxzZSB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgICAgICBub2RlLm5leHQgPSBuZXdOb2RlO1xuICAgICAgICB0aGlzLmxlbmd0aCArPSAxO1xuICAgIH1cblxuICAgIGluc2VydEJlZm9yZShub2RlLCBuZXdOb2RlKSB7XG4gICAgICAgIG5ld05vZGUucHJldiA9IG5vZGUucHJldjtcbiAgICAgICAgbmV3Tm9kZS5uZXh0ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUucHJldikgbm9kZS5wcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgICBlbHNlIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgICAgIG5vZGUucHJldiA9IG5ld05vZGU7XG4gICAgICAgIHRoaXMubGVuZ3RoICs9IDE7XG4gICAgfVxuXG4gICAgdW5zaGlmdChub2RlKSB7XG4gICAgICAgIGlmICh0aGlzLmhlYWQpIHRoaXMuaW5zZXJ0QmVmb3JlKHRoaXMuaGVhZCwgbm9kZSk7XG4gICAgICAgIGVsc2Ugc2V0SW5pdGlhbCh0aGlzLCBub2RlKTtcbiAgICB9XG5cbiAgICBwdXNoKG5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMudGFpbCkgdGhpcy5pbnNlcnRBZnRlcih0aGlzLnRhaWwsIG5vZGUpO1xuICAgICAgICBlbHNlIHNldEluaXRpYWwodGhpcywgbm9kZSk7XG4gICAgfVxuXG4gICAgc2hpZnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYWQgJiYgdGhpcy5yZW1vdmVMaW5rKHRoaXMuaGVhZCk7XG4gICAgfVxuXG4gICAgcG9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWlsICYmIHRoaXMucmVtb3ZlTGluayh0aGlzLnRhaWwpO1xuICAgIH1cblxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpc11cbiAgICB9XG5cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0gKCkge1xuICAgICAgICB2YXIgY3VyID0gdGhpcy5oZWFkO1xuICAgICAgICB3aGlsZSAoY3VyKSB7XG4gICAgICAgICAgICB5aWVsZCBjdXIuZGF0YTtcbiAgICAgICAgICAgIGN1ciA9IGN1ci5uZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlICh0ZXN0Rm4pIHtcbiAgICAgICAgdmFyIGN1cnIgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlKGN1cnIpIHtcbiAgICAgICAgICAgIHZhciB7bmV4dH0gPSBjdXJyO1xuICAgICAgICAgICAgaWYgKHRlc3RGbihjdXJyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTGluayhjdXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnIgPSBuZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0SW5pdGlhbChkbGwsIG5vZGUpIHtcbiAgICBkbGwubGVuZ3RoID0gMTtcbiAgICBkbGwuaGVhZCA9IGRsbC50YWlsID0gbm9kZTtcbn1cblxuZnVuY3Rpb24gcXVldWUkMSh3b3JrZXIsIGNvbmN1cnJlbmN5LCBwYXlsb2FkKSB7XG4gICAgaWYgKGNvbmN1cnJlbmN5ID09IG51bGwpIHtcbiAgICAgICAgY29uY3VycmVuY3kgPSAxO1xuICAgIH1cbiAgICBlbHNlIGlmKGNvbmN1cnJlbmN5ID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb25jdXJyZW5jeSBtdXN0IG5vdCBiZSB6ZXJvJyk7XG4gICAgfVxuXG4gICAgdmFyIF93b3JrZXIgPSB3cmFwQXN5bmMod29ya2VyKTtcbiAgICB2YXIgbnVtUnVubmluZyA9IDA7XG4gICAgdmFyIHdvcmtlcnNMaXN0ID0gW107XG4gICAgY29uc3QgZXZlbnRzID0ge1xuICAgICAgICBlcnJvcjogW10sXG4gICAgICAgIGRyYWluOiBbXSxcbiAgICAgICAgc2F0dXJhdGVkOiBbXSxcbiAgICAgICAgdW5zYXR1cmF0ZWQ6IFtdLFxuICAgICAgICBlbXB0eTogW11cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb24gKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgICAgIGV2ZW50c1tldmVudF0ucHVzaChoYW5kbGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNlIChldmVudCwgaGFuZGxlcikge1xuICAgICAgICBjb25zdCBoYW5kbGVBbmRSZW1vdmUgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgb2ZmKGV2ZW50LCBoYW5kbGVBbmRSZW1vdmUpO1xuICAgICAgICAgICAgaGFuZGxlciguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgZXZlbnRzW2V2ZW50XS5wdXNoKGhhbmRsZUFuZFJlbW92ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2ZmIChldmVudCwgaGFuZGxlcikge1xuICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm4gT2JqZWN0LmtleXMoZXZlbnRzKS5mb3JFYWNoKGV2ID0+IGV2ZW50c1tldl0gPSBbXSlcbiAgICAgICAgaWYgKCFoYW5kbGVyKSByZXR1cm4gZXZlbnRzW2V2ZW50XSA9IFtdXG4gICAgICAgIGV2ZW50c1tldmVudF0gPSBldmVudHNbZXZlbnRdLmZpbHRlcihldiA9PiBldiAhPT0gaGFuZGxlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlciAoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgZXZlbnRzW2V2ZW50XS5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlciguLi5hcmdzKSk7XG4gICAgfVxuXG4gICAgdmFyIHByb2Nlc3NpbmdTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBmdW5jdGlvbiBfaW5zZXJ0KGRhdGEsIGluc2VydEF0RnJvbnQsIHJlamVjdE9uRXJyb3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsICYmIHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0YXNrIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHEuc3RhcnRlZCA9IHRydWU7XG5cbiAgICAgICAgdmFyIHJlcywgcmVqO1xuICAgICAgICBmdW5jdGlvbiBwcm9taXNlQ2FsbGJhY2sgKGVyciwgLi4uYXJncykge1xuICAgICAgICAgICAgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZXJyb3IsIGxldCB0aGUgZ2xvYmFsIGVycm9yIGhhbmRsZXJcbiAgICAgICAgICAgIC8vIGRlYWwgd2l0aCBpdFxuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdE9uRXJyb3IgPyByZWooZXJyKSA6IHJlcygpXG4gICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPD0gMSkgcmV0dXJuIHJlcyhhcmdzWzBdKVxuICAgICAgICAgICAgcmVzKGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGl0ZW0gPSBxLl9jcmVhdGVUYXNrSXRlbShcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICByZWplY3RPbkVycm9yID8gcHJvbWlzZUNhbGxiYWNrIDpcbiAgICAgICAgICAgICAgICAoY2FsbGJhY2sgfHwgcHJvbWlzZUNhbGxiYWNrKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpbnNlcnRBdEZyb250KSB7XG4gICAgICAgICAgICBxLl90YXNrcy51bnNoaWZ0KGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcS5fdGFza3MucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcHJvY2Vzc2luZ1NjaGVkdWxlZCkge1xuICAgICAgICAgICAgcHJvY2Vzc2luZ1NjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2luZ1NjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHEucHJvY2VzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVqZWN0T25FcnJvciB8fCAhY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzID0gcmVzb2x2ZTtcbiAgICAgICAgICAgICAgICByZWogPSByZWplY3Q7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gX2NyZWF0ZUNCKHRhc2tzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXJyLCAuLi5hcmdzKSB7XG4gICAgICAgICAgICBudW1SdW5uaW5nIC09IDE7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGFza3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc1tpXTtcblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHdvcmtlcnNMaXN0LmluZGV4T2YodGFzayk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlcnNMaXN0LnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2Vyc0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0YXNrLmNhbGxiYWNrKGVyciwgLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcignZXJyb3InLCBlcnIsIHRhc2suZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtUnVubmluZyA8PSAocS5jb25jdXJyZW5jeSAtIHEuYnVmZmVyKSApIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKCd1bnNhdHVyYXRlZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocS5pZGxlKCkpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKCdkcmFpbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcS5wcm9jZXNzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gX21heWJlRHJhaW4oZGF0YSkge1xuICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgcS5pZGxlKCkpIHtcbiAgICAgICAgICAgIC8vIGNhbGwgZHJhaW4gaW1tZWRpYXRlbHkgaWYgdGhlcmUgYXJlIG5vIHRhc2tzXG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiB0cmlnZ2VyKCdkcmFpbicpKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRNZXRob2QgPSAobmFtZSkgPT4gKGhhbmRsZXIpID0+IHtcbiAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uY2UobmFtZSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgb2ZmKG5hbWUpO1xuICAgICAgICBvbihuYW1lLCBoYW5kbGVyKTtcblxuICAgIH07XG5cbiAgICB2YXIgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgdmFyIHEgPSB7XG4gICAgICAgIF90YXNrczogbmV3IERMTCgpLFxuICAgICAgICBfY3JlYXRlVGFza0l0ZW0gKGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgICpbU3ltYm9sLml0ZXJhdG9yXSAoKSB7XG4gICAgICAgICAgICB5aWVsZCogcS5fdGFza3NbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICB9LFxuICAgICAgICBjb25jdXJyZW5jeSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgYnVmZmVyOiBjb25jdXJyZW5jeSAvIDQsXG4gICAgICAgIHN0YXJ0ZWQ6IGZhbHNlLFxuICAgICAgICBwYXVzZWQ6IGZhbHNlLFxuICAgICAgICBwdXNoIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoX21heWJlRHJhaW4oZGF0YSkpIHJldHVyblxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcChkYXR1bSA9PiBfaW5zZXJ0KGRhdHVtLCBmYWxzZSwgZmFsc2UsIGNhbGxiYWNrKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfaW5zZXJ0KGRhdGEsIGZhbHNlLCBmYWxzZSwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICBwdXNoQXN5bmMgKGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIGlmIChfbWF5YmVEcmFpbihkYXRhKSkgcmV0dXJuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubWFwKGRhdHVtID0+IF9pbnNlcnQoZGF0dW0sIGZhbHNlLCB0cnVlLCBjYWxsYmFjaykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX2luc2VydChkYXRhLCBmYWxzZSwgdHJ1ZSwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICBraWxsICgpIHtcbiAgICAgICAgICAgIG9mZigpO1xuICAgICAgICAgICAgcS5fdGFza3MuZW1wdHkoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdW5zaGlmdCAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKF9tYXliZURyYWluKGRhdGEpKSByZXR1cm5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoZGF0dW0gPT4gX2luc2VydChkYXR1bSwgdHJ1ZSwgZmFsc2UsIGNhbGxiYWNrKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfaW5zZXJ0KGRhdGEsIHRydWUsIGZhbHNlLCBjYWxsYmFjayk7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc2hpZnRBc3luYyAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKF9tYXliZURyYWluKGRhdGEpKSByZXR1cm5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoZGF0dW0gPT4gX2luc2VydChkYXR1bSwgdHJ1ZSwgdHJ1ZSwgY2FsbGJhY2spKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9pbnNlcnQoZGF0YSwgdHJ1ZSwgdHJ1ZSwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmUgKHRlc3RGbikge1xuICAgICAgICAgICAgcS5fdGFza3MucmVtb3ZlKHRlc3RGbik7XG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3MgKCkge1xuICAgICAgICAgICAgLy8gQXZvaWQgdHJ5aW5nIHRvIHN0YXJ0IHRvbyBtYW55IHByb2Nlc3Npbmcgb3BlcmF0aW9ucy4gVGhpcyBjYW4gb2NjdXJcbiAgICAgICAgICAgIC8vIHdoZW4gY2FsbGJhY2tzIHJlc29sdmUgc3luY2hyb25vdXNseSAoIzEyNjcpLlxuICAgICAgICAgICAgaWYgKGlzUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzUHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSghcS5wYXVzZWQgJiYgbnVtUnVubmluZyA8IHEuY29uY3VycmVuY3kgJiYgcS5fdGFza3MubGVuZ3RoKXtcbiAgICAgICAgICAgICAgICB2YXIgdGFza3MgPSBbXSwgZGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBsID0gcS5fdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChxLnBheWxvYWQpIGwgPSBNYXRoLm1pbihsLCBxLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gcS5fdGFza3Muc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFza3MucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgd29ya2Vyc0xpc3QucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKG5vZGUuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbnVtUnVubmluZyArPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKHEuX3Rhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCdlbXB0eScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChudW1SdW5uaW5nID09PSBxLmNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoJ3NhdHVyYXRlZCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjYiA9IG9ubHlPbmNlKF9jcmVhdGVDQih0YXNrcykpO1xuICAgICAgICAgICAgICAgIF93b3JrZXIoZGF0YSwgY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGxlbmd0aCAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcS5fdGFza3MubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBydW5uaW5nICgpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1SdW5uaW5nO1xuICAgICAgICB9LFxuICAgICAgICB3b3JrZXJzTGlzdCAoKSB7XG4gICAgICAgICAgICByZXR1cm4gd29ya2Vyc0xpc3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGlkbGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gcS5fdGFza3MubGVuZ3RoICsgbnVtUnVubmluZyA9PT0gMDtcbiAgICAgICAgfSxcbiAgICAgICAgcGF1c2UgKCkge1xuICAgICAgICAgICAgcS5wYXVzZWQgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICByZXN1bWUgKCkge1xuICAgICAgICAgICAgaWYgKHEucGF1c2VkID09PSBmYWxzZSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIHEucGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUkMShxLnByb2Nlc3MpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBkZWZpbmUgdGhlc2UgYXMgZml4ZWQgcHJvcGVydGllcywgc28gcGVvcGxlIGdldCB1c2VmdWwgZXJyb3JzIHdoZW4gdXBkYXRpbmdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxLCB7XG4gICAgICAgIHNhdHVyYXRlZDoge1xuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50TWV0aG9kKCdzYXR1cmF0ZWQnKVxuICAgICAgICB9LFxuICAgICAgICB1bnNhdHVyYXRlZDoge1xuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50TWV0aG9kKCd1bnNhdHVyYXRlZCcpXG4gICAgICAgIH0sXG4gICAgICAgIGVtcHR5OiB7XG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogZXZlbnRNZXRob2QoJ2VtcHR5JylcbiAgICAgICAgfSxcbiAgICAgICAgZHJhaW46IHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBldmVudE1ldGhvZCgnZHJhaW4nKVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50TWV0aG9kKCdlcnJvcicpXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHE7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBjYXJnb2Agb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBwYXlsb2FkLiBUYXNrcyBhZGRlZCB0byB0aGVcbiAqIGNhcmdvIHdpbGwgYmUgcHJvY2Vzc2VkIGFsdG9nZXRoZXIgKHVwIHRvIHRoZSBgcGF5bG9hZGAgbGltaXQpLiBJZiB0aGVcbiAqIGB3b3JrZXJgIGlzIGluIHByb2dyZXNzLCB0aGUgdGFzayBpcyBxdWV1ZWQgdW50aWwgaXQgYmVjb21lcyBhdmFpbGFibGUuIE9uY2VcbiAqIHRoZSBgd29ya2VyYCBoYXMgY29tcGxldGVkIHNvbWUgdGFza3MsIGVhY2ggY2FsbGJhY2sgb2YgdGhvc2UgdGFza3MgaXNcbiAqIGNhbGxlZC4gQ2hlY2sgb3V0IFt0aGVzZV0oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS82YmJkMzZmNGNmNWIzNWEwZjExYTk2ZGNkMmU5NzcxMWZmYzJmYjM3LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzgyZjYyNjI2MzMwNjM2NjYyMzAyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzkzNzM0NjYyZDMzMzMzOTM3NjMzNjM0NjQ2MzM4MzUzODJlNjc2OTY2KSBbYW5pbWF0aW9uc10oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS9mNDgxMGUwMGUxYzVmNWY4YWRkYmUzZTlmNDkwNjRmZDVkMTAyNjk5LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzEyZjM4MzQ2MzM5MzIzMDM2MzYyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzgzMTM0NjYyZDM5NjQzMzY0MzAzMjM0MzEzMzYyNjY2NDJlNjc2OTY2KVxuICogZm9yIGhvdyBgY2FyZ29gIGFuZCBgcXVldWVgIHdvcmsuXG4gKlxuICogV2hpbGUgW2BxdWV1ZWBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX0gcGFzc2VzIG9ubHkgb25lIHRhc2sgdG8gb25lIG9mIGEgZ3JvdXAgb2Ygd29ya2Vyc1xuICogYXQgYSB0aW1lLCBjYXJnbyBwYXNzZXMgYW4gYXJyYXkgb2YgdGFza3MgdG8gYSBzaW5nbGUgd29ya2VyLCByZXBlYXRpbmdcbiAqIHdoZW4gdGhlIHdvcmtlciBpcyBmaW5pc2hlZC5cbiAqXG4gKiBAbmFtZSBjYXJnb1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMucXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGFuIGFycmF5XG4gKiBvZiBxdWV1ZWQgdGFza3MuIEludm9rZWQgd2l0aCBgKHRhc2tzLCBjYWxsYmFjaylgLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwYXlsb2FkPUluZmluaXR5XSAtIEFuIG9wdGlvbmFsIGBpbnRlZ2VyYCBmb3IgZGV0ZXJtaW5pbmdcbiAqIGhvdyBtYW55IHRhc2tzIHNob3VsZCBiZSBwcm9jZXNzZWQgcGVyIHJvdW5kOyBpZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpc1xuICogdW5saW1pdGVkLlxuICogQHJldHVybnMge21vZHVsZTpDb250cm9sRmxvdy5RdWV1ZU9iamVjdH0gQSBjYXJnbyBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gQ2FsbGJhY2tzIGNhblxuICogYXR0YWNoZWQgYXMgY2VydGFpbiBwcm9wZXJ0aWVzIHRvIGxpc3RlbiBmb3Igc3BlY2lmaWMgZXZlbnRzIGR1cmluZyB0aGVcbiAqIGxpZmVjeWNsZSBvZiB0aGUgY2FyZ28gYW5kIGlubmVyIHF1ZXVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBjcmVhdGUgYSBjYXJnbyBvYmplY3Qgd2l0aCBwYXlsb2FkIDJcbiAqIHZhciBjYXJnbyA9IGFzeW5jLmNhcmdvKGZ1bmN0aW9uKHRhc2tzLCBjYWxsYmFjaykge1xuICogICAgIGZvciAodmFyIGk9MDsgaTx0YXNrcy5sZW5ndGg7IGkrKykge1xuICogICAgICAgICBjb25zb2xlLmxvZygnaGVsbG8gJyArIHRhc2tzW2ldLm5hbWUpO1xuICogICAgIH1cbiAqICAgICBjYWxsYmFjaygpO1xuICogfSwgMik7XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXNcbiAqIGNhcmdvLnB1c2goe25hbWU6ICdmb28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgZm9vJyk7XG4gKiB9KTtcbiAqIGNhcmdvLnB1c2goe25hbWU6ICdiYXInfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gKiB9KTtcbiAqIGF3YWl0IGNhcmdvLnB1c2goe25hbWU6ICdiYXonfSk7XG4gKiBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXonKTtcbiAqL1xuZnVuY3Rpb24gY2FyZ28kMSh3b3JrZXIsIHBheWxvYWQpIHtcbiAgICByZXR1cm4gcXVldWUkMSh3b3JrZXIsIDEsIHBheWxvYWQpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBgY2FyZ29RdWV1ZWAgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBwYXlsb2FkLiBUYXNrcyBhZGRlZCB0byB0aGVcbiAqIGNhcmdvUXVldWUgd2lsbCBiZSBwcm9jZXNzZWQgdG9nZXRoZXIgKHVwIHRvIHRoZSBgcGF5bG9hZGAgbGltaXQpIGluIGBjb25jdXJyZW5jeWAgcGFyYWxsZWwgd29ya2Vycy5cbiAqIElmIHRoZSBhbGwgYHdvcmtlcnNgIGFyZSBpbiBwcm9ncmVzcywgdGhlIHRhc2sgaXMgcXVldWVkIHVudGlsIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS4gT25jZVxuICogYSBgd29ya2VyYCBoYXMgY29tcGxldGVkIHNvbWUgdGFza3MsIGVhY2ggY2FsbGJhY2sgb2YgdGhvc2UgdGFza3MgaXNcbiAqIGNhbGxlZC4gQ2hlY2sgb3V0IFt0aGVzZV0oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS82YmJkMzZmNGNmNWIzNWEwZjExYTk2ZGNkMmU5NzcxMWZmYzJmYjM3LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzgyZjYyNjI2MzMwNjM2NjYyMzAyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzkzNzM0NjYyZDMzMzMzOTM3NjMzNjM0NjQ2MzM4MzUzODJlNjc2OTY2KSBbYW5pbWF0aW9uc10oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS9mNDgxMGUwMGUxYzVmNWY4YWRkYmUzZTlmNDkwNjRmZDVkMTAyNjk5LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzEyZjM4MzQ2MzM5MzIzMDM2MzYyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzgzMTM0NjYyZDM5NjQzMzY0MzAzMjM0MzEzMzYyNjY2NDJlNjc2OTY2KVxuICogZm9yIGhvdyBgY2FyZ29gIGFuZCBgcXVldWVgIHdvcmsuXG4gKlxuICogV2hpbGUgW2BxdWV1ZWBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX0gcGFzc2VzIG9ubHkgb25lIHRhc2sgdG8gb25lIG9mIGEgZ3JvdXAgb2Ygd29ya2Vyc1xuICogYXQgYSB0aW1lLCBhbmQgW2BjYXJnb2Bde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5jYXJnb30gcGFzc2VzIGFuIGFycmF5IG9mIHRhc2tzIHRvIGEgc2luZ2xlIHdvcmtlcixcbiAqIHRoZSBjYXJnb1F1ZXVlIHBhc3NlcyBhbiBhcnJheSBvZiB0YXNrcyB0byBtdWx0aXBsZSBwYXJhbGxlbCB3b3JrZXJzLlxuICpcbiAqIEBuYW1lIGNhcmdvUXVldWVcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9XG4gKiBAc2VlIFthc3luYy5jYXJnb117QGxpbmsgbW9kdWxlOkNvbnRyb2xGTG93LmNhcmdvfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB3b3JrZXIgLSBBbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gZm9yIHByb2Nlc3NpbmcgYW4gYXJyYXlcbiAqIG9mIHF1ZXVlZCB0YXNrcy4gSW52b2tlZCB3aXRoIGAodGFza3MsIGNhbGxiYWNrKWAuXG4gKiBAcGFyYW0ge251bWJlcn0gW2NvbmN1cnJlbmN5PTFdIC0gQW4gYGludGVnZXJgIGZvciBkZXRlcm1pbmluZyBob3cgbWFueVxuICogYHdvcmtlcmAgZnVuY3Rpb25zIHNob3VsZCBiZSBydW4gaW4gcGFyYWxsZWwuICBJZiBvbWl0dGVkLCB0aGUgY29uY3VycmVuY3lcbiAqIGRlZmF1bHRzIHRvIGAxYC4gIElmIHRoZSBjb25jdXJyZW5jeSBpcyBgMGAsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcGF5bG9hZD1JbmZpbml0eV0gLSBBbiBvcHRpb25hbCBgaW50ZWdlcmAgZm9yIGRldGVybWluaW5nXG4gKiBob3cgbWFueSB0YXNrcyBzaG91bGQgYmUgcHJvY2Vzc2VkIHBlciByb3VuZDsgaWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXNcbiAqIHVubGltaXRlZC5cbiAqIEByZXR1cm5zIHttb2R1bGU6Q29udHJvbEZsb3cuUXVldWVPYmplY3R9IEEgY2FyZ29RdWV1ZSBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gQ2FsbGJhY2tzIGNhblxuICogYXR0YWNoZWQgYXMgY2VydGFpbiBwcm9wZXJ0aWVzIHRvIGxpc3RlbiBmb3Igc3BlY2lmaWMgZXZlbnRzIGR1cmluZyB0aGVcbiAqIGxpZmVjeWNsZSBvZiB0aGUgY2FyZ29RdWV1ZSBhbmQgaW5uZXIgcXVldWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGNyZWF0ZSBhIGNhcmdvUXVldWUgb2JqZWN0IHdpdGggcGF5bG9hZCAyIGFuZCBjb25jdXJyZW5jeSAyXG4gKiB2YXIgY2FyZ29RdWV1ZSA9IGFzeW5jLmNhcmdvUXVldWUoZnVuY3Rpb24odGFza3MsIGNhbGxiYWNrKSB7XG4gKiAgICAgZm9yICh2YXIgaT0wOyBpPHRhc2tzLmxlbmd0aDsgaSsrKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKCdoZWxsbyAnICsgdGFza3NbaV0ubmFtZSk7XG4gKiAgICAgfVxuICogICAgIGNhbGxiYWNrKCk7XG4gKiB9LCAyLCAyKTtcbiAqXG4gKiAvLyBhZGQgc29tZSBpdGVtc1xuICogY2FyZ29RdWV1ZS5wdXNoKHtuYW1lOiAnZm9vJ30sIGZ1bmN0aW9uKGVycikge1xuICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGZvbycpO1xuICogfSk7XG4gKiBjYXJnb1F1ZXVlLnB1c2goe25hbWU6ICdiYXInfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gKiB9KTtcbiAqIGNhcmdvUXVldWUucHVzaCh7bmFtZTogJ2Jheid9LCBmdW5jdGlvbihlcnIpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXonKTtcbiAqIH0pO1xuICogY2FyZ29RdWV1ZS5wdXNoKHtuYW1lOiAnYm9vJ30sIGZ1bmN0aW9uKGVycikge1xuICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGJvbycpO1xuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGNhcmdvKHdvcmtlciwgY29uY3VycmVuY3ksIHBheWxvYWQpIHtcbiAgICByZXR1cm4gcXVldWUkMSh3b3JrZXIsIGNvbmN1cnJlbmN5LCBwYXlsb2FkKTtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGBjb2xsYCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIGFuIGFzeW5jIGBpdGVyYXRlZWAgdG8gcmV0dXJuIGVhY2hcbiAqIHN1Y2Nlc3NpdmUgc3RlcC4gYG1lbW9gIGlzIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSByZWR1Y3Rpb24uIFRoaXMgZnVuY3Rpb25cbiAqIG9ubHkgb3BlcmF0ZXMgaW4gc2VyaWVzLlxuICpcbiAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBpdCBtYXkgbWFrZSBzZW5zZSB0byBzcGxpdCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvblxuICogaW50byBhIHBhcmFsbGVsIG1hcCwgYW5kIHRoZW4gdXNlIHRoZSBub3JtYWwgYEFycmF5LnByb3RvdHlwZS5yZWR1Y2VgIG9uIHRoZVxuICogcmVzdWx0cy4gVGhpcyBmdW5jdGlvbiBpcyBmb3Igc2l0dWF0aW9ucyB3aGVyZSBlYWNoIHN0ZXAgaW4gdGhlIHJlZHVjdGlvblxuICogbmVlZHMgdG8gYmUgYXN5bmM7IGlmIHlvdSBjYW4gZ2V0IHRoZSBkYXRhIGJlZm9yZSByZWR1Y2luZyBpdCwgdGhlbiBpdCdzXG4gKiBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byBkbyBzby5cbiAqXG4gKiBAbmFtZSByZWR1Y2VcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBhbGlhcyBpbmplY3RcbiAqIEBhbGlhcyBmb2xkbFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsqfSBtZW1vIC0gVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICogYXJyYXkgdG8gcHJvZHVjZSB0aGUgbmV4dCBzdGVwIGluIHRoZSByZWR1Y3Rpb24uXG4gKiBUaGUgYGl0ZXJhdGVlYCBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgbmV4dCBzdGF0ZSBvZiB0aGUgcmVkdWN0aW9uLlxuICogSWYgdGhlIGl0ZXJhdGVlIGNvbXBsZXRlcyB3aXRoIGFuIGVycm9yLCB0aGUgcmVkdWN0aW9uIGlzIHN0b3BwZWQgYW5kIHRoZVxuICogbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSBlcnJvci5cbiAqIEludm9rZWQgd2l0aCAobWVtbywgaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgcmVkdWNlZCB2YWx1ZS4gSW52b2tlZCB3aXRoXG4gKiAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUyLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGU0LnR4dCBkb2VzIG5vdCBleGlzdFxuICpcbiAqIGNvbnN0IGZpbGVMaXN0ID0gWydmaWxlMS50eHQnLCdmaWxlMi50eHQnLCdmaWxlMy50eHQnXTtcbiAqIGNvbnN0IHdpdGhNaXNzaW5nRmlsZUxpc3QgPSBbJ2ZpbGUxLnR4dCcsJ2ZpbGUyLnR4dCcsJ2ZpbGUzLnR4dCcsICdmaWxlNC50eHQnXTtcbiAqXG4gKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgZmlsZSBzaXplIGluIGJ5dGVzXG4gKiAvLyBmaWxlIHNpemUgaXMgYWRkZWQgdG8gdGhlIG1lbW9pemVkIHZhbHVlLCB0aGVuIHJldHVybmVkXG4gKiBmdW5jdGlvbiBnZXRGaWxlU2l6ZUluQnl0ZXMobWVtbywgZmlsZSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5zdGF0KGZpbGUsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuICogICAgICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAqICAgICAgICAgfVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCBtZW1vICsgc3RhdC5zaXplKTtcbiAqICAgICB9KTtcbiAqIH1cbiAqXG4gKiAvLyBVc2luZyBjYWxsYmFja3NcbiAqIGFzeW5jLnJlZHVjZShmaWxlTGlzdCwgMCwgZ2V0RmlsZVNpemVJbkJ5dGVzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgICAvLyA2MDAwXG4gKiAgICAgICAgIC8vIHdoaWNoIGlzIHRoZSBzdW0gb2YgdGhlIGZpbGUgc2l6ZXMgb2YgdGhlIHRocmVlIGZpbGVzXG4gKiAgICAgfVxuICogfSk7XG4gKlxuICogLy8gRXJyb3IgSGFuZGxpbmdcbiAqIGFzeW5jLnJlZHVjZSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCAwLCBnZXRGaWxlU2l6ZUluQnl0ZXMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgaWYgKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgfVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLnJlZHVjZShmaWxlTGlzdCwgMCwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICogLnRoZW4oIHJlc3VsdCA9PiB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAvLyA2MDAwXG4gKiAgICAgLy8gd2hpY2ggaXMgdGhlIHN1bSBvZiB0aGUgZmlsZSBzaXplcyBvZiB0aGUgdGhyZWUgZmlsZXNcbiAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiB9KTtcbiAqXG4gKiAvLyBFcnJvciBIYW5kbGluZ1xuICogYXN5bmMucmVkdWNlKHdpdGhNaXNzaW5nRmlsZUxpc3QsIDAsIGdldEZpbGVTaXplSW5CeXRlcylcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiB9KS5jYXRjaCggZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5yZWR1Y2UoZmlsZUxpc3QsIDAsIGdldEZpbGVTaXplSW5CeXRlcyk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgICAgIC8vIDYwMDBcbiAqICAgICAgICAgLy8gd2hpY2ggaXMgdGhlIHN1bSBvZiB0aGUgZmlsZSBzaXplcyBvZiB0aGUgdGhyZWUgZmlsZXNcbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH1cbiAqIH1cbiAqXG4gKiAvLyBFcnJvciBIYW5kbGluZ1xuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5yZWR1Y2Uod2l0aE1pc3NpbmdGaWxlTGlzdCwgMCwgZ2V0RmlsZVNpemVJbkJ5dGVzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIH1cbiAqIH1cbiAqXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShjb2xsLCBtZW1vLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuICAgIHJldHVybiBlYWNoT2ZTZXJpZXMkMShjb2xsLCAoeCwgaSwgaXRlckNiKSA9PiB7XG4gICAgICAgIF9pdGVyYXRlZShtZW1vLCB4LCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICBtZW1vID0gdjtcbiAgICAgICAgICAgIGl0ZXJDYihlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBlcnIgPT4gY2FsbGJhY2soZXJyLCBtZW1vKSk7XG59XG52YXIgcmVkdWNlJDEgPSBhd2FpdGlmeShyZWR1Y2UsIDQpO1xuXG4vKipcbiAqIFZlcnNpb24gb2YgdGhlIGNvbXBvc2UgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIG5hdHVyYWwgdG8gcmVhZC4gRWFjaCBmdW5jdGlvblxuICogY29uc3VtZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMgZnVuY3Rpb24uIEl0IGlzIHRoZSBlcXVpdmFsZW50IG9mXG4gKiBbY29tcG9zZV17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmNvbXBvc2V9IHdpdGggdGhlIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAqXG4gKiBFYWNoIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBjb21wb3NlZCBmdW5jdGlvbi5cbiAqXG4gKiBAbmFtZSBzZXFcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmNvbXBvc2Vde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5jb21wb3NlfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHsuLi5Bc3luY0Z1bmN0aW9ufSBmdW5jdGlvbnMgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGEgZnVuY3Rpb24gdGhhdCBjb21wb3NlcyB0aGUgYGZ1bmN0aW9uc2AgaW4gb3JkZXJcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gUmVxdWlyZXMgbG9kYXNoIChvciB1bmRlcnNjb3JlKSwgZXhwcmVzczMgYW5kIGRyZXNlbmRlJ3Mgb3JtMi5cbiAqIC8vIFBhcnQgb2YgYW4gYXBwLCB0aGF0IGZldGNoZXMgY2F0cyBvZiB0aGUgbG9nZ2VkIHVzZXIuXG4gKiAvLyBUaGlzIGV4YW1wbGUgdXNlcyBgc2VxYCBmdW5jdGlvbiB0byBhdm9pZCBvdmVybmVzdGluZyBhbmQgZXJyb3JcbiAqIC8vIGhhbmRsaW5nIGNsdXR0ZXIuXG4gKiBhcHAuZ2V0KCcvY2F0cycsIGZ1bmN0aW9uKHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gKiAgICAgdmFyIFVzZXIgPSByZXF1ZXN0Lm1vZGVscy5Vc2VyO1xuICogICAgIGFzeW5jLnNlcShcbiAqICAgICAgICAgVXNlci5nZXQuYmluZChVc2VyKSwgIC8vICdVc2VyLmdldCcgaGFzIHNpZ25hdHVyZSAoaWQsIGNhbGxiYWNrKGVyciwgZGF0YSkpXG4gKiAgICAgICAgIGZ1bmN0aW9uKHVzZXIsIGZuKSB7XG4gKiAgICAgICAgICAgICB1c2VyLmdldENhdHMoZm4pOyAgICAgIC8vICdnZXRDYXRzJyBoYXMgc2lnbmF0dXJlIChjYWxsYmFjayhlcnIsIGRhdGEpKVxuICogICAgICAgICB9XG4gKiAgICAgKShyZXEuc2Vzc2lvbi51c2VyX2lkLCBmdW5jdGlvbiAoZXJyLCBjYXRzKSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAqICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIG1lc3NhZ2U6IGVyci5tZXNzYWdlIH0pO1xuICogICAgICAgICB9IGVsc2Uge1xuICogICAgICAgICAgICAgcmVzcG9uc2UuanNvbih7IHN0YXR1czogJ29rJywgbWVzc2FnZTogJ0NhdHMgZm91bmQnLCBkYXRhOiBjYXRzIH0pO1xuICogICAgICAgICB9XG4gKiAgICAgfSk7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gc2VxKC4uLmZ1bmN0aW9ucykge1xuICAgIHZhciBfZnVuY3Rpb25zID0gZnVuY3Rpb25zLm1hcCh3cmFwQXN5bmMpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGNiID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGFyZ3MucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYiA9IHByb21pc2VDYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVkdWNlJDEoX2Z1bmN0aW9ucywgYXJncywgKG5ld2FyZ3MsIGZuLCBpdGVyQ2IpID0+IHtcbiAgICAgICAgICAgIGZuLmFwcGx5KHRoYXQsIG5ld2FyZ3MuY29uY2F0KChlcnIsIC4uLm5leHRhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlckNiKGVyciwgbmV4dGFyZ3MpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyLCByZXN1bHRzKSA9PiBjYihlcnIsIC4uLnJlc3VsdHMpKTtcblxuICAgICAgICByZXR1cm4gY2JbUFJPTUlTRV9TWU1CT0xdXG4gICAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gd2hpY2ggaXMgYSBjb21wb3NpdGlvbiBvZiB0aGUgcGFzc2VkIGFzeW5jaHJvbm91c1xuICogZnVuY3Rpb25zLiBFYWNoIGZ1bmN0aW9uIGNvbnN1bWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXRcbiAqIGZvbGxvd3MuIENvbXBvc2luZyBmdW5jdGlvbnMgYGYoKWAsIGBnKClgLCBhbmQgYGgoKWAgd291bGQgcHJvZHVjZSB0aGUgcmVzdWx0XG4gKiBvZiBgZihnKGgoKSkpYCwgb25seSB0aGlzIHZlcnNpb24gdXNlcyBjYWxsYmFja3MgdG8gb2J0YWluIHRoZSByZXR1cm4gdmFsdWVzLlxuICpcbiAqIElmIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHRoZSBjb21wb3NlZCBmdW5jdGlvbiBpcyBub3QgYSBmdW5jdGlvbiwgYSBwcm9taXNlXG4gKiBpcyByZXR1cm5lZCB3aGVuIHlvdSBjYWxsIGl0LlxuICpcbiAqIEVhY2ggZnVuY3Rpb24gaXMgZXhlY3V0ZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNvbXBvc2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBuYW1lIGNvbXBvc2VcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7Li4uQXN5bmNGdW5jdGlvbn0gZnVuY3Rpb25zIC0gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMgdG8gY29tcG9zZVxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBpcyB0aGUgY29tcG9zZWRcbiAqIGFzeW5jaHJvbm91cyBgZnVuY3Rpb25zYFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBhZGQxKG4sIGNhbGxiYWNrKSB7XG4gKiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIG4gKyAxKTtcbiAqICAgICB9LCAxMCk7XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gbXVsMyhuLCBjYWxsYmFjaykge1xuICogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICogICAgICAgICBjYWxsYmFjayhudWxsLCBuICogMyk7XG4gKiAgICAgfSwgMTApO1xuICogfVxuICpcbiAqIHZhciBhZGQxbXVsMyA9IGFzeW5jLmNvbXBvc2UobXVsMywgYWRkMSk7XG4gKiBhZGQxbXVsMyg0LCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgbm93IGVxdWFscyAxNVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGNvbXBvc2UoLi4uYXJncykge1xuICAgIHJldHVybiBzZXEoLi4uYXJncy5yZXZlcnNlKCkpO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgbWFwYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgbWFwTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLm1hcF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgaXRlbS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXkgb2YgdGhlXG4gKiB0cmFuc2Zvcm1lZCBpdGVtcyBmcm9tIHRoZSBgY29sbGAuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICovXG5mdW5jdGlvbiBtYXBMaW1pdCAoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfYXN5bmNNYXAoZWFjaE9mTGltaXQkMihsaW1pdCksIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBtYXBMaW1pdCQxID0gYXdhaXRpZnkobWFwTGltaXQsIDQpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgY29uY2F0YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmNvbmNhdH0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgY29uY2F0TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmNvbmNhdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmNvbmNhdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAYWxpYXMgZmxhdE1hcExpbWl0XG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAsXG4gKiB3aGljaCBzaG91bGQgdXNlIGFuIGFycmF5IGFzIGl0cyByZXN1bHQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0cyBpcyBhbiBhcnJheVxuICogY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdHMgb2YgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb24uIEludm9rZWQgd2l0aFxuICogKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyBBIFByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICovXG5mdW5jdGlvbiBjb25jYXRMaW1pdChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgcmV0dXJuIG1hcExpbWl0JDEoY29sbCwgbGltaXQsICh2YWwsIGl0ZXJDYikgPT4ge1xuICAgICAgICBfaXRlcmF0ZWUodmFsLCAoZXJyLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICByZXR1cm4gaXRlckNiKGVyciwgYXJncyk7XG4gICAgICAgIH0pO1xuICAgIH0sIChlcnIsIG1hcFJlc3VsdHMpID0+IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcFJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXBSZXN1bHRzW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCguLi5tYXBSZXN1bHRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgfSk7XG59XG52YXIgY29uY2F0TGltaXQkMSA9IGF3YWl0aWZ5KGNvbmNhdExpbWl0LCA0KTtcblxuLyoqXG4gKiBBcHBsaWVzIGBpdGVyYXRlZWAgdG8gZWFjaCBpdGVtIGluIGBjb2xsYCwgY29uY2F0ZW5hdGluZyB0aGUgcmVzdWx0cy4gUmV0dXJuc1xuICogdGhlIGNvbmNhdGVuYXRlZCBsaXN0LiBUaGUgYGl0ZXJhdGVlYHMgYXJlIGNhbGxlZCBpbiBwYXJhbGxlbCwgYW5kIHRoZVxuICogcmVzdWx0cyBhcmUgY29uY2F0ZW5hdGVkIGFzIHRoZXkgcmV0dXJuLiBUaGUgcmVzdWx0cyBhcnJheSB3aWxsIGJlIHJldHVybmVkIGluXG4gKiB0aGUgb3JpZ2luYWwgb3JkZXIgb2YgYGNvbGxgIHBhc3NlZCB0byB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbi5cbiAqXG4gKiBAbmFtZSBjb25jYXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAYWxpYXMgZmxhdE1hcFxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLFxuICogd2hpY2ggc2hvdWxkIHVzZSBhbiBhcnJheSBhcyBpdHMgcmVzdWx0LiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXlcbiAqIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRzIG9mIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdHMpLlxuICogQHJldHVybnMgQSBQcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gZGlyMSBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUxLnR4dCwgZmlsZTIudHh0XG4gKiAvLyBkaXIyIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTMudHh0LCBmaWxlNC50eHRcbiAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAqIC8vIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAqXG4gKiBsZXQgZGlyZWN0b3J5TGlzdCA9IFsnZGlyMScsJ2RpcjInLCdkaXIzJ107XG4gKiBsZXQgd2l0aE1pc3NpbmdEaXJlY3RvcnlMaXN0ID0gWydkaXIxJywnZGlyMicsJ2RpcjMnLCAnZGlyNCddO1xuICpcbiAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICogYXN5bmMuY29uY2F0KGRpcmVjdG9yeUxpc3QsIGZzLnJlYWRkaXIsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgaWYgKGVycikge1xuICogICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICB9IGVsc2Uge1xuICogICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgIC8vIFsgJ2ZpbGUxLnR4dCcsICdmaWxlMi50eHQnLCAnZmlsZTMudHh0JywgJ2ZpbGU0LnR4dCcsIGZpbGU1LnR4dCBdXG4gKiAgICB9XG4gKiB9KTtcbiAqXG4gKiAvLyBFcnJvciBIYW5kbGluZ1xuICogYXN5bmMuY29uY2F0KHdpdGhNaXNzaW5nRGlyZWN0b3J5TGlzdCwgZnMucmVhZGRpciwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgICAgIC8vIHNpbmNlIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAqICAgIH0gZWxzZSB7XG4gKiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICB9XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBQcm9taXNlc1xuICogYXN5bmMuY29uY2F0KGRpcmVjdG9yeUxpc3QsIGZzLnJlYWRkaXIpXG4gKiAudGhlbihyZXN1bHRzID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAvLyBbICdmaWxlMS50eHQnLCAnZmlsZTIudHh0JywgJ2ZpbGUzLnR4dCcsICdmaWxlNC50eHQnLCBmaWxlNS50eHQgXVxuICogfSkuY2F0Y2goZXJyID0+IHtcbiAqICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYy5jb25jYXQod2l0aE1pc3NpbmdEaXJlY3RvcnlMaXN0LCBmcy5yZWFkZGlyKVxuICogLnRoZW4ocmVzdWx0cyA9PiB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiB9KS5jYXRjaChlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqICAgICAvLyBzaW5jZSBkaXI0IGRvZXMgbm90IGV4aXN0XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMuY29uY2F0KGRpcmVjdG9yeUxpc3QsIGZzLnJlYWRkaXIpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgLy8gWyAnZmlsZTEudHh0JywgJ2ZpbGUyLnR4dCcsICdmaWxlMy50eHQnLCAnZmlsZTQudHh0JywgZmlsZTUudHh0IF1cbiAqICAgICB9IGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy8gRXJyb3IgSGFuZGxpbmdcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLmNvbmNhdCh3aXRoTWlzc2luZ0RpcmVjdG9yeUxpc3QsIGZzLnJlYWRkaXIpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICB9IGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqICAgICAgICAgLy8gc2luY2UgZGlyNCBkb2VzIG5vdCBleGlzdFxuICogICAgIH1cbiAqIH1cbiAqXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY29uY2F0TGltaXQkMShjb2xsLCBJbmZpbml0eSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIGNvbmNhdCQxID0gYXdhaXRpZnkoY29uY2F0LCAzKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGNvbmNhdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5jb25jYXR9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBjb25jYXRTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmNvbmNhdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmNvbmNhdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAYWxpYXMgZmxhdE1hcFNlcmllc1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGFuIGFycmF5IGFuIGFycmF5IG9mIHJlc3VsdHMuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXlcbiAqIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRzIG9mIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdHMpLlxuICogQHJldHVybnMgQSBQcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqL1xuZnVuY3Rpb24gY29uY2F0U2VyaWVzKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBjb25jYXRMaW1pdCQxKGNvbGwsIDEsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBjb25jYXRTZXJpZXMkMSA9IGF3YWl0aWZ5KGNvbmNhdFNlcmllcywgMyk7XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2hlbiBjYWxsZWQsIGNhbGxzLWJhY2sgd2l0aCB0aGUgdmFsdWVzIHByb3ZpZGVkLlxuICogVXNlZnVsIGFzIHRoZSBmaXJzdCBmdW5jdGlvbiBpbiBhIFtgd2F0ZXJmYWxsYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LndhdGVyZmFsbH0sIG9yIGZvciBwbHVnZ2luZyB2YWx1ZXMgaW4gdG9cbiAqIFtgYXV0b2Bde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfS5cbiAqXG4gKiBAbmFtZSBjb25zdGFudFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Li4uKn0gYXJndW1lbnRzLi4uIC0gQW55IG51bWJlciBvZiBhcmd1bWVudHMgdG8gYXV0b21hdGljYWxseSBpbnZva2VcbiAqIGNhbGxiYWNrIHdpdGguXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2hlbiBpbnZva2VkLCBhdXRvbWF0aWNhbGx5XG4gKiBpbnZva2VzIHRoZSBjYWxsYmFjayB3aXRoIHRoZSBwcmV2aW91cyBnaXZlbiBhcmd1bWVudHMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgYXN5bmMuY29uc3RhbnQoNDIpLFxuICogICAgIGZ1bmN0aW9uICh2YWx1ZSwgbmV4dCkge1xuICogICAgICAgICAvLyB2YWx1ZSA9PT0gNDJcbiAqICAgICB9LFxuICogICAgIC8vLi4uXG4gKiBdLCBjYWxsYmFjayk7XG4gKlxuICogYXN5bmMud2F0ZXJmYWxsKFtcbiAqICAgICBhc3luYy5jb25zdGFudChmaWxlbmFtZSwgXCJ1dGY4XCIpLFxuICogICAgIGZzLnJlYWRGaWxlLFxuICogICAgIGZ1bmN0aW9uIChmaWxlRGF0YSwgbmV4dCkge1xuICogICAgICAgICAvLy4uLlxuICogICAgIH1cbiAqICAgICAvLy4uLlxuICogXSwgY2FsbGJhY2spO1xuICpcbiAqIGFzeW5jLmF1dG8oe1xuICogICAgIGhvc3RuYW1lOiBhc3luYy5jb25zdGFudChcImh0dHBzOi8vc2VydmVyLm5ldC9cIiksXG4gKiAgICAgcG9ydDogZmluZEZyZWVQb3J0LFxuICogICAgIGxhdW5jaFNlcnZlcjogW1wiaG9zdG5hbWVcIiwgXCJwb3J0XCIsIGZ1bmN0aW9uIChvcHRpb25zLCBjYikge1xuICogICAgICAgICBzdGFydFNlcnZlcihvcHRpb25zLCBjYik7XG4gKiAgICAgfV0sXG4gKiAgICAgLy8uLi5cbiAqIH0sIGNhbGxiYWNrKTtcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQkMSguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5pZ25vcmVkQXJncy8qLCBjYWxsYmFjayovKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGlnbm9yZWRBcmdzLnBvcCgpO1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgLi4uYXJncyk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVRlc3RlcihjaGVjaywgZ2V0UmVzdWx0KSB7XG4gICAgcmV0dXJuIChlYWNoZm4sIGFyciwgX2l0ZXJhdGVlLCBjYikgPT4ge1xuICAgICAgICB2YXIgdGVzdFBhc3NlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgdGVzdFJlc3VsdDtcbiAgICAgICAgY29uc3QgaXRlcmF0ZWUgPSB3cmFwQXN5bmMoX2l0ZXJhdGVlKTtcbiAgICAgICAgZWFjaGZuKGFyciwgKHZhbHVlLCBfLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgaXRlcmF0ZWUodmFsdWUsIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hlY2socmVzdWx0KSAmJiAhdGVzdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdCA9IGdldFJlc3VsdCh0cnVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBicmVha0xvb3AkMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgY2IobnVsbCwgdGVzdFBhc3NlZCA/IHRlc3RSZXN1bHQgOiBnZXRSZXN1bHQoZmFsc2UpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBpbiBgY29sbGAgdGhhdCBwYXNzZXMgYW4gYXN5bmMgdHJ1dGggdGVzdC4gVGhlXG4gKiBgaXRlcmF0ZWVgIGlzIGFwcGxpZWQgaW4gcGFyYWxsZWwsIG1lYW5pbmcgdGhlIGZpcnN0IGl0ZXJhdGVlIHRvIHJldHVyblxuICogYHRydWVgIHdpbGwgZmlyZSB0aGUgZGV0ZWN0IGBjYWxsYmFja2Agd2l0aCB0aGF0IHJlc3VsdC4gVGhhdCBtZWFucyB0aGVcbiAqIHJlc3VsdCBtaWdodCBub3QgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGBjb2xsYCAoaW4gdGVybXMgb2Ygb3JkZXIpXG4gKiB0aGF0IHBhc3NlcyB0aGUgdGVzdC5cblxuICogSWYgb3JkZXIgd2l0aGluIHRoZSBvcmlnaW5hbCBgY29sbGAgaXMgaW1wb3J0YW50LCB0aGVuIGxvb2sgYXRcbiAqIFtgZGV0ZWN0U2VyaWVzYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdFNlcmllc30uXG4gKlxuICogQG5hbWUgZGV0ZWN0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgZmluZFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25zXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICogaXRlcmF0ZWUgcmV0dXJucyBgdHJ1ZWAsIG9yIGFmdGVyIGFsbCB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAqIFJlc3VsdCB3aWxsIGJlIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBhcnJheSB0aGF0IHBhc3NlcyB0aGUgdHJ1dGggdGVzdFxuICogKGl0ZXJhdGVlKSBvciB0aGUgdmFsdWUgYHVuZGVmaW5lZGAgaWYgbm9uZSBwYXNzZWQuIEludm9rZWQgd2l0aFxuICogKGVyciwgcmVzdWx0KS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgb21pdHRlZFxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBkaXIxIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTEudHh0LCBmaWxlMi50eHRcbiAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICogLy8gZGlyMyBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGU1LnR4dFxuICpcbiAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIGZpbGUgZXhpc3RzXG4gKiBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICBmcy5hY2Nlc3MoZmlsZSwgZnMuY29uc3RhbnRzLkZfT0ssIChlcnIpID0+IHtcbiAqICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKTtcbiAqICAgIH0pO1xuICogfVxuICpcbiAqIGFzeW5jLmRldGVjdChbJ2ZpbGUzLnR4dCcsJ2ZpbGUyLnR4dCcsJ2RpcjEvZmlsZTEudHh0J10sIGZpbGVFeGlzdHMsXG4gKiAgICBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgICAgLy8gZGlyMS9maWxlMS50eHRcbiAqICAgICAgICAvLyByZXN1bHQgbm93IGVxdWFscyB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgbGlzdCB0aGF0IGV4aXN0c1xuICogICAgfVxuICopO1xuICpcbiAqIC8vIFVzaW5nIFByb21pc2VzXG4gKiBhc3luYy5kZXRlY3QoWydmaWxlMy50eHQnLCdmaWxlMi50eHQnLCdkaXIxL2ZpbGUxLnR4dCddLCBmaWxlRXhpc3RzKVxuICogLnRoZW4ocmVzdWx0ID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgIC8vIGRpcjEvZmlsZTEudHh0XG4gKiAgICAgLy8gcmVzdWx0IG5vdyBlcXVhbHMgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGxpc3QgdGhhdCBleGlzdHNcbiAqIH0pLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmRldGVjdChbJ2ZpbGUzLnR4dCcsJ2ZpbGUyLnR4dCcsJ2RpcjEvZmlsZTEudHh0J10sIGZpbGVFeGlzdHMpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgICAvLyBkaXIxL2ZpbGUxLnR4dFxuICogICAgICAgICAvLyByZXN1bHQgbm93IGVxdWFscyB0aGUgZmlsZSBpbiB0aGUgbGlzdCB0aGF0IGV4aXN0c1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gZGV0ZWN0KGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfY3JlYXRlVGVzdGVyKGJvb2wgPT4gYm9vbCwgKHJlcywgaXRlbSkgPT4gaXRlbSkoZWFjaE9mJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBkZXRlY3QkMSA9IGF3YWl0aWZ5KGRldGVjdCwgMyk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BkZXRlY3RgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZGV0ZWN0fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgZGV0ZWN0TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmRldGVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH1cbiAqIEBhbGlhcyBmaW5kTGltaXRcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uc1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gKiBSZXN1bHQgd2lsbCBiZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXkgdGhhdCBwYXNzZXMgdGhlIHRydXRoIHRlc3RcbiAqIChpdGVyYXRlZSkgb3IgdGhlIHZhbHVlIGB1bmRlZmluZWRgIGlmIG5vbmUgcGFzc2VkLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqL1xuZnVuY3Rpb24gZGV0ZWN0TGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfY3JlYXRlVGVzdGVyKGJvb2wgPT4gYm9vbCwgKHJlcywgaXRlbSkgPT4gaXRlbSkoZWFjaE9mTGltaXQkMihsaW1pdCksIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBkZXRlY3RMaW1pdCQxID0gYXdhaXRpZnkoZGV0ZWN0TGltaXQsIDQpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZGV0ZWN0YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGRldGVjdFNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZGV0ZWN0XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZGV0ZWN0fVxuICogQGFsaWFzIGZpbmRTZXJpZXNcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uc1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gKiBSZXN1bHQgd2lsbCBiZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXkgdGhhdCBwYXNzZXMgdGhlIHRydXRoIHRlc3RcbiAqIChpdGVyYXRlZSkgb3IgdGhlIHZhbHVlIGB1bmRlZmluZWRgIGlmIG5vbmUgcGFzc2VkLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqL1xuZnVuY3Rpb24gZGV0ZWN0U2VyaWVzKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfY3JlYXRlVGVzdGVyKGJvb2wgPT4gYm9vbCwgKHJlcywgaXRlbSkgPT4gaXRlbSkoZWFjaE9mTGltaXQkMigxKSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxuXG52YXIgZGV0ZWN0U2VyaWVzJDEgPSBhd2FpdGlmeShkZXRlY3RTZXJpZXMsIDMpO1xuXG5mdW5jdGlvbiBjb25zb2xlRnVuYyhuYW1lKSB7XG4gICAgcmV0dXJuIChmbiwgLi4uYXJncykgPT4gd3JhcEFzeW5jKGZuKSguLi5hcmdzLCAoZXJyLCAuLi5yZXN1bHRBcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgICBpZiAoY29uc29sZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlW25hbWVdKSB7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgICAgcmVzdWx0QXJncy5mb3JFYWNoKHggPT4gY29uc29sZVtuYW1lXSh4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KVxufVxuXG4vKipcbiAqIExvZ3MgdGhlIHJlc3VsdCBvZiBhbiBbYGFzeW5jYCBmdW5jdGlvbl17QGxpbmsgQXN5bmNGdW5jdGlvbn0gdG8gdGhlXG4gKiBgY29uc29sZWAgdXNpbmcgYGNvbnNvbGUuZGlyYCB0byBkaXNwbGF5IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuICogT25seSB3b3JrcyBpbiBOb2RlLmpzIG9yIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBgY29uc29sZS5kaXJgIGFuZFxuICogYGNvbnNvbGUuZXJyb3JgIChzdWNoIGFzIEZGIGFuZCBDaHJvbWUpLlxuICogSWYgbXVsdGlwbGUgYXJndW1lbnRzIGFyZSByZXR1cm5lZCBmcm9tIHRoZSBhc3luYyBmdW5jdGlvbixcbiAqIGBjb25zb2xlLmRpcmAgaXMgY2FsbGVkIG9uIGVhY2ggYXJndW1lbnQgaW4gb3JkZXIuXG4gKlxuICogQG5hbWUgZGlyXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBmdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB5b3Ugd2FudCB0byBldmVudHVhbGx5IGFwcGx5XG4gKiBhbGwgYXJndW1lbnRzIHRvLlxuICogQHBhcmFtIHsuLi4qfSBhcmd1bWVudHMuLi4gLSBBbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBhcHBseSB0byB0aGUgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGluIGEgbW9kdWxlXG4gKiB2YXIgaGVsbG8gPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykge1xuICogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHtoZWxsbzogbmFtZX0pO1xuICogICAgIH0sIDEwMDApO1xuICogfTtcbiAqXG4gKiAvLyBpbiB0aGUgbm9kZSByZXBsXG4gKiBub2RlPiBhc3luYy5kaXIoaGVsbG8sICd3b3JsZCcpO1xuICoge2hlbGxvOiAnd29ybGQnfVxuICovXG52YXIgZGlyID0gY29uc29sZUZ1bmMoJ2RpcicpO1xuXG4vKipcbiAqIFRoZSBwb3N0LWNoZWNrIHZlcnNpb24gb2YgW2B3aGlsc3RgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fS4gVG8gcmVmbGVjdCB0aGUgZGlmZmVyZW5jZSBpblxuICogdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMsIHRoZSBhcmd1bWVudHMgYHRlc3RgIGFuZCBgaXRlcmF0ZWVgIGFyZSBzd2l0Y2hlZC5cbiAqXG4gKiBgZG9XaGlsc3RgIGlzIHRvIGB3aGlsc3RgIGFzIGBkbyB3aGlsZWAgaXMgdG8gYHdoaWxlYCBpbiBwbGFpbiBKYXZhU2NyaXB0LlxuICpcbiAqIEBuYW1lIGRvV2hpbHN0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy53aGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy53aGlsc3R9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgZWFjaCB0aW1lIGB0ZXN0YFxuICogcGFzc2VzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gdGVzdCAtIGFzeW5jaHJvbm91cyB0cnV0aCB0ZXN0IHRvIHBlcmZvcm0gYWZ0ZXIgZWFjaFxuICogZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAuIEludm9rZWQgd2l0aCAoLi4uYXJncywgY2FsbGJhY2spLCB3aGVyZSBgLi4uYXJnc2AgYXJlIHRoZVxuICogbm9uLWVycm9yIGFyZ3MgZnJvbSB0aGUgcHJldmlvdXMgY2FsbGJhY2sgb2YgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciB0aGUgdGVzdFxuICogZnVuY3Rpb24gaGFzIGZhaWxlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAgaGFzIHN0b3BwZWQuXG4gKiBgY2FsbGJhY2tgIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWxcbiAqIGBpdGVyYXRlZWAncyBjYWxsYmFjay4gSW52b2tlZCB3aXRoIChlcnIsIFtyZXN1bHRzXSk7XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqL1xuZnVuY3Rpb24gZG9XaGlsc3QoaXRlcmF0ZWUsIHRlc3QsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmx5T25jZShjYWxsYmFjayk7XG4gICAgdmFyIF9mbiA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgdmFyIF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgIHZhciByZXN1bHRzO1xuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSByZXR1cm47XG4gICAgICAgIHJlc3VsdHMgPSBhcmdzO1xuICAgICAgICBfdGVzdCguLi5hcmdzLCBjaGVjayk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2soZXJyLCB0cnV0aCkge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgaWYgKCF0cnV0aCkgcmV0dXJuIGNhbGxiYWNrKG51bGwsIC4uLnJlc3VsdHMpO1xuICAgICAgICBfZm4obmV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoZWNrKG51bGwsIHRydWUpO1xufVxuXG52YXIgZG9XaGlsc3QkMSA9IGF3YWl0aWZ5KGRvV2hpbHN0LCAzKTtcblxuLyoqXG4gKiBMaWtlIFsnZG9XaGlsc3QnXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuZG9XaGlsc3R9LCBleGNlcHQgdGhlIGB0ZXN0YCBpcyBpbnZlcnRlZC4gTm90ZSB0aGVcbiAqIGFyZ3VtZW50IG9yZGVyaW5nIGRpZmZlcnMgZnJvbSBgdW50aWxgLlxuICpcbiAqIEBuYW1lIGRvVW50aWxcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmRvV2hpbHN0XXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuZG9XaGlsc3R9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZVxuICogYHRlc3RgIGZhaWxzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gdGVzdCAtIGFzeW5jaHJvbm91cyB0cnV0aCB0ZXN0IHRvIHBlcmZvcm0gYWZ0ZXIgZWFjaFxuICogZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAuIEludm9rZWQgd2l0aCAoLi4uYXJncywgY2FsbGJhY2spLCB3aGVyZSBgLi4uYXJnc2AgYXJlIHRoZVxuICogbm9uLWVycm9yIGFyZ3MgZnJvbSB0aGUgcHJldmlvdXMgY2FsbGJhY2sgb2YgYGl0ZXJhdGVlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSB0ZXN0XG4gKiBmdW5jdGlvbiBoYXMgcGFzc2VkIGFuZCByZXBlYXRlZCBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYCBoYXMgc3RvcHBlZC4gYGNhbGxiYWNrYFxuICogd2lsbCBiZSBwYXNzZWQgYW4gZXJyb3IgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmaW5hbCBgaXRlcmF0ZWVgJ3NcbiAqIGNhbGxiYWNrLiBJbnZva2VkIHdpdGggKGVyciwgW3Jlc3VsdHNdKTtcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICovXG5mdW5jdGlvbiBkb1VudGlsKGl0ZXJhdGVlLCB0ZXN0LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgIHJldHVybiBkb1doaWxzdCQxKGl0ZXJhdGVlLCAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zdCBjYiA9IGFyZ3MucG9wKCk7XG4gICAgICAgIF90ZXN0KC4uLmFyZ3MsIChlcnIsIHRydXRoKSA9PiBjYiAoZXJyLCAhdHJ1dGgpKTtcbiAgICB9LCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIF93aXRob3V0SW5kZXgoaXRlcmF0ZWUpIHtcbiAgICByZXR1cm4gKHZhbHVlLCBpbmRleCwgY2FsbGJhY2spID0+IGl0ZXJhdGVlKHZhbHVlLCBjYWxsYmFjayk7XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGUgZnVuY3Rpb24gYGl0ZXJhdGVlYCB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLCBpbiBwYXJhbGxlbC5cbiAqIFRoZSBgaXRlcmF0ZWVgIGlzIGNhbGxlZCB3aXRoIGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCwgYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW5cbiAqIGl0IGhhcyBmaW5pc2hlZC4gSWYgdGhlIGBpdGVyYXRlZWAgcGFzc2VzIGFuIGVycm9yIHRvIGl0cyBgY2FsbGJhY2tgLCB0aGVcbiAqIG1haW4gYGNhbGxiYWNrYCAoZm9yIHRoZSBgZWFjaGAgZnVuY3Rpb24pIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZVxuICogZXJyb3IuXG4gKlxuICogTm90ZSwgdGhhdCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFwcGxpZXMgYGl0ZXJhdGVlYCB0byBlYWNoIGl0ZW0gaW4gcGFyYWxsZWwsXG4gKiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgaXRlcmF0ZWUgZnVuY3Rpb25zIHdpbGwgY29tcGxldGUgaW4gb3JkZXIuXG4gKlxuICogQG5hbWUgZWFjaFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQGFsaWFzIGZvckVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0b1xuICogZWFjaCBpdGVtIGluIGBjb2xsYC4gSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBUaGUgYXJyYXkgaW5kZXggaXMgbm90IHBhc3NlZCB0byB0aGUgaXRlcmF0ZWUuXG4gKiBJZiB5b3UgbmVlZCB0aGUgaW5kZXgsIHVzZSBgZWFjaE9mYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gZGlyMSBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUxLnR4dCwgZmlsZTIudHh0XG4gKiAvLyBkaXIyIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTMudHh0LCBmaWxlNC50eHRcbiAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAqIC8vIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAqXG4gKiBjb25zdCBmaWxlTGlzdCA9IFsgJ2RpcjEvZmlsZTIudHh0JywgJ2RpcjIvZmlsZTMudHh0JywgJ2Rpci9maWxlNS50eHQnXTtcbiAqIGNvbnN0IHdpdGhNaXNzaW5nRmlsZUxpc3QgPSBbJ2RpcjEvZmlsZTEudHh0JywgJ2RpcjQvZmlsZTIudHh0J107XG4gKlxuICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZGVsZXRlcyBhIGZpbGVcbiAqIGNvbnN0IGRlbGV0ZUZpbGUgPSBmdW5jdGlvbihmaWxlLCBjYWxsYmFjaykge1xuICogICAgIGZzLnVubGluayhmaWxlLCBjYWxsYmFjayk7XG4gKiB9O1xuICpcbiAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICogYXN5bmMuZWFjaChmaWxlTGlzdCwgZGVsZXRlRmlsZSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgaWYoIGVyciApIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIGhhdmUgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICogICAgIH1cbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYy5lYWNoKHdpdGhNaXNzaW5nRmlsZUxpc3QsIGRlbGV0ZUZpbGUsIGZ1bmN0aW9uKGVycil7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIC8vIHNpbmNlIGRpcjQvZmlsZTIudHh0IGRvZXMgbm90IGV4aXN0XG4gKiAgICAgLy8gZGlyMS9maWxlMS50eHQgY291bGQgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIFByb21pc2VzXG4gKiBhc3luYy5lYWNoKGZpbGVMaXN0LCBkZWxldGVGaWxlKVxuICogLnRoZW4oICgpID0+IHtcbiAqICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIGhhdmUgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYy5lYWNoKGZpbGVMaXN0LCBkZWxldGVGaWxlKVxuICogLnRoZW4oICgpID0+IHtcbiAqICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIGhhdmUgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIC8vIHNpbmNlIGRpcjQvZmlsZTIudHh0IGRvZXMgbm90IGV4aXN0XG4gKiAgICAgLy8gZGlyMS9maWxlMS50eHQgY291bGQgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgYXdhaXQgYXN5bmMuZWFjaChmaWxlcywgZGVsZXRlRmlsZSk7XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy8gRXJyb3IgSGFuZGxpbmdcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBhd2FpdCBhc3luYy5lYWNoKHdpdGhNaXNzaW5nRmlsZUxpc3QsIGRlbGV0ZUZpbGUpO1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gKiAgICAgICAgIC8vIHNpbmNlIGRpcjQvZmlsZTIudHh0IGRvZXMgbm90IGV4aXN0XG4gKiAgICAgICAgIC8vIGRpcjEvZmlsZTEudHh0IGNvdWxkIGhhdmUgYmVlbiBkZWxldGVkXG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gZWFjaExpbWl0JDIoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGVhY2hPZiQxKGNvbGwsIF93aXRob3V0SW5kZXgod3JhcEFzeW5jKGl0ZXJhdGVlKSksIGNhbGxiYWNrKTtcbn1cblxudmFyIGVhY2ggPSBhd2FpdGlmeShlYWNoTGltaXQkMiwgMyk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BlYWNoYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGVhY2hMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gKiBAYWxpYXMgZm9yRWFjaExpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgYXJyYXkgaW5kZXggaXMgbm90IHBhc3NlZCB0byB0aGUgaXRlcmF0ZWUuXG4gKiBJZiB5b3UgbmVlZCB0aGUgaW5kZXgsIHVzZSBgZWFjaE9mTGltaXRgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gSW52b2tlZCB3aXRoIChlcnIpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gKi9cbmZ1bmN0aW9uIGVhY2hMaW1pdChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGVhY2hPZkxpbWl0JDIobGltaXQpKGNvbGwsIF93aXRob3V0SW5kZXgod3JhcEFzeW5jKGl0ZXJhdGVlKSksIGNhbGxiYWNrKTtcbn1cbnZhciBlYWNoTGltaXQkMSA9IGF3YWl0aWZ5KGVhY2hMaW1pdCwgNCk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BlYWNoYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBOb3RlLCB0aGF0IHVubGlrZSBbYGVhY2hgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaH0sIHRoaXMgZnVuY3Rpb24gYXBwbGllcyBpdGVyYXRlZSB0byBlYWNoIGl0ZW1cbiAqIGluIHNlcmllcyBhbmQgdGhlcmVmb3JlIHRoZSBpdGVyYXRlZSBmdW5jdGlvbnMgd2lsbCBjb21wbGV0ZSBpbiBvcmRlci5cblxuICogQG5hbWUgZWFjaFNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gKiBAYWxpYXMgZm9yRWFjaFNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2hcbiAqIGl0ZW0gaW4gYGNvbGxgLlxuICogVGhlIGFycmF5IGluZGV4IGlzIG5vdCBwYXNzZWQgdG8gdGhlIGl0ZXJhdGVlLlxuICogSWYgeW91IG5lZWQgdGhlIGluZGV4LCB1c2UgYGVhY2hPZlNlcmllc2AuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAqL1xuZnVuY3Rpb24gZWFjaFNlcmllcyhjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gZWFjaExpbWl0JDEoY29sbCwgMSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIGVhY2hTZXJpZXMkMSA9IGF3YWl0aWZ5KGVhY2hTZXJpZXMsIDMpO1xuXG4vKipcbiAqIFdyYXAgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGVuc3VyZSBpdCBjYWxscyBpdHMgY2FsbGJhY2sgb24gYSBsYXRlciB0aWNrIG9mXG4gKiB0aGUgZXZlbnQgbG9vcC4gIElmIHRoZSBmdW5jdGlvbiBhbHJlYWR5IGNhbGxzIGl0cyBjYWxsYmFjayBvbiBhIG5leHQgdGljayxcbiAqIG5vIGV4dHJhIGRlZmVycmFsIGlzIGFkZGVkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyBzdGFjayBvdmVyZmxvd3NcbiAqIChgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRgKSBhbmQgZ2VuZXJhbGx5IGtlZXBpbmdcbiAqIFtaYWxnb10oaHR0cDovL2Jsb2cuaXpzLm1lL3Bvc3QvNTkxNDI3NDIxNDMvZGVzaWduaW5nLWFwaXMtZm9yLWFzeW5jaHJvbnkpXG4gKiBjb250YWluZWQuIEVTMjAxNyBgYXN5bmNgIGZ1bmN0aW9ucyBhcmUgcmV0dXJuZWQgYXMtaXMgLS0gdGhleSBhcmUgaW1tdW5lXG4gKiB0byBaYWxnbydzIGNvcnJ1cHRpbmcgaW5mbHVlbmNlcywgYXMgdGhleSBhbHdheXMgcmVzb2x2ZSBvbiBhIGxhdGVyIHRpY2suXG4gKlxuICogQG5hbWUgZW5zdXJlQXN5bmNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gYW4gYXN5bmMgZnVuY3Rpb24sIG9uZSB0aGF0IGV4cGVjdHMgYSBub2RlLXN0eWxlXG4gKiBjYWxsYmFjayBhcyBpdHMgbGFzdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSBSZXR1cm5zIGEgd3JhcHBlZCBmdW5jdGlvbiB3aXRoIHRoZSBleGFjdCBzYW1lIGNhbGxcbiAqIHNpZ25hdHVyZSBhcyB0aGUgZnVuY3Rpb24gcGFzc2VkIGluLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzb21ldGltZXNBc3luYyhhcmcsIGNhbGxiYWNrKSB7XG4gKiAgICAgaWYgKGNhY2hlW2FyZ10pIHtcbiAqICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGNhY2hlW2FyZ10pOyAvLyB0aGlzIHdvdWxkIGJlIHN5bmNocm9ub3VzISFcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgICBkb1NvbWVJTyhhcmcsIGNhbGxiYWNrKTsgLy8gdGhpcyBJTyB3b3VsZCBiZSBhc3luY2hyb25vdXNcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy8gdGhpcyBoYXMgYSByaXNrIG9mIHN0YWNrIG92ZXJmbG93cyBpZiBtYW55IHJlc3VsdHMgYXJlIGNhY2hlZCBpbiBhIHJvd1xuICogYXN5bmMubWFwU2VyaWVzKGFyZ3MsIHNvbWV0aW1lc0FzeW5jLCBkb25lKTtcbiAqXG4gKiAvLyB0aGlzIHdpbGwgZGVmZXIgc29tZXRpbWVzQXN5bmMncyBjYWxsYmFjayBpZiBuZWNlc3NhcnksXG4gKiAvLyBwcmV2ZW50aW5nIHN0YWNrIG92ZXJmbG93c1xuICogYXN5bmMubWFwU2VyaWVzKGFyZ3MsIGFzeW5jLmVuc3VyZUFzeW5jKHNvbWV0aW1lc0FzeW5jKSwgZG9uZSk7XG4gKi9cbmZ1bmN0aW9uIGVuc3VyZUFzeW5jKGZuKSB7XG4gICAgaWYgKGlzQXN5bmMoZm4pKSByZXR1cm4gZm47XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzLyosIGNhbGxiYWNrKi8pIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgICAgdmFyIHN5bmMgPSB0cnVlO1xuICAgICAgICBhcmdzLnB1c2goKC4uLmlubmVyQXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKHN5bmMpIHtcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiBjYWxsYmFjayguLi5pbm5lckFyZ3MpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soLi4uaW5uZXJBcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBzeW5jID0gZmFsc2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiBldmVyeSBlbGVtZW50IGluIGBjb2xsYCBzYXRpc2ZpZXMgYW4gYXN5bmMgdGVzdC4gSWYgYW55XG4gKiBpdGVyYXRlZSBjYWxsIHJldHVybnMgYGZhbHNlYCwgdGhlIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseSBjYWxsZWQuXG4gKlxuICogQG5hbWUgZXZlcnlcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBhbGlhcyBhbGxcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbVxuICogaW4gdGhlIGNvbGxlY3Rpb24gaW4gcGFyYWxsZWwuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiByZXN1bHQgdmFsdWUuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luYyB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBkaXIxIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTEudHh0LCBmaWxlMi50eHRcbiAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICogLy8gZGlyMyBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGU1LnR4dFxuICogLy8gZGlyNCBkb2VzIG5vdCBleGlzdFxuICpcbiAqIGNvbnN0IGZpbGVMaXN0ID0gWydkaXIxL2ZpbGUxLnR4dCcsJ2RpcjIvZmlsZTMudHh0JywnZGlyMy9maWxlNS50eHQnXTtcbiAqIGNvbnN0IHdpdGhNaXNzaW5nRmlsZUxpc3QgPSBbJ2ZpbGUxLnR4dCcsJ2ZpbGUyLnR4dCcsJ2ZpbGU0LnR4dCddO1xuICpcbiAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIGZpbGUgZXhpc3RzXG4gKiBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICBmcy5hY2Nlc3MoZmlsZSwgZnMuY29uc3RhbnRzLkZfT0ssIChlcnIpID0+IHtcbiAqICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKTtcbiAqICAgIH0pO1xuICogfVxuICpcbiAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICogYXN5bmMuZXZlcnkoZmlsZUxpc3QsIGZpbGVFeGlzdHMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAvLyB0cnVlXG4gKiAgICAgLy8gcmVzdWx0IGlzIHRydWUgc2luY2UgZXZlcnkgZmlsZSBleGlzdHNcbiAqIH0pO1xuICpcbiAqIGFzeW5jLmV2ZXJ5KHdpdGhNaXNzaW5nRmlsZUxpc3QsIGZpbGVFeGlzdHMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAvLyBmYWxzZVxuICogICAgIC8vIHJlc3VsdCBpcyBmYWxzZSBzaW5jZSBOT1QgZXZlcnkgZmlsZSBleGlzdHNcbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIFByb21pc2VzXG4gKiBhc3luYy5ldmVyeShmaWxlTGlzdCwgZmlsZUV4aXN0cylcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgLy8gdHJ1ZVxuICogICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gKiB9KS5jYXRjaCggZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogYXN5bmMuZXZlcnkod2l0aE1pc3NpbmdGaWxlTGlzdCwgZmlsZUV4aXN0cylcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgLy8gZmFsc2VcbiAqICAgICAvLyByZXN1bHQgaXMgZmFsc2Ugc2luY2UgTk9UIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gKiB9KS5jYXRjaCggZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMuZXZlcnkoZmlsZUxpc3QsIGZpbGVFeGlzdHMpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgICAvLyB0cnVlXG4gKiAgICAgICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5ldmVyeSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCBmaWxlRXhpc3RzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8gZmFsc2VcbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIGZhbHNlIHNpbmNlIE5PVCBldmVyeSBmaWxlIGV4aXN0c1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gZXZlcnkoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoYm9vbCA9PiAhYm9vbCwgcmVzID0+ICFyZXMpKGVhY2hPZiQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgZXZlcnkkMSA9IGF3YWl0aWZ5KGV2ZXJ5LCAzKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGV2ZXJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBldmVyeUxpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5ldmVyeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fVxuICogQGFsaWFzIGFsbExpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW1cbiAqIGluIHRoZSBjb2xsZWN0aW9uIGluIHBhcmFsbGVsLlxuICogVGhlIGl0ZXJhdGVlIG11c3QgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gcmVzdWx0IHZhbHVlLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gUmVzdWx0IHdpbGwgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiB0aGUgYXN5bmMgdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gZXZlcnlMaW1pdChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoYm9vbCA9PiAhYm9vbCwgcmVzID0+ICFyZXMpKGVhY2hPZkxpbWl0JDIobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgZXZlcnlMaW1pdCQxID0gYXdhaXRpZnkoZXZlcnlMaW1pdCwgNCk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BldmVyeWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5ldmVyeX0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGV2ZXJ5U2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5ldmVyeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fVxuICogQGFsaWFzIGFsbFNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbiBpbiBzZXJpZXMuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiByZXN1bHQgdmFsdWUuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luYyB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICovXG5mdW5jdGlvbiBldmVyeVNlcmllcyhjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2NyZWF0ZVRlc3Rlcihib29sID0+ICFib29sLCByZXMgPT4gIXJlcykoZWFjaE9mU2VyaWVzJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciBldmVyeVNlcmllcyQxID0gYXdhaXRpZnkoZXZlcnlTZXJpZXMsIDMpO1xuXG5mdW5jdGlvbiBmaWx0ZXJBcnJheShlYWNoZm4sIGFyciwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHRydXRoVmFsdWVzID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICAgIGVhY2hmbihhcnIsICh4LCBpbmRleCwgaXRlckNiKSA9PiB7XG4gICAgICAgIGl0ZXJhdGVlKHgsIChlcnIsIHYpID0+IHtcbiAgICAgICAgICAgIHRydXRoVmFsdWVzW2luZGV4XSA9ICEhdjtcbiAgICAgICAgICAgIGl0ZXJDYihlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0cnV0aFZhbHVlc1tpXSkgcmVzdWx0cy5wdXNoKGFycltpXSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0cyk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckdlbmVyaWMoZWFjaGZuLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIGVhY2hmbihjb2xsLCAoeCwgaW5kZXgsIGl0ZXJDYikgPT4ge1xuICAgICAgICBpdGVyYXRlZSh4LCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7aW5kZXgsIHZhbHVlOiB4fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVyQ2IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdHNcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleClcbiAgICAgICAgICAgIC5tYXAodiA9PiB2LnZhbHVlKSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXIoZWFjaGZuLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgZmlsdGVyID0gaXNBcnJheUxpa2UoY29sbCkgPyBmaWx0ZXJBcnJheSA6IGZpbHRlckdlbmVyaWM7XG4gICAgcmV0dXJuIGZpbHRlcihlYWNoZm4sIGNvbGwsIHdyYXBBc3luYyhpdGVyYXRlZSksIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIGFsbCB0aGUgdmFsdWVzIGluIGBjb2xsYCB3aGljaCBwYXNzIGFuIGFzeW5jIHRydXRoXG4gKiB0ZXN0LiBUaGlzIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgaW4gcGFyYWxsZWwsIGJ1dCB0aGUgcmVzdWx0cyBhcnJheSB3aWxsIGJlXG4gKiBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgb3JpZ2luYWwuXG4gKlxuICogQG5hbWUgZmlsdGVyXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgc2VsZWN0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICogVGhlIGBpdGVyYXRlZWAgaXMgcGFzc2VkIGEgYGNhbGxiYWNrKGVyciwgdHJ1dGhWYWx1ZSlgLCB3aGljaCBtdXN0IGJlIGNhbGxlZFxuICogd2l0aCBhIGJvb2xlYW4gYXJndW1lbnQgb25jZSBpdCBoYXMgY29tcGxldGVkLiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBkaXIxIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTEudHh0LCBmaWxlMi50eHRcbiAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICogLy8gZGlyMyBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGU1LnR4dFxuICpcbiAqIGNvbnN0IGZpbGVzID0gWydkaXIxL2ZpbGUxLnR4dCcsJ2RpcjIvZmlsZTMudHh0JywnZGlyMy9maWxlNi50eHQnXTtcbiAqXG4gKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBmaWxlIGV4aXN0c1xuICogZnVuY3Rpb24gZmlsZUV4aXN0cyhmaWxlLCBjYWxsYmFjaykge1xuICogICAgZnMuYWNjZXNzKGZpbGUsIGZzLmNvbnN0YW50cy5GX09LLCAoZXJyKSA9PiB7XG4gKiAgICAgICAgY2FsbGJhY2sobnVsbCwgIWVycik7XG4gKiAgICB9KTtcbiAqIH1cbiAqXG4gKiAvLyBVc2luZyBjYWxsYmFja3NcbiAqIGFzeW5jLmZpbHRlcihmaWxlcywgZmlsZUV4aXN0cywgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICBpZihlcnIpIHtcbiAqICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgfSBlbHNlIHtcbiAqICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAvLyBbICdkaXIxL2ZpbGUxLnR4dCcsICdkaXIyL2ZpbGUzLnR4dCcgXVxuICogICAgICAgIC8vIHJlc3VsdHMgaXMgbm93IGFuIGFycmF5IG9mIHRoZSBleGlzdGluZyBmaWxlc1xuICogICAgfVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLmZpbHRlcihmaWxlcywgZmlsZUV4aXN0cylcbiAqIC50aGVuKHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIFsgJ2RpcjEvZmlsZTEudHh0JywgJ2RpcjIvZmlsZTMudHh0JyBdXG4gKiAgICAgLy8gcmVzdWx0cyBpcyBub3cgYW4gYXJyYXkgb2YgdGhlIGV4aXN0aW5nIGZpbGVzXG4gKiB9KS5jYXRjaChlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMuZmlsdGVyKGZpbGVzLCBmaWxlRXhpc3RzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgICAgIC8vIFsgJ2RpcjEvZmlsZTEudHh0JywgJ2RpcjIvZmlsZTMudHh0JyBdXG4gKiAgICAgICAgIC8vIHJlc3VsdHMgaXMgbm93IGFuIGFycmF5IG9mIHRoZSBleGlzdGluZyBmaWxlc1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gZmlsdGVyIChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2ZpbHRlcihlYWNoT2YkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIGZpbHRlciQxID0gYXdhaXRpZnkoZmlsdGVyLCAzKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGZpbHRlcmBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5maWx0ZXJ9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICogdGltZS5cbiAqXG4gKiBAbmFtZSBmaWx0ZXJMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZmlsdGVyXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfVxuICogQGFsaWFzIHNlbGVjdExpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICogVGhlIGBpdGVyYXRlZWAgaXMgcGFzc2VkIGEgYGNhbGxiYWNrKGVyciwgdHJ1dGhWYWx1ZSlgLCB3aGljaCBtdXN0IGJlIGNhbGxlZFxuICogd2l0aCBhIGJvb2xlYW4gYXJndW1lbnQgb25jZSBpdCBoYXMgY29tcGxldGVkLiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICovXG5mdW5jdGlvbiBmaWx0ZXJMaW1pdCAoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfZmlsdGVyKGVhY2hPZkxpbWl0JDIobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgZmlsdGVyTGltaXQkMSA9IGF3YWl0aWZ5KGZpbHRlckxpbWl0LCA0KTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGZpbHRlcmBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5maWx0ZXJ9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBmaWx0ZXJTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmZpbHRlcl17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn1cbiAqIEBhbGlhcyBzZWxlY3RTZXJpZXNcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgYGl0ZXJhdGVlYCBpcyBwYXNzZWQgYSBgY2FsbGJhY2soZXJyLCB0cnV0aFZhbHVlKWAsIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gKiB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCBvbmNlIGl0IGhhcyBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKVxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gZmlsdGVyU2VyaWVzIChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2ZpbHRlcihlYWNoT2ZTZXJpZXMkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIGZpbHRlclNlcmllcyQxID0gYXdhaXRpZnkoZmlsdGVyU2VyaWVzLCAzKTtcblxuLyoqXG4gKiBDYWxscyB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGBmbmAgd2l0aCBhIGNhbGxiYWNrIHBhcmFtZXRlciB0aGF0IGFsbG93cyBpdFxuICogdG8gY2FsbCBpdHNlbGYgYWdhaW4sIGluIHNlcmllcywgaW5kZWZpbml0ZWx5LlxuXG4gKiBJZiBhbiBlcnJvciBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIHRoZW4gYGVycmJhY2tgIGlzIGNhbGxlZCB3aXRoIHRoZVxuICogZXJyb3IsIGFuZCBleGVjdXRpb24gc3RvcHMsIG90aGVyd2lzZSBpdCB3aWxsIG5ldmVyIGJlIGNhbGxlZC5cbiAqXG4gKiBAbmFtZSBmb3JldmVyXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gYW4gYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCByZXBlYXRlZGx5LlxuICogSW52b2tlZCB3aXRoIChuZXh0KS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtlcnJiYWNrXSAtIHdoZW4gYGZuYCBwYXNzZXMgYW4gZXJyb3IgdG8gaXQncyBjYWxsYmFjayxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQsIGFuZCBleGVjdXRpb24gc3RvcHMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UgdGhhdCByZWplY3RzIGlmIGFuIGVycm9yIG9jY3VycyBhbmQgYW4gZXJyYmFja1xuICogaXMgbm90IHBhc3NlZFxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5mb3JldmVyKFxuICogICAgIGZ1bmN0aW9uKG5leHQpIHtcbiAqICAgICAgICAgLy8gbmV4dCBpcyBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byB0aGluZ3MgdGhhdCBuZWVkIGEgY2FsbGJhY2soZXJyIFssIHdoYXRldmVyXSk7XG4gKiAgICAgICAgIC8vIGl0IHdpbGwgcmVzdWx0IGluIHRoaXMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGFnYWluLlxuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgICAgIC8vIGlmIG5leHQgaXMgY2FsbGVkIHdpdGggYSB2YWx1ZSBpbiBpdHMgZmlyc3QgcGFyYW1ldGVyLCBpdCB3aWxsIGFwcGVhclxuICogICAgICAgICAvLyBpbiBoZXJlIGFzICdlcnInLCBhbmQgZXhlY3V0aW9uIHdpbGwgc3RvcC5cbiAqICAgICB9XG4gKiApO1xuICovXG5mdW5jdGlvbiBmb3JldmVyKGZuLCBlcnJiYWNrKSB7XG4gICAgdmFyIGRvbmUgPSBvbmx5T25jZShlcnJiYWNrKTtcbiAgICB2YXIgdGFzayA9IHdyYXBBc3luYyhlbnN1cmVBc3luYyhmbikpO1xuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgdGFzayhuZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQoKTtcbn1cbnZhciBmb3JldmVyJDEgPSBhd2FpdGlmeShmb3JldmVyLCAyKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGdyb3VwQnlgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZ3JvdXBCeX0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgZ3JvdXBCeUxpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5ncm91cEJ5XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZ3JvdXBCeX1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGBrZXlgIHRvIGdyb3VwIHRoZSB2YWx1ZSB1bmRlci5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHQgaXMgYW4gYE9iamVjdGAgd2hvc2VzXG4gKiBwcm9wZXJ0aWVzIGFyZSBhcnJheXMgb2YgdmFsdWVzIHdoaWNoIHJldHVybmVkIHRoZSBjb3JyZXNwb25kaW5nIGtleS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICovXG5mdW5jdGlvbiBncm91cEJ5TGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuICAgIHJldHVybiBtYXBMaW1pdCQxKGNvbGwsIGxpbWl0LCAodmFsLCBpdGVyQ2IpID0+IHtcbiAgICAgICAgX2l0ZXJhdGVlKHZhbCwgKGVyciwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICByZXR1cm4gaXRlckNiKGVyciwge2tleSwgdmFsfSk7XG4gICAgICAgIH0pO1xuICAgIH0sIChlcnIsIG1hcFJlc3VsdHMpID0+IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgICAvLyBmcm9tIE1ETiwgaGFuZGxlIG9iamVjdCBoYXZpbmcgYW4gYGhhc093blByb3BlcnR5YCBwcm9wXG4gICAgICAgIHZhciB7aGFzT3duUHJvcGVydHl9ID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcFJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXBSZXN1bHRzW2ldKSB7XG4gICAgICAgICAgICAgICAgdmFyIHtrZXl9ID0gbWFwUmVzdWx0c1tpXTtcbiAgICAgICAgICAgICAgICB2YXIge3ZhbH0gPSBtYXBSZXN1bHRzW2ldO1xuXG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IFt2YWxdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgfSk7XG59XG5cbnZhciBncm91cEJ5TGltaXQkMSA9IGF3YWl0aWZ5KGdyb3VwQnlMaW1pdCwgNCk7XG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBvYmplY3QsIHdoZXJlIGVhY2ggdmFsdWUgY29ycmVzcG9uZHMgdG8gYW4gYXJyYXkgb2YgaXRlbXMsIGZyb21cbiAqIGBjb2xsYCwgdGhhdCByZXR1cm5lZCB0aGUgY29ycmVzcG9uZGluZyBrZXkuIFRoYXQgaXMsIHRoZSBrZXlzIG9mIHRoZSBvYmplY3RcbiAqIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIGBpdGVyYXRlZWAgY2FsbGJhY2suXG4gKlxuICogTm90ZTogU2luY2UgdGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpbiBwYXJhbGxlbCxcbiAqIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyB3aWxsIGNvbXBsZXRlIGluIG9yZGVyLlxuICogSG93ZXZlciwgdGhlIHZhbHVlcyBmb3IgZWFjaCBrZXkgaW4gdGhlIGByZXN1bHRgIHdpbGwgYmUgaW4gdGhlIHNhbWUgb3JkZXIgYXNcbiAqIHRoZSBvcmlnaW5hbCBgY29sbGAuIEZvciBPYmplY3RzLCB0aGUgdmFsdWVzIHdpbGwgcm91Z2hseSBiZSBpbiB0aGUgb3JkZXIgb2ZcbiAqIHRoZSBvcmlnaW5hbCBPYmplY3RzJyBrZXlzIChidXQgdGhpcyBjYW4gdmFyeSBhY3Jvc3MgSmF2YVNjcmlwdCBlbmdpbmVzKS5cbiAqXG4gKiBAbmFtZSBncm91cEJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBga2V5YCB0byBncm91cCB0aGUgdmFsdWUgdW5kZXIuXG4gKiBJbnZva2VkIHdpdGggKHZhbHVlLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0IGlzIGFuIGBPYmplY3RgIHdob3Nlc1xuICogcHJvcGVydGllcyBhcmUgYXJyYXlzIG9mIHZhbHVlcyB3aGljaCByZXR1cm5lZCB0aGUgY29ycmVzcG9uZGluZyBrZXkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gZGlyMSBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUxLnR4dCwgZmlsZTIudHh0XG4gKiAvLyBkaXIyIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTMudHh0LCBmaWxlNC50eHRcbiAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAqIC8vIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAqXG4gKiBjb25zdCBmaWxlcyA9IFsnZGlyMS9maWxlMS50eHQnLCdkaXIyJywnZGlyNCddXG4gKlxuICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZGV0ZWN0cyBmaWxlIHR5cGUgYXMgbm9uZSwgZmlsZSwgb3IgZGlyZWN0b3J5XG4gKiBmdW5jdGlvbiBkZXRlY3RGaWxlKGZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICAgZnMuc3RhdChmaWxlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAqICAgICAgICAgaWYgKGVycikge1xuICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsICdub25lJyk7XG4gKiAgICAgICAgIH1cbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgc3RhdC5pc0RpcmVjdG9yeSgpID8gJ2RpcmVjdG9yeScgOiAnZmlsZScpO1xuICogICAgIH0pO1xuICogfVxuICpcbiAqIC8vVXNpbmcgY2FsbGJhY2tzXG4gKiBhc3luYy5ncm91cEJ5KGZpbGVzLCBkZXRlY3RGaWxlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIGlmKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH0gZWxzZSB7XG4gKlx0ICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgICAgIC8vIHtcbiAqICAgICAgICAgLy8gICAgIGZpbGU6IFsgJ2RpcjEvZmlsZTEudHh0JyBdLFxuICogICAgICAgICAvLyAgICAgbm9uZTogWyAnZGlyNCcgXSxcbiAqICAgICAgICAgLy8gICAgIGRpcmVjdG9yeTogWyAnZGlyMiddXG4gKiAgICAgICAgIC8vIH1cbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWxlcyBncm91cGVkIGJ5IHR5cGVcbiAqICAgICB9XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBQcm9taXNlc1xuICogYXN5bmMuZ3JvdXBCeShmaWxlcywgZGV0ZWN0RmlsZSlcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgLy8ge1xuICogICAgIC8vICAgICBmaWxlOiBbICdkaXIxL2ZpbGUxLnR4dCcgXSxcbiAqICAgICAvLyAgICAgbm9uZTogWyAnZGlyNCcgXSxcbiAqICAgICAvLyAgICAgZGlyZWN0b3J5OiBbICdkaXIyJ11cbiAqICAgICAvLyB9XG4gKiAgICAgLy8gcmVzdWx0IGlzIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWxlcyBncm91cGVkIGJ5IHR5cGVcbiAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5ncm91cEJ5KGZpbGVzLCBkZXRlY3RGaWxlKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8ge1xuICogICAgICAgICAvLyAgICAgZmlsZTogWyAnZGlyMS9maWxlMS50eHQnIF0sXG4gKiAgICAgICAgIC8vICAgICBub25lOiBbICdkaXI0JyBdLFxuICogICAgICAgICAvLyAgICAgZGlyZWN0b3J5OiBbICdkaXIyJ11cbiAqICAgICAgICAgLy8gfVxuICogICAgICAgICAvLyByZXN1bHQgaXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbGVzIGdyb3VwZWQgYnkgdHlwZVxuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gZ3JvdXBCeSAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGdyb3VwQnlMaW1pdCQxKGNvbGwsIEluZmluaXR5LCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2Bncm91cEJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmdyb3VwQnl9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBncm91cEJ5U2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5ncm91cEJ5XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZ3JvdXBCeX1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGBrZXlgIHRvIGdyb3VwIHRoZSB2YWx1ZSB1bmRlci5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHQgaXMgYW4gYE9iamVjdGAgd2hvc2VcbiAqIHByb3BlcnRpZXMgYXJlIGFycmF5cyBvZiB2YWx1ZXMgd2hpY2ggcmV0dXJuZWQgdGhlIGNvcnJlc3BvbmRpbmcga2V5LlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKi9cbmZ1bmN0aW9uIGdyb3VwQnlTZXJpZXMgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBncm91cEJ5TGltaXQkMShjb2xsLCAxLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogTG9ncyB0aGUgcmVzdWx0IG9mIGFuIGBhc3luY2AgZnVuY3Rpb24gdG8gdGhlIGBjb25zb2xlYC4gT25seSB3b3JrcyBpblxuICogTm9kZS5qcyBvciBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgYGNvbnNvbGUubG9nYCBhbmQgYGNvbnNvbGUuZXJyb3JgIChzdWNoXG4gKiBhcyBGRiBhbmQgQ2hyb21lKS4gSWYgbXVsdGlwbGUgYXJndW1lbnRzIGFyZSByZXR1cm5lZCBmcm9tIHRoZSBhc3luY1xuICogZnVuY3Rpb24sIGBjb25zb2xlLmxvZ2AgaXMgY2FsbGVkIG9uIGVhY2ggYXJndW1lbnQgaW4gb3JkZXIuXG4gKlxuICogQG5hbWUgbG9nXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBmdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB5b3Ugd2FudCB0byBldmVudHVhbGx5IGFwcGx5XG4gKiBhbGwgYXJndW1lbnRzIHRvLlxuICogQHBhcmFtIHsuLi4qfSBhcmd1bWVudHMuLi4gLSBBbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBhcHBseSB0byB0aGUgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGluIGEgbW9kdWxlXG4gKiB2YXIgaGVsbG8gPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykge1xuICogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdoZWxsbyAnICsgbmFtZSk7XG4gKiAgICAgfSwgMTAwMCk7XG4gKiB9O1xuICpcbiAqIC8vIGluIHRoZSBub2RlIHJlcGxcbiAqIG5vZGU+IGFzeW5jLmxvZyhoZWxsbywgJ3dvcmxkJyk7XG4gKiAnaGVsbG8gd29ybGQnXG4gKi9cbnZhciBsb2cgPSBjb25zb2xlRnVuYygnbG9nJyk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BtYXBWYWx1ZXNgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwVmFsdWVzfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgbWFwVmFsdWVzTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLm1hcFZhbHVlc117QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcFZhbHVlc31cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdmFsdWUgYW5kIGtleVxuICogaW4gYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICogSW52b2tlZCB3aXRoICh2YWx1ZSwga2V5LCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gYHJlc3VsdGAgaXMgYSBuZXcgb2JqZWN0IGNvbnNpc3RpbmdcbiAqIG9mIGVhY2gga2V5IGZyb20gYG9iamAsIHdpdGggZWFjaCB0cmFuc2Zvcm1lZCB2YWx1ZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLlxuICogSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzTGltaXQob2JqLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICB2YXIgbmV3T2JqID0ge307XG4gICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgcmV0dXJuIGVhY2hPZkxpbWl0JDIobGltaXQpKG9iaiwgKHZhbCwga2V5LCBuZXh0KSA9PiB7XG4gICAgICAgIF9pdGVyYXRlZSh2YWwsIGtleSwgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgICAgbmV3T2JqW2tleV0gPSByZXN1bHQ7XG4gICAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH0pO1xuICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIG5ld09iaikpO1xufVxuXG52YXIgbWFwVmFsdWVzTGltaXQkMSA9IGF3YWl0aWZ5KG1hcFZhbHVlc0xpbWl0LCA0KTtcblxuLyoqXG4gKiBBIHJlbGF0aXZlIG9mIFtgbWFwYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0sIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBvYmplY3RzLlxuICpcbiAqIFByb2R1Y2VzIGEgbmV3IE9iamVjdCBieSBtYXBwaW5nIGVhY2ggdmFsdWUgb2YgYG9iamAgdGhyb3VnaCB0aGUgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb24uIFRoZSBgaXRlcmF0ZWVgIGlzIGNhbGxlZCBlYWNoIGB2YWx1ZWAgYW5kIGBrZXlgIGZyb20gYG9iamAgYW5kIGFcbiAqIGNhbGxiYWNrIGZvciB3aGVuIGl0IGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nLiBFYWNoIG9mIHRoZXNlIGNhbGxiYWNrcyB0YWtlc1xuICogdHdvIGFyZ3VtZW50czogYW4gYGVycm9yYCwgYW5kIHRoZSB0cmFuc2Zvcm1lZCBpdGVtIGZyb20gYG9iamAuIElmIGBpdGVyYXRlZWBcbiAqIHBhc3NlcyBhbiBlcnJvciB0byBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgKGZvciB0aGUgYG1hcFZhbHVlc2BcbiAqIGZ1bmN0aW9uKSBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gKlxuICogTm90ZSwgdGhlIG9yZGVyIG9mIHRoZSBrZXlzIGluIHRoZSByZXN1bHQgaXMgbm90IGd1YXJhbnRlZWQuICBUaGUga2V5cyB3aWxsXG4gKiBiZSByb3VnaGx5IGluIHRoZSBvcmRlciB0aGV5IGNvbXBsZXRlLCAoYnV0IHRoaXMgaXMgdmVyeSBlbmdpbmUtc3BlY2lmaWMpXG4gKlxuICogQG5hbWUgbWFwVmFsdWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIHZhbHVlIGFuZCBrZXlcbiAqIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgYXMgaXRzIHJlc3VsdC5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIGByZXN1bHRgIGlzIGEgbmV3IG9iamVjdCBjb25zaXN0aW5nXG4gKiBvZiBlYWNoIGtleSBmcm9tIGBvYmpgLCB3aXRoIGVhY2ggdHJhbnNmb3JtZWQgdmFsdWUgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUyLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGU0LnR4dCBkb2VzIG5vdCBleGlzdFxuICpcbiAqIGNvbnN0IGZpbGVNYXAgPSB7XG4gKiAgICAgZjE6ICdmaWxlMS50eHQnLFxuICogICAgIGYyOiAnZmlsZTIudHh0JyxcbiAqICAgICBmMzogJ2ZpbGUzLnR4dCdcbiAqIH07XG4gKlxuICogY29uc3Qgd2l0aE1pc3NpbmdGaWxlTWFwID0ge1xuICogICAgIGYxOiAnZmlsZTEudHh0JyxcbiAqICAgICBmMjogJ2ZpbGUyLnR4dCcsXG4gKiAgICAgZjM6ICdmaWxlNC50eHQnXG4gKiB9O1xuICpcbiAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICogZnVuY3Rpb24gZ2V0RmlsZVNpemVJbkJ5dGVzKGZpbGUsIGtleSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5zdGF0KGZpbGUsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuICogICAgICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAqICAgICAgICAgfVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0LnNpemUpO1xuICogICAgIH0pO1xuICogfVxuICpcbiAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICogYXN5bmMubWFwVmFsdWVzKGZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIG5vdyBhIG1hcCBvZiBmaWxlIHNpemUgaW4gYnl0ZXMgZm9yIGVhY2ggZmlsZSwgZS5nLlxuICogICAgICAgICAvLyB7XG4gKiAgICAgICAgIC8vICAgICBmMTogMTAwMCxcbiAqICAgICAgICAgLy8gICAgIGYyOiAyMDAwLFxuICogICAgICAgICAvLyAgICAgZjM6IDMwMDBcbiAqICAgICAgICAgLy8gfVxuICogICAgIH1cbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIGhhbmRsaW5nXG4gKiBhc3luYy5tYXBWYWx1ZXMod2l0aE1pc3NpbmdGaWxlTWFwLCBnZXRGaWxlU2l6ZUluQnl0ZXMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgaWYgKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgfVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLm1hcFZhbHVlcyhmaWxlTWFwLCBnZXRGaWxlU2l6ZUluQnl0ZXMpXG4gKiAudGhlbiggcmVzdWx0ID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgIC8vIHJlc3VsdCBpcyBub3cgYSBtYXAgb2YgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAqICAgICAvLyB7XG4gKiAgICAgLy8gICAgIGYxOiAxMDAwLFxuICogICAgIC8vICAgICBmMjogMjAwMCxcbiAqICAgICAvLyAgICAgZjM6IDMwMDBcbiAqICAgICAvLyB9XG4gKiB9KS5jYXRjaCAoZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy8gRXJyb3IgSGFuZGxpbmdcbiAqIGFzeW5jLm1hcFZhbHVlcyh3aXRoTWlzc2luZ0ZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcylcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiB9KS5jYXRjaCAoZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5tYXBWYWx1ZXMoZmlsZU1hcCwgZ2V0RmlsZVNpemVJbkJ5dGVzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIG5vdyBhIG1hcCBvZiBmaWxlIHNpemUgaW4gYnl0ZXMgZm9yIGVhY2ggZmlsZSwgZS5nLlxuICogICAgICAgICAvLyB7XG4gKiAgICAgICAgIC8vICAgICBmMTogMTAwMCxcbiAqICAgICAgICAgLy8gICAgIGYyOiAyMDAwLFxuICogICAgICAgICAvLyAgICAgZjM6IDMwMDBcbiAqICAgICAgICAgLy8gfVxuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqIC8vIEVycm9yIEhhbmRsaW5nXG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLm1hcFZhbHVlcyh3aXRoTWlzc2luZ0ZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcyk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqICAgICB9XG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBtYXBWYWx1ZXMob2JqLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gbWFwVmFsdWVzTGltaXQkMShvYmosIEluZmluaXR5LCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BtYXBWYWx1ZXNgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwVmFsdWVzfSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgbWFwVmFsdWVzU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5tYXBWYWx1ZXNde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXBWYWx1ZXN9XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIHZhbHVlIGFuZCBrZXlcbiAqIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgYXMgaXRzIHJlc3VsdC5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIGByZXN1bHRgIGlzIGEgbmV3IG9iamVjdCBjb25zaXN0aW5nXG4gKiBvZiBlYWNoIGtleSBmcm9tIGBvYmpgLCB3aXRoIGVhY2ggdHJhbnNmb3JtZWQgdmFsdWUgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKi9cbmZ1bmN0aW9uIG1hcFZhbHVlc1NlcmllcyhvYmosIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBtYXBWYWx1ZXNMaW1pdCQxKG9iaiwgMSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxuXG4vKipcbiAqIENhY2hlcyB0aGUgcmVzdWx0cyBvZiBhbiBhc3luYyBmdW5jdGlvbi4gV2hlbiBjcmVhdGluZyBhIGhhc2ggdG8gc3RvcmVcbiAqIGZ1bmN0aW9uIHJlc3VsdHMgYWdhaW5zdCwgdGhlIGNhbGxiYWNrIGlzIG9taXR0ZWQgZnJvbSB0aGUgaGFzaCBhbmQgYW5cbiAqIG9wdGlvbmFsIGhhc2ggZnVuY3Rpb24gY2FuIGJlIHVzZWQuXG4gKlxuICogKipOb3RlOiBpZiB0aGUgYXN5bmMgZnVuY3Rpb24gZXJycywgdGhlIHJlc3VsdCB3aWxsIG5vdCBiZSBjYWNoZWQgYW5kXG4gKiBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgY2FsbCB0aGUgd3JhcHBlZCBmdW5jdGlvbi4qKlxuICpcbiAqIElmIG5vIGhhc2ggZnVuY3Rpb24gaXMgc3BlY2lmaWVkLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdXNlZCBhcyBhIGhhc2gga2V5LFxuICogd2hpY2ggbWF5IHdvcmsgcmVhc29uYWJseSBpZiBpdCBpcyBhIHN0cmluZyBvciBhIGRhdGEgdHlwZSB0aGF0IGNvbnZlcnRzIHRvIGFcbiAqIGRpc3RpbmN0IHN0cmluZy4gTm90ZSB0aGF0IG9iamVjdHMgYW5kIGFycmF5cyB3aWxsIG5vdCBiZWhhdmUgcmVhc29uYWJseS5cbiAqIE5laXRoZXIgd2lsbCBjYXNlcyB3aGVyZSB0aGUgb3RoZXIgYXJndW1lbnRzIGFyZSBzaWduaWZpY2FudC4gSW4gc3VjaCBjYXNlcyxcbiAqIHNwZWNpZnkgeW91ciBvd24gaGFzaCBmdW5jdGlvbi5cbiAqXG4gKiBUaGUgY2FjaGUgb2YgcmVzdWx0cyBpcyBleHBvc2VkIGFzIHRoZSBgbWVtb2AgcHJvcGVydHkgb2YgdGhlIGZ1bmN0aW9uXG4gKiByZXR1cm5lZCBieSBgbWVtb2l6ZWAuXG4gKlxuICogQG5hbWUgbWVtb2l6ZVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gZm4gLSBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gcHJveHkgYW5kIGNhY2hlIHJlc3VsdHMgZnJvbS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc2hlciAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBnZW5lcmF0aW5nIGEgY3VzdG9tIGhhc2hcbiAqIGZvciBzdG9yaW5nIHJlc3VsdHMuIEl0IGhhcyBhbGwgdGhlIGFyZ3VtZW50cyBhcHBsaWVkIHRvIGl0IGFwYXJ0IGZyb20gdGhlXG4gKiBjYWxsYmFjaywgYW5kIG11c3QgYmUgc3luY2hyb25vdXMuXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHNsb3dfZm4gPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykge1xuICogICAgIC8vIGRvIHNvbWV0aGluZ1xuICogICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gKiB9O1xuICogdmFyIGZuID0gYXN5bmMubWVtb2l6ZShzbG93X2ZuKTtcbiAqXG4gKiAvLyBmbiBjYW4gbm93IGJlIHVzZWQgYXMgaWYgaXQgd2VyZSBzbG93X2ZuXG4gKiBmbignc29tZSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gKiAgICAgLy8gY2FsbGJhY2tcbiAqIH0pO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZuLCBoYXNoZXIgPSB2ID0+IHYpIHtcbiAgICB2YXIgbWVtbyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIHF1ZXVlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIF9mbiA9IHdyYXBBc3luYyhmbik7XG4gICAgdmFyIG1lbW9pemVkID0gaW5pdGlhbFBhcmFtcygoYXJncywgY2FsbGJhY2spID0+IHtcbiAgICAgICAgdmFyIGtleSA9IGhhc2hlciguLi5hcmdzKTtcbiAgICAgICAgaWYgKGtleSBpbiBtZW1vKSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiBjYWxsYmFjayhudWxsLCAuLi5tZW1vW2tleV0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgaW4gcXVldWVzKSB7XG4gICAgICAgICAgICBxdWV1ZXNba2V5XS5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXVlc1trZXldID0gW2NhbGxiYWNrXTtcbiAgICAgICAgICAgIF9mbiguLi5hcmdzLCAoZXJyLCAuLi5yZXN1bHRBcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gIzE0NjUgZG9uJ3QgbWVtb2l6ZSBpZiBhbiBlcnJvciBvY2N1cnJlZFxuICAgICAgICAgICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbW9ba2V5XSA9IHJlc3VsdEFyZ3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBxID0gcXVldWVzW2tleV07XG4gICAgICAgICAgICAgICAgZGVsZXRlIHF1ZXVlc1trZXldO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcVtpXShlcnIsIC4uLnJlc3VsdEFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbWVtb2l6ZWQubWVtbyA9IG1lbW87XG4gICAgbWVtb2l6ZWQudW5tZW1vaXplZCA9IGZuO1xuICAgIHJldHVybiBtZW1vaXplZDtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cblxuLyoqXG4gKiBDYWxscyBgY2FsbGJhY2tgIG9uIGEgbGF0ZXIgbG9vcCBhcm91bmQgdGhlIGV2ZW50IGxvb3AuIEluIE5vZGUuanMgdGhpcyBqdXN0XG4gKiBjYWxscyBgcHJvY2Vzcy5uZXh0VGlja2AuICBJbiB0aGUgYnJvd3NlciBpdCB3aWxsIHVzZSBgc2V0SW1tZWRpYXRlYCBpZlxuICogYXZhaWxhYmxlLCBvdGhlcndpc2UgYHNldFRpbWVvdXQoY2FsbGJhY2ssIDApYCwgd2hpY2ggbWVhbnMgb3RoZXIgaGlnaGVyXG4gKiBwcmlvcml0eSBldmVudHMgbWF5IHByZWNlZGUgdGhlIGV4ZWN1dGlvbiBvZiBgY2FsbGJhY2tgLlxuICpcbiAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBicm93c2VyLWNvbXBhdGliaWxpdHkgcHVycG9zZXMuXG4gKlxuICogQG5hbWUgbmV4dFRpY2tcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnNldEltbWVkaWF0ZV17QGxpbmsgbW9kdWxlOlV0aWxzLnNldEltbWVkaWF0ZX1cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGEgbGF0ZXIgbG9vcCBhcm91bmRcbiAqIHRoZSBldmVudCBsb29wLiBJbnZva2VkIHdpdGggKGFyZ3MuLi4pLlxuICogQHBhcmFtIHsuLi4qfSBhcmdzLi4uIC0gYW55IG51bWJlciBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZVxuICogY2FsbGJhY2sgb24gdGhlIG5leHQgdGljay5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGNhbGxfb3JkZXIgPSBbXTtcbiAqIGFzeW5jLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICogICAgIGNhbGxfb3JkZXIucHVzaCgndHdvJyk7XG4gKiAgICAgLy8gY2FsbF9vcmRlciBub3cgZXF1YWxzIFsnb25lJywndHdvJ11cbiAqIH0pO1xuICogY2FsbF9vcmRlci5wdXNoKCdvbmUnKTtcbiAqXG4gKiBhc3luYy5zZXRJbW1lZGlhdGUoZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAqICAgICAvLyBhLCBiLCBhbmQgYyBlcXVhbCAxLCAyLCBhbmQgM1xuICogfSwgMSwgMiwgMyk7XG4gKi9cbnZhciBfZGVmZXI7XG5cbmlmIChoYXNOZXh0VGljaykge1xuICAgIF9kZWZlciA9IHByb2Nlc3MubmV4dFRpY2s7XG59IGVsc2UgaWYgKGhhc1NldEltbWVkaWF0ZSkge1xuICAgIF9kZWZlciA9IHNldEltbWVkaWF0ZTtcbn0gZWxzZSB7XG4gICAgX2RlZmVyID0gZmFsbGJhY2s7XG59XG5cbnZhciBuZXh0VGljayA9IHdyYXAoX2RlZmVyKTtcblxudmFyIF9wYXJhbGxlbCA9IGF3YWl0aWZ5KChlYWNoZm4sIHRhc2tzLCBjYWxsYmFjaykgPT4ge1xuICAgIHZhciByZXN1bHRzID0gaXNBcnJheUxpa2UodGFza3MpID8gW10gOiB7fTtcblxuICAgIGVhY2hmbih0YXNrcywgKHRhc2ssIGtleSwgdGFza0NiKSA9PiB7XG4gICAgICAgIHdyYXBBc3luYyh0YXNrKSgoZXJyLCAuLi5yZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIFtyZXN1bHRdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgdGFza0NiKGVycik7XG4gICAgICAgIH0pO1xuICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIHJlc3VsdHMpKTtcbn0sIDMpO1xuXG4vKipcbiAqIFJ1biB0aGUgYHRhc2tzYCBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCwgd2l0aG91dCB3YWl0aW5nIHVudGlsXG4gKiB0aGUgcHJldmlvdXMgZnVuY3Rpb24gaGFzIGNvbXBsZXRlZC4gSWYgYW55IG9mIHRoZSBmdW5jdGlvbnMgcGFzcyBhbiBlcnJvciB0b1xuICogaXRzIGNhbGxiYWNrLCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGVcbiAqIGVycm9yLiBPbmNlIHRoZSBgdGFza3NgIGhhdmUgY29tcGxldGVkLCB0aGUgcmVzdWx0cyBhcmUgcGFzc2VkIHRvIHRoZSBmaW5hbFxuICogYGNhbGxiYWNrYCBhcyBhbiBhcnJheS5cbiAqXG4gKiAqKk5vdGU6KiogYHBhcmFsbGVsYCBpcyBhYm91dCBraWNraW5nLW9mZiBJL08gdGFza3MgaW4gcGFyYWxsZWwsIG5vdCBhYm91dFxuICogcGFyYWxsZWwgZXhlY3V0aW9uIG9mIGNvZGUuICBJZiB5b3VyIHRhc2tzIGRvIG5vdCB1c2UgYW55IHRpbWVycyBvciBwZXJmb3JtXG4gKiBhbnkgSS9PLCB0aGV5IHdpbGwgYWN0dWFsbHkgYmUgZXhlY3V0ZWQgaW4gc2VyaWVzLiAgQW55IHN5bmNocm9ub3VzIHNldHVwXG4gKiBzZWN0aW9ucyBmb3IgZWFjaCB0YXNrIHdpbGwgaGFwcGVuIG9uZSBhZnRlciB0aGUgb3RoZXIuICBKYXZhU2NyaXB0IHJlbWFpbnNcbiAqIHNpbmdsZS10aHJlYWRlZC5cbiAqXG4gKiAqKkhpbnQ6KiogVXNlIFtgcmVmbGVjdGBde0BsaW5rIG1vZHVsZTpVdGlscy5yZWZsZWN0fSB0byBjb250aW51ZSB0aGVcbiAqIGV4ZWN1dGlvbiBvZiBvdGhlciB0YXNrcyB3aGVuIGEgdGFzayBmYWlscy5cbiAqXG4gKiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheS4gRWFjaCBwcm9wZXJ0eSB3aWxsXG4gKiBiZSBydW4gYXMgYSBmdW5jdGlvbiBhbmQgdGhlIHJlc3VsdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGZpbmFsIGBjYWxsYmFja2BcbiAqIGFzIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5LiBUaGlzIGNhbiBiZSBhIG1vcmUgcmVhZGFibGUgd2F5IG9mIGhhbmRsaW5nXG4gKiByZXN1bHRzIGZyb20ge0BsaW5rIGFzeW5jLnBhcmFsbGVsfS5cbiAqXG4gKiBAbmFtZSBwYXJhbGxlbFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gdGFza3MgLSBBIGNvbGxlY3Rpb24gb2ZcbiAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHJ1bi5cbiAqIEVhY2ggYXN5bmMgZnVuY3Rpb24gY2FuIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICogZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheVxuICogKG9yIG9iamVjdCkgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB0YXNrIGNhbGxiYWNrcy5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgbm90IHBhc3NlZFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogLy9Vc2luZyBDYWxsYmFja3NcbiAqIGFzeW5jLnBhcmFsbGVsKFtcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICogICAgICAgICB9LCAyMDApO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiBdLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvIFsnb25lJywndHdvJ10gZXZlbiB0aG91Z2hcbiAqICAgICAvLyB0aGUgc2Vjb25kIGZ1bmN0aW9uIGhhZCBhIHNob3J0ZXIgdGltZW91dC5cbiAqIH0pO1xuICpcbiAqIC8vIGFuIGV4YW1wbGUgdXNpbmcgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXlcbiAqIGFzeW5jLnBhcmFsbGVsKHtcbiAqICAgICBvbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDIpO1xuICogICAgICAgICB9LCAxMDApO1xuICogICAgIH1cbiAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG86IHsgb25lOiAxLCB0d286IDIgfVxuICogfSk7XG4gKlxuICogLy9Vc2luZyBQcm9taXNlc1xuICogYXN5bmMucGFyYWxsZWwoW1xuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgICAgICB9LCAxMDApO1xuICogICAgIH1cbiAqIF0pLnRoZW4ocmVzdWx0cyA9PiB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0byBbJ29uZScsJ3R3byddIGV2ZW4gdGhvdWdoXG4gKiAgICAgLy8gdGhlIHNlY29uZCBmdW5jdGlvbiBoYWQgYSBzaG9ydGVyIHRpbWVvdXQuXG4gKiB9KS5jYXRjaChlcnIgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiB9KTtcbiAqXG4gKiAvLyBhbiBleGFtcGxlIHVzaW5nIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5XG4gKiBhc3luYy5wYXJhbGxlbCh7XG4gKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9KS50aGVuKHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG86IHsgb25lOiAxLCB0d286IDIgfVxuICogfSkuY2F0Y2goZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy9Vc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMucGFyYWxsZWwoW1xuICogICAgICAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAqICAgICAgICAgICAgIH0sXG4gKiAgICAgICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAqICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICogICAgICAgICAgICAgfVxuICogICAgICAgICBdKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG8gWydvbmUnLCd0d28nXSBldmVuIHRob3VnaFxuICogICAgICAgICAvLyB0aGUgc2Vjb25kIGZ1bmN0aW9uIGhhZCBhIHNob3J0ZXIgdGltZW91dC5cbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH1cbiAqIH1cbiAqXG4gKiAvLyBhbiBleGFtcGxlIHVzaW5nIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5XG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5wYXJhbGxlbCh7XG4gKiAgICAgICAgICAgICBvbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gKiAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAqICAgICAgICAgICAgIH0sXG4gKiAgICAgICAgICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICogICAgICAgICAgICB9XG4gKiAgICAgICAgIH0pO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0bzogeyBvbmU6IDEsIHR3bzogMiB9XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBwYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX3BhcmFsbGVsKGVhY2hPZiQxLCB0YXNrcywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgcGFyYWxsZWxgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucGFyYWxsZWx9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICogdGltZS5cbiAqXG4gKiBAbmFtZSBwYXJhbGxlbExpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5wYXJhbGxlbF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnBhcmFsbGVsfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gdGFza3MgLSBBIGNvbGxlY3Rpb24gb2ZcbiAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHJ1bi5cbiAqIEVhY2ggYXN5bmMgZnVuY3Rpb24gY2FuIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZXMuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICogZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheVxuICogKG9yIG9iamVjdCkgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB0YXNrIGNhbGxiYWNrcy5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgbm90IHBhc3NlZFxuICovXG5mdW5jdGlvbiBwYXJhbGxlbExpbWl0KHRhc2tzLCBsaW1pdCwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX3BhcmFsbGVsKGVhY2hPZkxpbWl0JDIobGltaXQpLCB0YXNrcywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIEEgcXVldWUgb2YgdGFza3MgZm9yIHRoZSB3b3JrZXIgZnVuY3Rpb24gdG8gY29tcGxldGUuXG4gKiBAdHlwZWRlZiB7SXRlcmFibGV9IFF1ZXVlT2JqZWN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBsZW5ndGggLSBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gKiB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZC4gSW52b2tlIHdpdGggYHF1ZXVlLmxlbmd0aCgpYC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhcnRlZCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGFueVxuICogaXRlbXMgaGF2ZSBiZWVuIHB1c2hlZCBhbmQgcHJvY2Vzc2VkIGJ5IHRoZSBxdWV1ZS5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHJ1bm5pbmcgLSBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gKiBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiBJbnZva2Ugd2l0aCBgcXVldWUucnVubmluZygpYC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHdvcmtlcnNMaXN0IC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGFycmF5IG9mIGl0ZW1zXG4gKiBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiBJbnZva2Ugd2l0aCBgcXVldWUud29ya2Vyc0xpc3QoKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBpZGxlIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgZmFsc2UgaWYgdGhlcmUgYXJlIGl0ZW1zXG4gKiB3YWl0aW5nIG9yIGJlaW5nIHByb2Nlc3NlZCwgb3IgdHJ1ZSBpZiBub3QuIEludm9rZSB3aXRoIGBxdWV1ZS5pZGxlKClgLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbmN1cnJlbmN5IC0gYW4gaW50ZWdlciBmb3IgZGV0ZXJtaW5pbmcgaG93IG1hbnkgYHdvcmtlcmBcbiAqIGZ1bmN0aW9ucyBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsLiBUaGlzIHByb3BlcnR5IGNhbiBiZSBjaGFuZ2VkIGFmdGVyIGFcbiAqIGBxdWV1ZWAgaXMgY3JlYXRlZCB0byBhbHRlciB0aGUgY29uY3VycmVuY3kgb24tdGhlLWZseS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwYXlsb2FkIC0gYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSBpdGVtcyBhcmVcbiAqIHBhc3NlZCB0byB0aGUgd29ya2VyIGZ1bmN0aW9uIGF0IGEgdGltZS4gb25seSBhcHBsaWVzIGlmIHRoaXMgaXMgYVxuICogW2NhcmdvXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuY2FyZ299IG9iamVjdFxuICogQHByb3BlcnR5IHtBc3luY0Z1bmN0aW9ufSBwdXNoIC0gYWRkIGEgbmV3IHRhc2sgdG8gdGhlIGBxdWV1ZWAuIENhbGxzIGBjYWxsYmFja2BcbiAqIG9uY2UgdGhlIGB3b3JrZXJgIGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0YXNrLiBJbnN0ZWFkIG9mIGEgc2luZ2xlIHRhc2ssXG4gKiBhIGB0YXNrc2AgYXJyYXkgY2FuIGJlIHN1Ym1pdHRlZC4gVGhlIHJlc3BlY3RpdmUgY2FsbGJhY2sgaXMgdXNlZCBmb3IgZXZlcnlcbiAqIHRhc2sgaW4gdGhlIGxpc3QuIEludm9rZSB3aXRoIGBxdWV1ZS5wdXNoKHRhc2ssIFtjYWxsYmFja10pYCxcbiAqIEBwcm9wZXJ0eSB7QXN5bmNGdW5jdGlvbn0gdW5zaGlmdCAtIGFkZCBhIG5ldyB0YXNrIHRvIHRoZSBmcm9udCBvZiB0aGUgYHF1ZXVlYC5cbiAqIEludm9rZSB3aXRoIGBxdWV1ZS51bnNoaWZ0KHRhc2ssIFtjYWxsYmFja10pYC5cbiAqIEBwcm9wZXJ0eSB7QXN5bmNGdW5jdGlvbn0gcHVzaEFzeW5jIC0gdGhlIHNhbWUgYXMgYHEucHVzaGAsIGV4Y2VwdCB0aGlzIHJldHVybnNcbiAqIGEgcHJvbWlzZSB0aGF0IHJlamVjdHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICogQHByb3BlcnR5IHtBc3luY0Z1bmN0aW9ufSB1bnNoaWZ0QXN5bmMgLSB0aGUgc2FtZSBhcyBgcS51bnNoaWZ0YCwgZXhjZXB0IHRoaXMgcmV0dXJuc1xuICogYSBwcm9taXNlIHRoYXQgcmVqZWN0cyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSByZW1vdmUgLSByZW1vdmUgaXRlbXMgZnJvbSB0aGUgcXVldWUgdGhhdCBtYXRjaCBhIHRlc3RcbiAqIGZ1bmN0aW9uLiAgVGhlIHRlc3QgZnVuY3Rpb24gd2lsbCBiZSBwYXNzZWQgYW4gb2JqZWN0IHdpdGggYSBgZGF0YWAgcHJvcGVydHksXG4gKiBhbmQgYSBgcHJpb3JpdHlgIHByb3BlcnR5LCBpZiB0aGlzIGlzIGFcbiAqIFtwcmlvcml0eVF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucHJpb3JpdHlRdWV1ZX0gb2JqZWN0LlxuICogSW52b2tlZCB3aXRoIGBxdWV1ZS5yZW1vdmUodGVzdEZuKWAsIHdoZXJlIGB0ZXN0Rm5gIGlzIG9mIHRoZSBmb3JtXG4gKiBgZnVuY3Rpb24gKHtkYXRhLCBwcmlvcml0eX0pIHt9YCBhbmQgcmV0dXJucyBhIEJvb2xlYW4uXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzYXR1cmF0ZWQgLSBhIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIGNhbGxiYWNrIHRoYXQgaXNcbiAqIGNhbGxlZCB3aGVuIHRoZSBudW1iZXIgb2YgcnVubmluZyB3b3JrZXJzIGhpdHMgdGhlIGBjb25jdXJyZW5jeWAgbGltaXQsIGFuZFxuICogZnVydGhlciB0YXNrcyB3aWxsIGJlIHF1ZXVlZC4gIElmIHRoZSBjYWxsYmFjayBpcyBvbWl0dGVkLCBgcS5zYXR1cmF0ZWQoKWBcbiAqIHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgbmV4dCBvY2N1cnJlbmNlLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gdW5zYXR1cmF0ZWQgLSBhIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIGNhbGxiYWNrIHRoYXQgaXNcbiAqIGNhbGxlZCB3aGVuIHRoZSBudW1iZXIgb2YgcnVubmluZyB3b3JrZXJzIGlzIGxlc3MgdGhhbiB0aGUgYGNvbmN1cnJlbmN5YCAmXG4gKiBgYnVmZmVyYCBsaW1pdHMsIGFuZCBmdXJ0aGVyIHRhc2tzIHdpbGwgbm90IGJlIHF1ZXVlZC4gSWYgdGhlIGNhbGxiYWNrIGlzXG4gKiBvbWl0dGVkLCBgcS51bnNhdHVyYXRlZCgpYCByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIG5leHQgb2NjdXJyZW5jZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBidWZmZXIgLSBBIG1pbmltdW0gdGhyZXNob2xkIGJ1ZmZlciBpbiBvcmRlciB0byBzYXkgdGhhdFxuICogdGhlIGBxdWV1ZWAgaXMgYHVuc2F0dXJhdGVkYC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGVtcHR5IC0gYSBmdW5jdGlvbiB0aGF0IHNldHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZFxuICogd2hlbiB0aGUgbGFzdCBpdGVtIGZyb20gdGhlIGBxdWV1ZWAgaXMgZ2l2ZW4gdG8gYSBgd29ya2VyYC4gSWYgdGhlIGNhbGxiYWNrXG4gKiBpcyBvbWl0dGVkLCBgcS5lbXB0eSgpYCByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIG5leHQgb2NjdXJyZW5jZS5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGRyYWluIC0gYSBmdW5jdGlvbiB0aGF0IHNldHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZFxuICogd2hlbiB0aGUgbGFzdCBpdGVtIGZyb20gdGhlIGBxdWV1ZWAgaGFzIHJldHVybmVkIGZyb20gdGhlIGB3b3JrZXJgLiBJZiB0aGVcbiAqIGNhbGxiYWNrIGlzIG9taXR0ZWQsIGBxLmRyYWluKClgIHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgbmV4dCBvY2N1cnJlbmNlLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZXJyb3IgLSBhIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkXG4gKiB3aGVuIGEgdGFzayBlcnJvcnMuIEhhcyB0aGUgc2lnbmF0dXJlIGBmdW5jdGlvbihlcnJvciwgdGFzaylgLiBJZiB0aGVcbiAqIGNhbGxiYWNrIGlzIG9taXR0ZWQsIGBlcnJvcigpYCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlamVjdHMgb24gdGhlIG5leHRcbiAqIGVycm9yLlxuICogQHByb3BlcnR5IHtib29sZWFufSBwYXVzZWQgLSBhIGJvb2xlYW4gZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIHF1ZXVlIGlzXG4gKiBpbiBhIHBhdXNlZCBzdGF0ZS5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHBhdXNlIC0gYSBmdW5jdGlvbiB0aGF0IHBhdXNlcyB0aGUgcHJvY2Vzc2luZyBvZiB0YXNrc1xuICogdW50aWwgYHJlc3VtZSgpYCBpcyBjYWxsZWQuIEludm9rZSB3aXRoIGBxdWV1ZS5wYXVzZSgpYC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHJlc3VtZSAtIGEgZnVuY3Rpb24gdGhhdCByZXN1bWVzIHRoZSBwcm9jZXNzaW5nIG9mXG4gKiBxdWV1ZWQgdGFza3Mgd2hlbiB0aGUgcXVldWUgaXMgcGF1c2VkLiBJbnZva2Ugd2l0aCBgcXVldWUucmVzdW1lKClgLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0ga2lsbCAtIGEgZnVuY3Rpb24gdGhhdCByZW1vdmVzIHRoZSBgZHJhaW5gIGNhbGxiYWNrIGFuZFxuICogZW1wdGllcyByZW1haW5pbmcgdGFza3MgZnJvbSB0aGUgcXVldWUgZm9yY2luZyBpdCB0byBnbyBpZGxlLiBObyBtb3JlIHRhc2tzXG4gKiBzaG91bGQgYmUgcHVzaGVkIHRvIHRoZSBxdWV1ZSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIEludm9rZSB3aXRoIGBxdWV1ZS5raWxsKClgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBxID0gYXN5bmMucXVldWUod29ya2VyLCAyKVxuICogcS5wdXNoKGl0ZW0xKVxuICogcS5wdXNoKGl0ZW0yKVxuICogcS5wdXNoKGl0ZW0zKVxuICogLy8gcXVldWVzIGFyZSBpdGVyYWJsZSwgc3ByZWFkIGludG8gYW4gYXJyYXkgdG8gaW5zcGVjdFxuICogY29uc3QgaXRlbXMgPSBbLi4ucV0gLy8gW2l0ZW0xLCBpdGVtMiwgaXRlbTNdXG4gKiAvLyBvciB1c2UgZm9yIG9mXG4gKiBmb3IgKGxldCBpdGVtIG9mIHEpIHtcbiAqICAgICBjb25zb2xlLmxvZyhpdGVtKVxuICogfVxuICpcbiAqIHEuZHJhaW4oKCkgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKCdhbGwgZG9uZScpXG4gKiB9KVxuICogLy8gb3JcbiAqIGF3YWl0IHEuZHJhaW4oKVxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIGBxdWV1ZWAgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBgY29uY3VycmVuY3lgLiBUYXNrcyBhZGRlZCB0byB0aGVcbiAqIGBxdWV1ZWAgYXJlIHByb2Nlc3NlZCBpbiBwYXJhbGxlbCAodXAgdG8gdGhlIGBjb25jdXJyZW5jeWAgbGltaXQpLiBJZiBhbGxcbiAqIGB3b3JrZXJgcyBhcmUgaW4gcHJvZ3Jlc3MsIHRoZSB0YXNrIGlzIHF1ZXVlZCB1bnRpbCBvbmUgYmVjb21lcyBhdmFpbGFibGUuXG4gKiBPbmNlIGEgYHdvcmtlcmAgY29tcGxldGVzIGEgYHRhc2tgLCB0aGF0IGB0YXNrYCdzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiBAbmFtZSBxdWV1ZVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB3b3JrZXIgLSBBbiBhc3luYyBmdW5jdGlvbiBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlZCB0YXNrLlxuICogSWYgeW91IHdhbnQgdG8gaGFuZGxlIGVycm9ycyBmcm9tIGFuIGluZGl2aWR1YWwgdGFzaywgcGFzcyBhIGNhbGxiYWNrIHRvXG4gKiBgcS5wdXNoKClgLiBJbnZva2VkIHdpdGggKHRhc2ssIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbY29uY3VycmVuY3k9MV0gLSBBbiBgaW50ZWdlcmAgZm9yIGRldGVybWluaW5nIGhvdyBtYW55XG4gKiBgd29ya2VyYCBmdW5jdGlvbnMgc2hvdWxkIGJlIHJ1biBpbiBwYXJhbGxlbC4gIElmIG9taXR0ZWQsIHRoZSBjb25jdXJyZW5jeVxuICogZGVmYXVsdHMgdG8gYDFgLiAgSWYgdGhlIGNvbmN1cnJlbmN5IGlzIGAwYCwgYW4gZXJyb3IgaXMgdGhyb3duLlxuICogQHJldHVybnMge21vZHVsZTpDb250cm9sRmxvdy5RdWV1ZU9iamVjdH0gQSBxdWV1ZSBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gQ2FsbGJhY2tzIGNhbiBiZVxuICogYXR0YWNoZWQgYXMgY2VydGFpbiBwcm9wZXJ0aWVzIHRvIGxpc3RlbiBmb3Igc3BlY2lmaWMgZXZlbnRzIGR1cmluZyB0aGVcbiAqIGxpZmVjeWNsZSBvZiB0aGUgcXVldWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGNvbmN1cnJlbmN5IDJcbiAqIHZhciBxID0gYXN5bmMucXVldWUoZnVuY3Rpb24odGFzaywgY2FsbGJhY2spIHtcbiAqICAgICBjb25zb2xlLmxvZygnaGVsbG8gJyArIHRhc2submFtZSk7XG4gKiAgICAgY2FsbGJhY2soKTtcbiAqIH0sIDIpO1xuICpcbiAqIC8vIGFzc2lnbiBhIGNhbGxiYWNrXG4gKiBxLmRyYWluKGZ1bmN0aW9uKCkge1xuICogICAgIGNvbnNvbGUubG9nKCdhbGwgaXRlbXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCcpO1xuICogfSk7XG4gKiAvLyBvciBhd2FpdCB0aGUgZW5kXG4gKiBhd2FpdCBxLmRyYWluKClcbiAqXG4gKiAvLyBhc3NpZ24gYW4gZXJyb3IgY2FsbGJhY2tcbiAqIHEuZXJyb3IoZnVuY3Rpb24oZXJyLCB0YXNrKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcigndGFzayBleHBlcmllbmNlZCBhbiBlcnJvcicpO1xuICogfSk7XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXMgdG8gdGhlIHF1ZXVlXG4gKiBxLnB1c2goe25hbWU6ICdmb28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgZm9vJyk7XG4gKiB9KTtcbiAqIC8vIGNhbGxiYWNrIGlzIG9wdGlvbmFsXG4gKiBxLnB1c2goe25hbWU6ICdiYXInfSk7XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXMgdG8gdGhlIHF1ZXVlIChiYXRjaC13aXNlKVxuICogcS5wdXNoKFt7bmFtZTogJ2Jheid9LHtuYW1lOiAnYmF5J30se25hbWU6ICdiYXgnfV0sIGZ1bmN0aW9uKGVycikge1xuICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGl0ZW0nKTtcbiAqIH0pO1xuICpcbiAqIC8vIGFkZCBzb21lIGl0ZW1zIHRvIHRoZSBmcm9udCBvZiB0aGUgcXVldWVcbiAqIHEudW5zaGlmdCh7bmFtZTogJ2Jhcid9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gcXVldWUgKHdvcmtlciwgY29uY3VycmVuY3kpIHtcbiAgICB2YXIgX3dvcmtlciA9IHdyYXBBc3luYyh3b3JrZXIpO1xuICAgIHJldHVybiBxdWV1ZSQxKChpdGVtcywgY2IpID0+IHtcbiAgICAgICAgX3dvcmtlcihpdGVtc1swXSwgY2IpO1xuICAgIH0sIGNvbmN1cnJlbmN5LCAxKTtcbn1cblxuLy8gQmluYXJ5IG1pbi1oZWFwIGltcGxlbWVudGF0aW9uIHVzZWQgZm9yIHByaW9yaXR5IHF1ZXVlLlxuLy8gSW1wbGVtZW50YXRpb24gaXMgc3RhYmxlLCBpLmUuIHB1c2ggdGltZSBpcyBjb25zaWRlcmVkIGZvciBlcXVhbCBwcmlvcml0aWVzXG5jbGFzcyBIZWFwIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5oZWFwID0gW107XG4gICAgICAgIHRoaXMucHVzaENvdW50ID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG4gICAgfVxuXG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhcC5sZW5ndGg7XG4gICAgfVxuXG4gICAgZW1wdHkgKCkge1xuICAgICAgICB0aGlzLmhlYXAgPSBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcGVyY1VwKGluZGV4KSB7XG4gICAgICAgIGxldCBwO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA+IDAgJiYgc21hbGxlcih0aGlzLmhlYXBbaW5kZXhdLCB0aGlzLmhlYXBbcD1wYXJlbnQoaW5kZXgpXSkpIHtcbiAgICAgICAgICAgIGxldCB0ID0gdGhpcy5oZWFwW2luZGV4XTtcbiAgICAgICAgICAgIHRoaXMuaGVhcFtpbmRleF0gPSB0aGlzLmhlYXBbcF07XG4gICAgICAgICAgICB0aGlzLmhlYXBbcF0gPSB0O1xuXG4gICAgICAgICAgICBpbmRleCA9IHA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwZXJjRG93bihpbmRleCkge1xuICAgICAgICBsZXQgbDtcblxuICAgICAgICB3aGlsZSAoKGw9bGVmdENoaShpbmRleCkpIDwgdGhpcy5oZWFwLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGwrMSA8IHRoaXMuaGVhcC5sZW5ndGggJiYgc21hbGxlcih0aGlzLmhlYXBbbCsxXSwgdGhpcy5oZWFwW2xdKSkge1xuICAgICAgICAgICAgICAgIGwgPSBsKzE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzbWFsbGVyKHRoaXMuaGVhcFtpbmRleF0sIHRoaXMuaGVhcFtsXSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHQgPSB0aGlzLmhlYXBbaW5kZXhdO1xuICAgICAgICAgICAgdGhpcy5oZWFwW2luZGV4XSA9IHRoaXMuaGVhcFtsXTtcbiAgICAgICAgICAgIHRoaXMuaGVhcFtsXSA9IHQ7XG5cbiAgICAgICAgICAgIGluZGV4ID0gbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1c2gobm9kZSkge1xuICAgICAgICBub2RlLnB1c2hDb3VudCA9ICsrdGhpcy5wdXNoQ291bnQ7XG4gICAgICAgIHRoaXMuaGVhcC5wdXNoKG5vZGUpO1xuICAgICAgICB0aGlzLnBlcmNVcCh0aGlzLmhlYXAubGVuZ3RoLTEpO1xuICAgIH1cblxuICAgIHVuc2hpZnQobm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFwLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgc2hpZnQoKSB7XG4gICAgICAgIGxldCBbdG9wXSA9IHRoaXMuaGVhcDtcblxuICAgICAgICB0aGlzLmhlYXBbMF0gPSB0aGlzLmhlYXBbdGhpcy5oZWFwLmxlbmd0aC0xXTtcbiAgICAgICAgdGhpcy5oZWFwLnBvcCgpO1xuICAgICAgICB0aGlzLnBlcmNEb3duKDApO1xuXG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuXG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgICB9XG5cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0gKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGVhcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5oZWFwW2ldLmRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmUgKHRlc3RGbikge1xuICAgICAgICBsZXQgaiA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5oZWFwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRlc3RGbih0aGlzLmhlYXBbaV0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFwW2pdID0gdGhpcy5oZWFwW2ldO1xuICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGVhcC5zcGxpY2Uoaik7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHBhcmVudCh0aGlzLmhlYXAubGVuZ3RoLTEpOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdGhpcy5wZXJjRG93bihpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbGVmdENoaShpKSB7XG4gICAgcmV0dXJuIChpPDwxKSsxO1xufVxuXG5mdW5jdGlvbiBwYXJlbnQoaSkge1xuICAgIHJldHVybiAoKGkrMSk+PjEpLTE7XG59XG5cbmZ1bmN0aW9uIHNtYWxsZXIoeCwgeSkge1xuICAgIGlmICh4LnByaW9yaXR5ICE9PSB5LnByaW9yaXR5KSB7XG4gICAgICAgIHJldHVybiB4LnByaW9yaXR5IDwgeS5wcmlvcml0eTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB4LnB1c2hDb3VudCA8IHkucHVzaENvdW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYXN5bmMucXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX0gb25seSB0YXNrcyBhcmUgYXNzaWduZWQgYSBwcmlvcml0eSBhbmRcbiAqIGNvbXBsZXRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkgb3JkZXIuXG4gKlxuICogQG5hbWUgcHJpb3JpdHlRdWV1ZVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMucXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmMgZnVuY3Rpb24gZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZWQgdGFzay5cbiAqIElmIHlvdSB3YW50IHRvIGhhbmRsZSBlcnJvcnMgZnJvbSBhbiBpbmRpdmlkdWFsIHRhc2ssIHBhc3MgYSBjYWxsYmFjayB0b1xuICogYHEucHVzaCgpYC5cbiAqIEludm9rZWQgd2l0aCAodGFzaywgY2FsbGJhY2spLlxuICogQHBhcmFtIHtudW1iZXJ9IGNvbmN1cnJlbmN5IC0gQW4gYGludGVnZXJgIGZvciBkZXRlcm1pbmluZyBob3cgbWFueSBgd29ya2VyYFxuICogZnVuY3Rpb25zIHNob3VsZCBiZSBydW4gaW4gcGFyYWxsZWwuICBJZiBvbWl0dGVkLCB0aGUgY29uY3VycmVuY3kgZGVmYXVsdHMgdG9cbiAqIGAxYC4gIElmIHRoZSBjb25jdXJyZW5jeSBpcyBgMGAsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqIEByZXR1cm5zIHttb2R1bGU6Q29udHJvbEZsb3cuUXVldWVPYmplY3R9IEEgcHJpb3JpdHlRdWV1ZSBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gVGhlcmUgYXJlIHRocmVlXG4gKiBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBxdWV1ZWAgYW5kIGBwcmlvcml0eVF1ZXVlYCBvYmplY3RzOlxuICogKiBgcHVzaCh0YXNrLCBwcmlvcml0eSwgW2NhbGxiYWNrXSlgIC0gYHByaW9yaXR5YCBzaG91bGQgYmUgYSBudW1iZXIuIElmIGFuXG4gKiAgIGFycmF5IG9mIGB0YXNrc2AgaXMgZ2l2ZW4sIGFsbCB0YXNrcyB3aWxsIGJlIGFzc2lnbmVkIHRoZSBzYW1lIHByaW9yaXR5LlxuICogKiBgcHVzaEFzeW5jKHRhc2ssIHByaW9yaXR5LCBbY2FsbGJhY2tdKWAgLSB0aGUgc2FtZSBhcyBgcHJpb3JpdHlRdWV1ZS5wdXNoYCxcbiAqICAgZXhjZXB0IHRoaXMgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZWplY3RzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAqICogVGhlIGB1bnNoaWZ0YCBhbmQgYHVuc2hpZnRBc3luY2AgbWV0aG9kcyB3ZXJlIHJlbW92ZWQuXG4gKi9cbmZ1bmN0aW9uIHByaW9yaXR5UXVldWUod29ya2VyLCBjb25jdXJyZW5jeSkge1xuICAgIC8vIFN0YXJ0IHdpdGggYSBub3JtYWwgcXVldWVcbiAgICB2YXIgcSA9IHF1ZXVlKHdvcmtlciwgY29uY3VycmVuY3kpO1xuXG4gICAgdmFyIHtcbiAgICAgICAgcHVzaCxcbiAgICAgICAgcHVzaEFzeW5jXG4gICAgfSA9IHE7XG5cbiAgICBxLl90YXNrcyA9IG5ldyBIZWFwKCk7XG4gICAgcS5fY3JlYXRlVGFza0l0ZW0gPSAoe2RhdGEsIHByaW9yaXR5fSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwcmlvcml0eSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGFJdGVtcyh0YXNrcywgcHJpb3JpdHkpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtkYXRhOiB0YXNrcywgcHJpb3JpdHl9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXNrcy5tYXAoZGF0YSA9PiB7IHJldHVybiB7ZGF0YSwgcHJpb3JpdHl9OyB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSBwdXNoIHRvIGFjY2VwdCBzZWNvbmQgcGFyYW1ldGVyIHJlcHJlc2VudGluZyBwcmlvcml0eVxuICAgIHEucHVzaCA9IGZ1bmN0aW9uKGRhdGEsIHByaW9yaXR5ID0gMCwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHB1c2goY3JlYXRlRGF0YUl0ZW1zKGRhdGEsIHByaW9yaXR5KSwgY2FsbGJhY2spO1xuICAgIH07XG5cbiAgICBxLnB1c2hBc3luYyA9IGZ1bmN0aW9uKGRhdGEsIHByaW9yaXR5ID0gMCwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHB1c2hBc3luYyhjcmVhdGVEYXRhSXRlbXMoZGF0YSwgcHJpb3JpdHkpLCBjYWxsYmFjayk7XG4gICAgfTtcblxuICAgIC8vIFJlbW92ZSB1bnNoaWZ0IGZ1bmN0aW9uc1xuICAgIGRlbGV0ZSBxLnVuc2hpZnQ7XG4gICAgZGVsZXRlIHEudW5zaGlmdEFzeW5jO1xuXG4gICAgcmV0dXJuIHE7XG59XG5cbi8qKlxuICogUnVucyB0aGUgYHRhc2tzYCBhcnJheSBvZiBmdW5jdGlvbnMgaW4gcGFyYWxsZWwsIHdpdGhvdXQgd2FpdGluZyB1bnRpbCB0aGVcbiAqIHByZXZpb3VzIGZ1bmN0aW9uIGhhcyBjb21wbGV0ZWQuIE9uY2UgYW55IG9mIHRoZSBgdGFza3NgIGNvbXBsZXRlIG9yIHBhc3MgYW5cbiAqIGVycm9yIHRvIGl0cyBjYWxsYmFjaywgdGhlIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseSBjYWxsZWQuIEl0J3NcbiAqIGVxdWl2YWxlbnQgdG8gYFByb21pc2UucmFjZSgpYC5cbiAqXG4gKiBAbmFtZSByYWNlXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FycmF5fSB0YXNrcyAtIEFuIGFycmF5IGNvbnRhaW5pbmcgW2FzeW5jIGZ1bmN0aW9uc117QGxpbmsgQXN5bmNGdW5jdGlvbn1cbiAqIHRvIHJ1bi4gRWFjaCBmdW5jdGlvbiBjYW4gY29tcGxldGUgd2l0aCBhbiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gQSBjYWxsYmFjayB0byBydW4gb25jZSBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBoYXZlXG4gKiBjb21wbGV0ZWQuIFRoaXMgZnVuY3Rpb24gZ2V0cyBhbiBlcnJvciBvciByZXN1bHQgZnJvbSB0aGUgZmlyc3QgZnVuY3Rpb24gdGhhdFxuICogY29tcGxldGVkLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgb21pdHRlZFxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5yYWNlKFtcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICogICAgICAgICB9LCAyMDApO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiBdLFxuICogLy8gbWFpbiBjYWxsYmFja1xuICogZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyB0aGUgcmVzdWx0IHdpbGwgYmUgZXF1YWwgdG8gJ3R3bycgYXMgaXQgZmluaXNoZXMgZWFybGllclxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIHJhY2UodGFza3MsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFza3MpKSByZXR1cm4gY2FsbGJhY2sobmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgdG8gcmFjZSBtdXN0IGJlIGFuIGFycmF5IG9mIGZ1bmN0aW9ucycpKTtcbiAgICBpZiAoIXRhc2tzLmxlbmd0aCkgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0YXNrcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgd3JhcEFzeW5jKHRhc2tzW2ldKShjYWxsYmFjayk7XG4gICAgfVxufVxuXG52YXIgcmFjZSQxID0gYXdhaXRpZnkocmFjZSwgMik7XG5cbi8qKlxuICogU2FtZSBhcyBbYHJlZHVjZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWR1Y2V9LCBvbmx5IG9wZXJhdGVzIG9uIGBhcnJheWAgaW4gcmV2ZXJzZSBvcmRlci5cbiAqXG4gKiBAbmFtZSByZWR1Y2VSaWdodFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMucmVkdWNlXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVkdWNlfVxuICogQGFsaWFzIGZvbGRyXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsqfSBtZW1vIC0gVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICogYXJyYXkgdG8gcHJvZHVjZSB0aGUgbmV4dCBzdGVwIGluIHRoZSByZWR1Y3Rpb24uXG4gKiBUaGUgYGl0ZXJhdGVlYCBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgbmV4dCBzdGF0ZSBvZiB0aGUgcmVkdWN0aW9uLlxuICogSWYgdGhlIGl0ZXJhdGVlIGNvbXBsZXRlcyB3aXRoIGFuIGVycm9yLCB0aGUgcmVkdWN0aW9uIGlzIHN0b3BwZWQgYW5kIHRoZVxuICogbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSBlcnJvci5cbiAqIEludm9rZWQgd2l0aCAobWVtbywgaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgcmVkdWNlZCB2YWx1ZS4gSW52b2tlZCB3aXRoXG4gKiAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZVJpZ2h0IChhcnJheSwgbWVtbywgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHJldmVyc2VkID0gWy4uLmFycmF5XS5yZXZlcnNlKCk7XG4gICAgcmV0dXJuIHJlZHVjZSQxKHJldmVyc2VkLCBtZW1vLCBpdGVyYXRlZSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFdyYXBzIHRoZSBhc3luYyBmdW5jdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIGNvbXBsZXRlcyB3aXRoIGFcbiAqIHJlc3VsdCBvYmplY3QsIGV2ZW4gd2hlbiBpdCBlcnJvcnMuXG4gKlxuICogVGhlIHJlc3VsdCBvYmplY3QgaGFzIGVpdGhlciB0aGUgcHJvcGVydHkgYGVycm9yYCBvciBgdmFsdWVgLlxuICpcbiAqIEBuYW1lIHJlZmxlY3RcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHlvdSB3YW50IHRvIHdyYXBcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gLSBBIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIHBhc3NlcyBudWxsIHRvIGl0J3MgY2FsbGJhY2sgYXNcbiAqIHRoZSBlcnJvci4gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgY2FsbGJhY2sgd2lsbCBiZSBhbiBgb2JqZWN0YCB3aXRoXG4gKiBlaXRoZXIgYW4gYGVycm9yYCBvciBhIGB2YWx1ZWAgcHJvcGVydHkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLnBhcmFsbGVsKFtcbiAqICAgICBhc3luYy5yZWZsZWN0KGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIGRvIHNvbWUgc3R1ZmYgLi4uXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAqICAgICB9KSxcbiAqICAgICBhc3luYy5yZWZsZWN0KGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIGRvIHNvbWUgbW9yZSBzdHVmZiBidXQgZXJyb3IgLi4uXG4gKiAgICAgICAgIGNhbGxiYWNrKCdiYWQgc3R1ZmYgaGFwcGVuZWQnKTtcbiAqICAgICB9KSxcbiAqICAgICBhc3luYy5yZWZsZWN0KGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIGRvIHNvbWUgbW9yZSBzdHVmZiAuLi5cbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgIH0pXG4gKiBdLFxuICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHZhbHVlc1xuICogICAgIC8vIHJlc3VsdHNbMF0udmFsdWUgPSAnb25lJ1xuICogICAgIC8vIHJlc3VsdHNbMV0uZXJyb3IgPSAnYmFkIHN0dWZmIGhhcHBlbmVkJ1xuICogICAgIC8vIHJlc3VsdHNbMl0udmFsdWUgPSAndHdvJ1xuICogfSk7XG4gKi9cbmZ1bmN0aW9uIHJlZmxlY3QoZm4pIHtcbiAgICB2YXIgX2ZuID0gd3JhcEFzeW5jKGZuKTtcbiAgICByZXR1cm4gaW5pdGlhbFBhcmFtcyhmdW5jdGlvbiByZWZsZWN0T24oYXJncywgcmVmbGVjdENhbGxiYWNrKSB7XG4gICAgICAgIGFyZ3MucHVzaCgoZXJyb3IsIC4uLmNiQXJncykgPT4ge1xuICAgICAgICAgICAgbGV0IHJldFZhbCA9IHt9O1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2JBcmdzLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNiQXJncztcbiAgICAgICAgICAgICAgICBpZiAoY2JBcmdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV0gPSBjYkFyZ3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmbGVjdENhbGxiYWNrKG51bGwsIHJldFZhbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBfZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3cmFwcyBhbiBhcnJheSBvciBhbiBvYmplY3Qgb2YgZnVuY3Rpb25zIHdpdGggYHJlZmxlY3RgLlxuICpcbiAqIEBuYW1lIHJlZmxlY3RBbGxcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJlZmxlY3Rde0BsaW5rIG1vZHVsZTpVdGlscy5yZWZsZWN0fVxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fEl0ZXJhYmxlfSB0YXNrcyAtIFRoZSBjb2xsZWN0aW9uIG9mXG4gKiBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufSB0byB3cmFwIGluIGBhc3luYy5yZWZsZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBhc3luYyBmdW5jdGlvbnMsIGVhY2ggd3JhcHBlZCBpblxuICogYGFzeW5jLnJlZmxlY3RgXG4gKiBAZXhhbXBsZVxuICpcbiAqIGxldCB0YXNrcyA9IFtcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICogICAgICAgICB9LCAyMDApO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gZG8gc29tZSBtb3JlIHN0dWZmIGJ1dCBlcnJvciAuLi5cbiAqICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdiYWQgc3R1ZmYgaGFwcGVuZWQnKSk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgICAgICB9LCAxMDApO1xuICogICAgIH1cbiAqIF07XG4gKlxuICogYXN5bmMucGFyYWxsZWwoYXN5bmMucmVmbGVjdEFsbCh0YXNrcyksXG4gKiAvLyBvcHRpb25hbCBjYWxsYmFja1xuICogZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgLy8gdmFsdWVzXG4gKiAgICAgLy8gcmVzdWx0c1swXS52YWx1ZSA9ICdvbmUnXG4gKiAgICAgLy8gcmVzdWx0c1sxXS5lcnJvciA9IEVycm9yKCdiYWQgc3R1ZmYgaGFwcGVuZWQnKVxuICogICAgIC8vIHJlc3VsdHNbMl0udmFsdWUgPSAndHdvJ1xuICogfSk7XG4gKlxuICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICogbGV0IHRhc2tzID0ge1xuICogICAgIG9uZTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgY2FsbGJhY2soJ3R3bycpO1xuICogICAgIH0sXG4gKiAgICAgdGhyZWU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndGhyZWUnKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9O1xuICpcbiAqIGFzeW5jLnBhcmFsbGVsKGFzeW5jLnJlZmxlY3RBbGwodGFza3MpLFxuICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHZhbHVlc1xuICogICAgIC8vIHJlc3VsdHMub25lLnZhbHVlID0gJ29uZSdcbiAqICAgICAvLyByZXN1bHRzLnR3by5lcnJvciA9ICd0d28nXG4gKiAgICAgLy8gcmVzdWx0cy50aHJlZS52YWx1ZSA9ICd0aHJlZSdcbiAqIH0pO1xuICovXG5mdW5jdGlvbiByZWZsZWN0QWxsKHRhc2tzKSB7XG4gICAgdmFyIHJlc3VsdHM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFza3MpKSB7XG4gICAgICAgIHJlc3VsdHMgPSB0YXNrcy5tYXAocmVmbGVjdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0cyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0YXNrcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVmbGVjdC5jYWxsKHRoaXMsIHRhc2tzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHJlamVjdCQyKGVhY2hmbiwgYXJyLCBfaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgaXRlcmF0ZWUgPSB3cmFwQXN5bmMoX2l0ZXJhdGVlKTtcbiAgICByZXR1cm4gX2ZpbHRlcihlYWNoZm4sIGFyciwgKHZhbHVlLCBjYikgPT4ge1xuICAgICAgICBpdGVyYXRlZSh2YWx1ZSwgKGVyciwgdikgPT4ge1xuICAgICAgICAgICAgY2IoZXJyLCAhdik7XG4gICAgICAgIH0pO1xuICAgIH0sIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiBUaGUgb3Bwb3NpdGUgb2YgW2BmaWx0ZXJgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfS4gUmVtb3ZlcyB2YWx1ZXMgdGhhdCBwYXNzIGFuIGBhc3luY2AgdHJ1dGggdGVzdC5cbiAqXG4gKiBAbmFtZSByZWplY3RcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmZpbHRlcl17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICogLy8gZGlyMiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUzLnR4dCwgZmlsZTQudHh0XG4gKiAvLyBkaXIzIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTUudHh0XG4gKlxuICogY29uc3QgZmlsZUxpc3QgPSBbJ2RpcjEvZmlsZTEudHh0JywnZGlyMi9maWxlMy50eHQnLCdkaXIzL2ZpbGU2LnR4dCddO1xuICpcbiAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIGZpbGUgZXhpc3RzXG4gKiBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICBmcy5hY2Nlc3MoZmlsZSwgZnMuY29uc3RhbnRzLkZfT0ssIChlcnIpID0+IHtcbiAqICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKTtcbiAqICAgIH0pO1xuICogfVxuICpcbiAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICogYXN5bmMucmVqZWN0KGZpbGVMaXN0LCBmaWxlRXhpc3RzLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgIC8vIFsgJ2RpcjMvZmlsZTYudHh0JyBdXG4gKiAgICAvLyByZXN1bHRzIG5vdyBlcXVhbHMgYW4gYXJyYXkgb2YgdGhlIG5vbi1leGlzdGluZyBmaWxlc1xuICogfSk7XG4gKlxuICogLy8gVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLnJlamVjdChmaWxlTGlzdCwgZmlsZUV4aXN0cylcbiAqIC50aGVuKCByZXN1bHRzID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAvLyBbICdkaXIzL2ZpbGU2LnR4dCcgXVxuICogICAgIC8vIHJlc3VsdHMgbm93IGVxdWFscyBhbiBhcnJheSBvZiB0aGUgbm9uLWV4aXN0aW5nIGZpbGVzXG4gKiB9KS5jYXRjaCggZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLnJlamVjdChmaWxlTGlzdCwgZmlsZUV4aXN0cyk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgICAvLyBbICdkaXIzL2ZpbGU2LnR4dCcgXVxuICogICAgICAgICAvLyByZXN1bHRzIG5vdyBlcXVhbHMgYW4gYXJyYXkgb2YgdGhlIG5vbi1leGlzdGluZyBmaWxlc1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gcmVqZWN0IChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gcmVqZWN0JDIoZWFjaE9mJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cbnZhciByZWplY3QkMSA9IGF3YWl0aWZ5KHJlamVjdCwgMyk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2ByZWplY3RgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVqZWN0fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgcmVqZWN0TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJlamVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnJlamVjdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKi9cbmZ1bmN0aW9uIHJlamVjdExpbWl0IChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHJlamVjdCQyKGVhY2hPZkxpbWl0JDIobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgcmVqZWN0TGltaXQkMSA9IGF3YWl0aWZ5KHJlamVjdExpbWl0LCA0KTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYHJlamVjdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWplY3R9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSByZWplY3RTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJlamVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnJlamVjdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKi9cbmZ1bmN0aW9uIHJlamVjdFNlcmllcyAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHJlamVjdCQyKGVhY2hPZlNlcmllcyQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgcmVqZWN0U2VyaWVzJDEgPSBhd2FpdGlmeShyZWplY3RTZXJpZXMsIDMpO1xuXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gZ2V0IGEgc3VjY2Vzc2Z1bCByZXNwb25zZSBmcm9tIGB0YXNrYCBubyBtb3JlIHRoYW4gYHRpbWVzYCB0aW1lc1xuICogYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gSWYgdGhlIHRhc2sgaXMgc3VjY2Vzc2Z1bCwgdGhlIGBjYWxsYmFja2Agd2lsbCBiZVxuICogcGFzc2VkIHRoZSByZXN1bHQgb2YgdGhlIHN1Y2Nlc3NmdWwgdGFzay4gSWYgYWxsIGF0dGVtcHRzIGZhaWwsIHRoZSBjYWxsYmFja1xuICogd2lsbCBiZSBwYXNzZWQgdGhlIGVycm9yIGFuZCByZXN1bHQgKGlmIGFueSkgb2YgdGhlIGZpbmFsIGF0dGVtcHQuXG4gKlxuICogQG5hbWUgcmV0cnlcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBzZWUgW2FzeW5jLnJldHJ5YWJsZV17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnJldHJ5YWJsZX1cbiAqIEBwYXJhbSB7T2JqZWN0fG51bWJlcn0gW29wdHMgPSB7dGltZXM6IDUsIGludGVydmFsOiAwfXwgNV0gLSBDYW4gYmUgZWl0aGVyIGFuXG4gKiBvYmplY3Qgd2l0aCBgdGltZXNgIGFuZCBgaW50ZXJ2YWxgIG9yIGEgbnVtYmVyLlxuICogKiBgdGltZXNgIC0gVGhlIG51bWJlciBvZiBhdHRlbXB0cyB0byBtYWtlIGJlZm9yZSBnaXZpbmcgdXAuICBUaGUgZGVmYXVsdFxuICogICBpcyBgNWAuXG4gKiAqIGBpbnRlcnZhbGAgLSBUaGUgdGltZSB0byB3YWl0IGJldHdlZW4gcmV0cmllcywgaW4gbWlsbGlzZWNvbmRzLiAgVGhlXG4gKiAgIGRlZmF1bHQgaXMgYDBgLiBUaGUgaW50ZXJ2YWwgbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGEgZnVuY3Rpb24gb2YgdGhlXG4gKiAgIHJldHJ5IGNvdW50IChzZWUgZXhhbXBsZSkuXG4gKiAqIGBlcnJvckZpbHRlcmAgLSBBbiBvcHRpb25hbCBzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGlzIGludm9rZWQgb25cbiAqICAgZXJyb25lb3VzIHJlc3VsdC4gSWYgaXQgcmV0dXJucyBgdHJ1ZWAgdGhlIHJldHJ5IGF0dGVtcHRzIHdpbGwgY29udGludWU7XG4gKiAgIGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAgdGhlIHJldHJ5IGZsb3cgaXMgYWJvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gKiAgIGF0dGVtcHQncyBlcnJvciBhbmQgcmVzdWx0IGJlaW5nIHJldHVybmVkIHRvIHRoZSBmaW5hbCBjYWxsYmFjay5cbiAqICAgSW52b2tlZCB3aXRoIChlcnIpLlxuICogKiBJZiBgb3B0c2AgaXMgYSBudW1iZXIsIHRoZSBudW1iZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnksXG4gKiAgIHdpdGggdGhlIGRlZmF1bHQgaW50ZXJ2YWwgb2YgYDBgLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB0YXNrIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gcmV0cnkuXG4gKiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBvcHRpb25hbCBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGVcbiAqIHRhc2sgaGFzIHN1Y2NlZWRlZCwgb3IgYWZ0ZXIgdGhlIGZpbmFsIGZhaWxlZCBhdHRlbXB0LiBJdCByZWNlaXZlcyB0aGUgYGVycmBcbiAqIGFuZCBgcmVzdWx0YCBhcmd1bWVudHMgb2YgdGhlIGxhc3QgYXR0ZW1wdCBhdCBjb21wbGV0aW5nIHRoZSBgdGFza2AuIEludm9rZWRcbiAqIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBUaGUgYHJldHJ5YCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHN0YW5kLWFsb25lIGNvbnRyb2wgZmxvdyBieSBwYXNzaW5nXG4gKiAvLyBhIGNhbGxiYWNrLCBhcyBzaG93biBiZWxvdzpcbiAqXG4gKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgMyB0aW1lc1xuICogYXN5bmMucmV0cnkoMywgYXBpTWV0aG9kLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHRcbiAqIH0pO1xuICpcbiAqIC8vIHRyeSBjYWxsaW5nIGFwaU1ldGhvZCAzIHRpbWVzLCB3YWl0aW5nIDIwMCBtcyBiZXR3ZWVuIGVhY2ggcmV0cnlcbiAqIGFzeW5jLnJldHJ5KHt0aW1lczogMywgaW50ZXJ2YWw6IDIwMH0sIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gKiB9KTtcbiAqXG4gKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgMTAgdGltZXMgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmXG4gKiAvLyAoaS5lLiBpbnRlcnZhbHMgb2YgMTAwLCAyMDAsIDQwMCwgODAwLCAxNjAwLCAuLi4gbWlsbGlzZWNvbmRzKVxuICogYXN5bmMucmV0cnkoe1xuICogICB0aW1lczogMTAsXG4gKiAgIGludGVydmFsOiBmdW5jdGlvbihyZXRyeUNvdW50KSB7XG4gKiAgICAgcmV0dXJuIDUwICogTWF0aC5wb3coMiwgcmV0cnlDb3VudCk7XG4gKiAgIH1cbiAqIH0sIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gKiB9KTtcbiAqXG4gKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgdGhlIGRlZmF1bHQgNSB0aW1lcyBubyBkZWxheSBiZXR3ZWVuIGVhY2ggcmV0cnlcbiAqIGFzeW5jLnJldHJ5KGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gKiB9KTtcbiAqXG4gKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2Qgb25seSB3aGVuIGVycm9yIGNvbmRpdGlvbiBzYXRpc2ZpZXMsIGFsbCBvdGhlclxuICogLy8gZXJyb3JzIHdpbGwgYWJvcnQgdGhlIHJldHJ5IGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHRvIGZpbmFsIGNhbGxiYWNrXG4gKiBhc3luYy5yZXRyeSh7XG4gKiAgIGVycm9yRmlsdGVyOiBmdW5jdGlvbihlcnIpIHtcbiAqICAgICByZXR1cm4gZXJyLm1lc3NhZ2UgPT09ICdUZW1wb3JhcnkgZXJyb3InOyAvLyBvbmx5IHJldHJ5IG9uIGEgc3BlY2lmaWMgZXJyb3JcbiAqICAgfVxuICogfSwgYXBpTWV0aG9kLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHRcbiAqIH0pO1xuICpcbiAqIC8vIHRvIHJldHJ5IGluZGl2aWR1YWwgbWV0aG9kcyB0aGF0IGFyZSBub3QgYXMgcmVsaWFibGUgd2l0aGluIG90aGVyXG4gKiAvLyBjb250cm9sIGZsb3cgZnVuY3Rpb25zLCB1c2UgdGhlIGByZXRyeWFibGVgIHdyYXBwZXI6XG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICB1c2VyczogYXBpLmdldFVzZXJzLmJpbmQoYXBpKSxcbiAqICAgICBwYXltZW50czogYXN5bmMucmV0cnlhYmxlKDMsIGFwaS5nZXRQYXltZW50cy5iaW5kKGFwaSkpXG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0c1xuICogfSk7XG4gKlxuICovXG5jb25zdCBERUZBVUxUX1RJTUVTID0gNTtcbmNvbnN0IERFRkFVTFRfSU5URVJWQUwgPSAwO1xuXG5mdW5jdGlvbiByZXRyeShvcHRzLCB0YXNrLCBjYWxsYmFjaykge1xuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICB0aW1lczogREVGQVVMVF9USU1FUyxcbiAgICAgICAgaW50ZXJ2YWxGdW5jOiBjb25zdGFudChERUZBVUxUX0lOVEVSVkFMKVxuICAgIH07XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMgJiYgdHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2FsbGJhY2sgPSB0YXNrIHx8IHByb21pc2VDYWxsYmFjaygpO1xuICAgICAgICB0YXNrID0gb3B0cztcbiAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZVRpbWVzKG9wdGlvbnMsIG9wdHMpO1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IHByb21pc2VDYWxsYmFjaygpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGFzayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgYXN5bmMucmV0cnlcIik7XG4gICAgfVxuXG4gICAgdmFyIF90YXNrID0gd3JhcEFzeW5jKHRhc2spO1xuXG4gICAgdmFyIGF0dGVtcHQgPSAxO1xuICAgIGZ1bmN0aW9uIHJldHJ5QXR0ZW1wdCgpIHtcbiAgICAgICAgX3Rhc2soKGVyciwgLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVyblxuICAgICAgICAgICAgaWYgKGVyciAmJiBhdHRlbXB0KysgPCBvcHRpb25zLnRpbWVzICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBvcHRpb25zLmVycm9yRmlsdGVyICE9ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5lcnJvckZpbHRlcihlcnIpKSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmV0cnlBdHRlbXB0LCBvcHRpb25zLmludGVydmFsRnVuYyhhdHRlbXB0IC0gMSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXRyeUF0dGVtcHQoKTtcbiAgICByZXR1cm4gY2FsbGJhY2tbUFJPTUlTRV9TWU1CT0xdXG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZXMoYWNjLCB0KSB7XG4gICAgaWYgKHR5cGVvZiB0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBhY2MudGltZXMgPSArdC50aW1lcyB8fCBERUZBVUxUX1RJTUVTO1xuXG4gICAgICAgIGFjYy5pbnRlcnZhbEZ1bmMgPSB0eXBlb2YgdC5pbnRlcnZhbCA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICB0LmludGVydmFsIDpcbiAgICAgICAgICAgIGNvbnN0YW50KCt0LmludGVydmFsIHx8IERFRkFVTFRfSU5URVJWQUwpO1xuXG4gICAgICAgIGFjYy5lcnJvckZpbHRlciA9IHQuZXJyb3JGaWx0ZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFjYy50aW1lcyA9ICt0IHx8IERFRkFVTFRfVElNRVM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgZm9yIGFzeW5jLnJldHJ5XCIpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIGNsb3NlIHJlbGF0aXZlIG9mIFtgcmV0cnlgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucmV0cnl9LiAgVGhpcyBtZXRob2RcbiAqIHdyYXBzIGEgdGFzayBhbmQgbWFrZXMgaXQgcmV0cnlhYmxlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBjYWxsaW5nIGl0XG4gKiB3aXRoIHJldHJpZXMuXG4gKlxuICogQG5hbWUgcmV0cnlhYmxlXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5yZXRyeV17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnJldHJ5fVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtPYmplY3R8bnVtYmVyfSBbb3B0cyA9IHt0aW1lczogNSwgaW50ZXJ2YWw6IDB9fCA1XSAtIG9wdGlvbmFsXG4gKiBvcHRpb25zLCBleGFjdGx5IHRoZSBzYW1lIGFzIGZyb20gYHJldHJ5YCwgZXhjZXB0IGZvciBhIGBvcHRzLmFyaXR5YCB0aGF0XG4gKiBpcyB0aGUgYXJpdHkgb2YgdGhlIGB0YXNrYCBmdW5jdGlvbiwgZGVmYXVsdGluZyB0byBgdGFzay5sZW5ndGhgXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRhc2sgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIGFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXR1cm5lZCB3cmFwcGVyLlxuICogSW52b2tlZCB3aXRoICguLi5hcmdzLCBjYWxsYmFjaykuXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gVGhlIHdyYXBwZWQgZnVuY3Rpb24sIHdoaWNoIHdoZW4gaW52b2tlZCwgd2lsbFxuICogcmV0cnkgb24gYW4gZXJyb3IsIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXJzIHNwZWNpZmllZCBpbiBgb3B0c2AuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWNjZXB0IHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgYHRhc2tgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICBkZXAxOiBhc3luYy5yZXRyeWFibGUoMywgZ2V0RnJvbUZsYWt5U2VydmljZSksXG4gKiAgICAgcHJvY2VzczogW1wiZGVwMVwiLCBhc3luYy5yZXRyeWFibGUoMywgZnVuY3Rpb24gKHJlc3VsdHMsIGNiKSB7XG4gKiAgICAgICAgIG1heWJlUHJvY2Vzc0RhdGEocmVzdWx0cy5kZXAxLCBjYik7XG4gKiAgICAgfSldXG4gKiB9LCBjYWxsYmFjayk7XG4gKi9cbmZ1bmN0aW9uIHJldHJ5YWJsZSAob3B0cywgdGFzaykge1xuICAgIGlmICghdGFzaykge1xuICAgICAgICB0YXNrID0gb3B0cztcbiAgICAgICAgb3B0cyA9IG51bGw7XG4gICAgfVxuICAgIGxldCBhcml0eSA9IChvcHRzICYmIG9wdHMuYXJpdHkpIHx8IHRhc2subGVuZ3RoO1xuICAgIGlmIChpc0FzeW5jKHRhc2spKSB7XG4gICAgICAgIGFyaXR5ICs9IDE7XG4gICAgfVxuICAgIHZhciBfdGFzayA9IHdyYXBBc3luYyh0YXNrKTtcbiAgICByZXR1cm4gaW5pdGlhbFBhcmFtcygoYXJncywgY2FsbGJhY2spID0+IHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgYXJpdHkgLSAxIHx8IGNhbGxiYWNrID09IG51bGwpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHByb21pc2VDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRhc2tGbihjYikge1xuICAgICAgICAgICAgX3Rhc2soLi4uYXJncywgY2IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMpIHJldHJ5KG9wdHMsIHRhc2tGbiwgY2FsbGJhY2spO1xuICAgICAgICBlbHNlIHJldHJ5KHRhc2tGbiwgY2FsbGJhY2spO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFja1tQUk9NSVNFX1NZTUJPTF1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBSdW4gdGhlIGZ1bmN0aW9ucyBpbiB0aGUgYHRhc2tzYCBjb2xsZWN0aW9uIGluIHNlcmllcywgZWFjaCBvbmUgcnVubmluZyBvbmNlXG4gKiB0aGUgcHJldmlvdXMgZnVuY3Rpb24gaGFzIGNvbXBsZXRlZC4gSWYgYW55IGZ1bmN0aW9ucyBpbiB0aGUgc2VyaWVzIHBhc3MgYW5cbiAqIGVycm9yIHRvIGl0cyBjYWxsYmFjaywgbm8gbW9yZSBmdW5jdGlvbnMgYXJlIHJ1biwgYW5kIGBjYWxsYmFja2AgaXNcbiAqIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgZXJyb3IuIE90aGVyd2lzZSwgYGNhbGxiYWNrYFxuICogcmVjZWl2ZXMgYW4gYXJyYXkgb2YgcmVzdWx0cyB3aGVuIGB0YXNrc2AgaGF2ZSBjb21wbGV0ZWQuXG4gKlxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXkuIEVhY2ggcHJvcGVydHkgd2lsbFxuICogYmUgcnVuIGFzIGEgZnVuY3Rpb24sIGFuZCB0aGUgcmVzdWx0cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgZmluYWwgYGNhbGxiYWNrYFxuICogYXMgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXkuIFRoaXMgY2FuIGJlIGEgbW9yZSByZWFkYWJsZSB3YXkgb2YgaGFuZGxpbmdcbiAqICByZXN1bHRzIGZyb20ge0BsaW5rIGFzeW5jLnNlcmllc30uXG4gKlxuICogKipOb3RlKiogdGhhdCB3aGlsZSBtYW55IGltcGxlbWVudGF0aW9ucyBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2Ygb2JqZWN0XG4gKiBwcm9wZXJ0aWVzLCB0aGUgW0VDTUFTY3JpcHQgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbl0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTguNilcbiAqIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXRcbiAqXG4gKiA+IFRoZSBtZWNoYW5pY3MgYW5kIG9yZGVyIG9mIGVudW1lcmF0aW5nIHRoZSBwcm9wZXJ0aWVzIGlzIG5vdCBzcGVjaWZpZWQuXG4gKlxuICogU28gaWYgeW91IHJlbHkgb24gdGhlIG9yZGVyIGluIHdoaWNoIHlvdXIgc2VyaWVzIG9mIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQsXG4gKiBhbmQgd2FudCB0aGlzIHRvIHdvcmsgb24gYWxsIHBsYXRmb3JtcywgY29uc2lkZXIgdXNpbmcgYW4gYXJyYXkuXG4gKlxuICogQG5hbWUgc2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSB0YXNrcyAtIEEgY29sbGVjdGlvbiBjb250YWluaW5nXG4gKiBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufSB0byBydW4gaW4gc2VyaWVzLlxuICogRWFjaCBmdW5jdGlvbiBjYW4gY29tcGxldGUgd2l0aCBhbnkgbnVtYmVyIG9mIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBvcHRpb25hbCBjYWxsYmFjayB0byBydW4gb25jZSBhbGwgdGhlXG4gKiBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQuIFRoaXMgZnVuY3Rpb24gZ2V0cyBhIHJlc3VsdHMgYXJyYXkgKG9yIG9iamVjdClcbiAqIGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHQgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYHRhc2tgIGNhbGxiYWNrcy4gSW52b2tlZFxuICogd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybiB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy9Vc2luZyBDYWxsYmFja3NcbiAqIGFzeW5jLnNlcmllcyhbXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIC8vIGRvIHNvbWUgYXN5bmMgdGFza1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICogICAgICAgICB9LCAyMDApO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndHdvJyk7XG4gKiAgICAgICAgIH0sIDEwMCk7XG4gKiAgICAgfVxuICogXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0byBbJ29uZScsJ3R3byddXG4gKiB9KTtcbiAqXG4gKiAvLyBhbiBleGFtcGxlIHVzaW5nIG9iamVjdHMgaW5zdGVhZCBvZiBhcnJheXNcbiAqIGFzeW5jLnNlcmllcyh7XG4gKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgLy8gZG8gc29tZSBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvOiB7IG9uZTogMSwgdHdvOiAyIH1cbiAqIH0pO1xuICpcbiAqIC8vVXNpbmcgUHJvbWlzZXNcbiAqIGFzeW5jLnNlcmllcyhbXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndHdvJyk7XG4gKiAgICAgICAgIH0sIDEwMCk7XG4gKiAgICAgfVxuICogXSkudGhlbihyZXN1bHRzID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvIFsnb25lJywndHdvJ11cbiAqIH0pLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIGFuIGV4YW1wbGUgdXNpbmcgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXlcbiAqIGFzeW5jLnNlcmllcyh7XG4gKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgLy8gZG8gc29tZSBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9KS50aGVuKHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG86IHsgb25lOiAxLCB0d286IDIgfVxuICogfSkuY2F0Y2goZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy9Vc2luZyBhc3luYy9hd2FpdFxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMuc2VyaWVzKFtcbiAqICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgICAgICAgICAgLy8gZG8gc29tZSBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAqICAgICAgICAgICAgICAgICB9LCAyMDApO1xuICogICAgICAgICAgICAgfSxcbiAqICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBkbyBhbm90aGVyIGFzeW5jIHRhc2tcbiAqICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gKiAgICAgICAgICAgICB9XG4gKiAgICAgICAgIF0pO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0byBbJ29uZScsJ3R3byddXG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICogYXN5bmMgKCkgPT4ge1xuICogICAgIHRyeSB7XG4gKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMucGFyYWxsZWwoe1xuICogICAgICAgICAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHNvbWUgYXN5bmMgdGFza1xuICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAqICAgICAgICAgICAgICAgICB9LCAyMDApO1xuICogICAgICAgICAgICAgfSxcbiAqICAgICAgICAgICAgdHdvOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gKiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDIpO1xuICogICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gKiAgICAgICAgICAgIH1cbiAqICAgICAgICAgfSk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvOiB7IG9uZTogMSwgdHdvOiAyIH1cbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH1cbiAqIH1cbiAqXG4gKi9cbmZ1bmN0aW9uIHNlcmllcyh0YXNrcywgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX3BhcmFsbGVsKGVhY2hPZlNlcmllcyQxLCB0YXNrcywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSBgY29sbGAgc2F0aXNmaWVzIGFuIGFzeW5jIHRlc3QuXG4gKiBJZiBhbnkgaXRlcmF0ZWUgY2FsbCByZXR1cm5zIGB0cnVlYCwgdGhlIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseVxuICogY2FsbGVkLlxuICpcbiAqIEBuYW1lIHNvbWVcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBhbGlhcyBhbnlcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbVxuICogaW4gdGhlIGNvbGxlY3Rpb25zIGluIHBhcmFsbGVsLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiBgcmVzdWx0YCB2YWx1ZS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFzIHNvb24gYXMgYW55XG4gKiBpdGVyYXRlZSByZXR1cm5zIGB0cnVlYCwgb3IgYWZ0ZXIgYWxsIHRoZSBpdGVyYXRlZSBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAqIFJlc3VsdCB3aWxsIGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiB0aGUgYXN5bmNcbiAqIHRlc3RzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICogLy8gZGlyMiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUzLnR4dCwgZmlsZTQudHh0XG4gKiAvLyBkaXIzIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTUudHh0XG4gKiAvLyBkaXI0IGRvZXMgbm90IGV4aXN0XG4gKlxuICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgZmlsZSBleGlzdHNcbiAqIGZ1bmN0aW9uIGZpbGVFeGlzdHMoZmlsZSwgY2FsbGJhY2spIHtcbiAqICAgIGZzLmFjY2VzcyhmaWxlLCBmcy5jb25zdGFudHMuRl9PSywgKGVycikgPT4ge1xuICogICAgICAgIGNhbGxiYWNrKG51bGwsICFlcnIpO1xuICogICAgfSk7XG4gKiB9XG4gKlxuICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gKiBhc3luYy5zb21lKFsnZGlyMS9taXNzaW5nLnR4dCcsJ2RpcjIvbWlzc2luZy50eHQnLCdkaXIzL2ZpbGU1LnR4dCddLCBmaWxlRXhpc3RzLFxuICogICAgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgIC8vIHRydWVcbiAqICAgICAgICAvLyByZXN1bHQgaXMgdHJ1ZSBzaW5jZSBzb21lIGZpbGUgaW4gdGhlIGxpc3QgZXhpc3RzXG4gKiAgICB9XG4gKik7XG4gKlxuICogYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyNC9taXNzaW5nLnR4dCddLCBmaWxlRXhpc3RzLFxuICogICAgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgIC8vIGZhbHNlXG4gKiAgICAgICAgLy8gcmVzdWx0IGlzIGZhbHNlIHNpbmNlIG5vbmUgb2YgdGhlIGZpbGVzIGV4aXN0c1xuICogICAgfVxuICopO1xuICpcbiAqIC8vIFVzaW5nIFByb21pc2VzXG4gKiBhc3luYy5zb21lKFsnZGlyMS9taXNzaW5nLnR4dCcsJ2RpcjIvbWlzc2luZy50eHQnLCdkaXIzL2ZpbGU1LnR4dCddLCBmaWxlRXhpc3RzKVxuICogLnRoZW4oIHJlc3VsdCA9PiB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAvLyB0cnVlXG4gKiAgICAgLy8gcmVzdWx0IGlzIHRydWUgc2luY2Ugc29tZSBmaWxlIGluIHRoZSBsaXN0IGV4aXN0c1xuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIGFzeW5jLnNvbWUoWydkaXIxL21pc3NpbmcudHh0JywnZGlyMi9taXNzaW5nLnR4dCcsJ2RpcjQvbWlzc2luZy50eHQnXSwgZmlsZUV4aXN0cylcbiAqIC50aGVuKCByZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgLy8gZmFsc2VcbiAqICAgICAvLyByZXN1bHQgaXMgZmFsc2Ugc2luY2Ugbm9uZSBvZiB0aGUgZmlsZXMgZXhpc3RzXG4gKiB9KS5jYXRjaCggZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyMy9maWxlNS50eHQnXSwgZmlsZUV4aXN0cyk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgICAgIC8vIHRydWVcbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIHRydWUgc2luY2Ugc29tZSBmaWxlIGluIHRoZSBsaXN0IGV4aXN0c1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyNC9taXNzaW5nLnR4dCddLCBmaWxlRXhpc3RzKTtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8gZmFsc2VcbiAqICAgICAgICAgLy8gcmVzdWx0IGlzIGZhbHNlIHNpbmNlIG5vbmUgb2YgdGhlIGZpbGVzIGV4aXN0c1xuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfVxuICpcbiAqL1xuZnVuY3Rpb24gc29tZShjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2NyZWF0ZVRlc3RlcihCb29sZWFuLCByZXMgPT4gcmVzKShlYWNoT2YkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIHNvbWUkMSA9IGF3YWl0aWZ5KHNvbWUsIDMpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgc29tZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBzb21lTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnNvbWVde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfVxuICogQGFsaWFzIGFueUxpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW1cbiAqIGluIHRoZSBjb2xsZWN0aW9ucyBpbiBwYXJhbGxlbC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gYHJlc3VsdGAgdmFsdWUuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICogaXRlcmF0ZWUgcmV0dXJucyBgdHJ1ZWAsIG9yIGFmdGVyIGFsbCB0aGUgaXRlcmF0ZWUgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gKiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jXG4gKiB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICovXG5mdW5jdGlvbiBzb21lTGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBfY3JlYXRlVGVzdGVyKEJvb2xlYW4sIHJlcyA9PiByZXMpKGVhY2hPZkxpbWl0JDIobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG52YXIgc29tZUxpbWl0JDEgPSBhd2FpdGlmeShzb21lTGltaXQsIDQpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgc29tZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgc29tZVNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuc29tZV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnNvbWV9XG4gKiBAYWxpYXMgYW55U2VyaWVzXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW1cbiAqIGluIHRoZSBjb2xsZWN0aW9ucyBpbiBzZXJpZXMuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBib29sZWFuIGByZXN1bHRgIHZhbHVlLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGl0ZXJhdGVlIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICogUmVzdWx0IHdpbGwgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luY1xuICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gc29tZVNlcmllcyhjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX2NyZWF0ZVRlc3RlcihCb29sZWFuLCByZXMgPT4gcmVzKShlYWNoT2ZTZXJpZXMkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxufVxudmFyIHNvbWVTZXJpZXMkMSA9IGF3YWl0aWZ5KHNvbWVTZXJpZXMsIDMpO1xuXG4vKipcbiAqIFNvcnRzIGEgbGlzdCBieSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggYGNvbGxgIHZhbHVlIHRocm91Z2ggYW4gYXN5bmNcbiAqIGBpdGVyYXRlZWAuXG4gKlxuICogQG5hbWUgc29ydEJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSB2YWx1ZSB0byB1c2UgYXMgdGhlIHNvcnQgY3JpdGVyaWEgYXNcbiAqIGl0cyBgcmVzdWx0YC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgdGhlIGl0ZW1zXG4gKiBmcm9tIHRoZSBvcmlnaW5hbCBgY29sbGAgc29ydGVkIGJ5IHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGBpdGVyYXRlZWBcbiAqIGNhbGxzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gYmlnZmlsZS50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMjUxMTAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIG1lZGl1bWZpbGUudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDExMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIHNtYWxsZmlsZS50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMTIxIGJ5dGVzIGluIHNpemVcbiAqXG4gKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBmaWxlIHNpemUgaW4gYnl0ZXNcbiAqIGZ1bmN0aW9uIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBjYWxsYmFjaykge1xuICogICAgIGZzLnN0YXQoZmlsZSwgZnVuY3Rpb24oZXJyLCBzdGF0KSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICogICAgICAgICB9XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHN0YXQuc2l6ZSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKlxuICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gKiBhc3luYy5zb3J0QnkoWydtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnLCdiaWdmaWxlLnR4dCddLCBnZXRGaWxlU2l6ZUluQnl0ZXMsXG4gKiAgICAgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgICAgIC8vIHJlc3VsdHMgaXMgbm93IHRoZSBvcmlnaW5hbCBhcnJheSBvZiBmaWxlcyBzb3J0ZWQgYnlcbiAqICAgICAgICAgICAgIC8vIGZpbGUgc2l6ZSAoYXNjZW5kaW5nIGJ5IGRlZmF1bHQpLCBlLmcuXG4gKiAgICAgICAgICAgICAvLyBbICdzbWFsbGZpbGUudHh0JywgJ21lZGl1bWZpbGUudHh0JywgJ2JpZ2ZpbGUudHh0J11cbiAqICAgICAgICAgfVxuICogICAgIH1cbiAqICk7XG4gKlxuICogLy8gQnkgbW9kaWZ5aW5nIHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIgdGhlXG4gKiAvLyBzb3J0aW5nIG9yZGVyIGNhbiBiZSBpbmZsdWVuY2VkOlxuICpcbiAqIC8vIGFzY2VuZGluZyBvcmRlclxuICogYXN5bmMuc29ydEJ5KFsnbWVkaXVtZmlsZS50eHQnLCdzbWFsbGZpbGUudHh0JywnYmlnZmlsZS50eHQnXSwgZnVuY3Rpb24oZmlsZSwgY2FsbGJhY2spIHtcbiAqICAgICBnZXRGaWxlU2l6ZUluQnl0ZXMoZmlsZSwgZnVuY3Rpb24oZ2V0RmlsZVNpemVFcnIsIGZpbGVTaXplKSB7XG4gKiAgICAgICAgIGlmIChnZXRGaWxlU2l6ZUVycikgcmV0dXJuIGNhbGxiYWNrKGdldEZpbGVTaXplRXJyKTtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmlsZVNpemUpO1xuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHtcbiAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgICAgIC8vIHJlc3VsdHMgaXMgbm93IHRoZSBvcmlnaW5hbCBhcnJheSBvZiBmaWxlcyBzb3J0ZWQgYnlcbiAqICAgICAgICAgICAgIC8vIGZpbGUgc2l6ZSAoYXNjZW5kaW5nIGJ5IGRlZmF1bHQpLCBlLmcuXG4gKiAgICAgICAgICAgICAvLyBbICdzbWFsbGZpbGUudHh0JywgJ21lZGl1bWZpbGUudHh0JywgJ2JpZ2ZpbGUudHh0J11cbiAqICAgICAgICAgfVxuICogICAgIH1cbiAqICk7XG4gKlxuICogLy8gZGVzY2VuZGluZyBvcmRlclxuICogYXN5bmMuc29ydEJ5KFsnYmlnZmlsZS50eHQnLCdtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnXSwgZnVuY3Rpb24oZmlsZSwgY2FsbGJhY2spIHtcbiAqICAgICBnZXRGaWxlU2l6ZUluQnl0ZXMoZmlsZSwgZnVuY3Rpb24oZ2V0RmlsZVNpemVFcnIsIGZpbGVTaXplKSB7XG4gKiAgICAgICAgIGlmIChnZXRGaWxlU2l6ZUVycikge1xuICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGdldEZpbGVTaXplRXJyKTtcbiAqICAgICAgICAgfVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCBmaWxlU2l6ZSAqIC0xKTtcbiAqICAgICB9KTtcbiAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICB9IGVsc2Uge1xuICogICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gKiAgICAgICAgICAgICAvLyByZXN1bHRzIGlzIG5vdyB0aGUgb3JpZ2luYWwgYXJyYXkgb2YgZmlsZXMgc29ydGVkIGJ5XG4gKiAgICAgICAgICAgICAvLyBmaWxlIHNpemUgKGFzY2VuZGluZyBieSBkZWZhdWx0KSwgZS5nLlxuICogICAgICAgICAgICAgLy8gWyAnYmlnZmlsZS50eHQnLCAnbWVkaXVtZmlsZS50eHQnLCAnc21hbGxmaWxlLnR4dCddXG4gKiAgICAgICAgIH1cbiAqICAgICB9XG4gKiApO1xuICpcbiAqIC8vIEVycm9yIGhhbmRsaW5nXG4gKiBhc3luYy5zb3J0QnkoWydtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnLCdtaXNzaW5nZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzLFxuICogICAgIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAqICAgICAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgICAgICB9XG4gKiAgICAgfVxuICogKTtcbiAqXG4gKiAvLyBVc2luZyBQcm9taXNlc1xuICogYXN5bmMuc29ydEJ5KFsnbWVkaXVtZmlsZS50eHQnLCdzbWFsbGZpbGUudHh0JywnYmlnZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICogLnRoZW4oIHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogICAgIC8vIHJlc3VsdHMgaXMgbm93IHRoZSBvcmlnaW5hbCBhcnJheSBvZiBmaWxlcyBzb3J0ZWQgYnlcbiAqICAgICAvLyBmaWxlIHNpemUgKGFzY2VuZGluZyBieSBkZWZhdWx0KSwgZS5nLlxuICogICAgIC8vIFsgJ3NtYWxsZmlsZS50eHQnLCAnbWVkaXVtZmlsZS50eHQnLCAnYmlnZmlsZS50eHQnXVxuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIEVycm9yIGhhbmRsaW5nXG4gKiBhc3luYy5zb3J0QnkoWydtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnLCdtaXNzaW5nZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICogLnRoZW4oIHJlc3VsdHMgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICogfSkuY2F0Y2goIGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogfSk7XG4gKlxuICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAqIChhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5zb3J0QnkoWydiaWdmaWxlLnR4dCcsJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCddLCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgdGhlIG9yaWdpbmFsIGFycmF5IG9mIGZpbGVzIHNvcnRlZCBieVxuICogICAgICAgICAvLyBmaWxlIHNpemUgKGFzY2VuZGluZyBieSBkZWZhdWx0KSwgZS5nLlxuICogICAgICAgICAvLyBbICdzbWFsbGZpbGUudHh0JywgJ21lZGl1bWZpbGUudHh0JywgJ2JpZ2ZpbGUudHh0J11cbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgIH1cbiAqIH0pKCk7XG4gKlxuICogLy8gRXJyb3IgaGFuZGxpbmdcbiAqIGFzeW5jICgpID0+IHtcbiAqICAgICB0cnkge1xuICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLnNvcnRCeShbJ21pc3NpbmdmaWxlLnR4dCcsJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCddLCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAqICAgICB9XG4gKiAgICAgY2F0Y2ggKGVycikge1xuICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICogICAgIH1cbiAqIH1cbiAqXG4gKi9cbmZ1bmN0aW9uIHNvcnRCeSAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgcmV0dXJuIG1hcCQxKGNvbGwsICh4LCBpdGVyQ2IpID0+IHtcbiAgICAgICAgX2l0ZXJhdGVlKHgsIChlcnIsIGNyaXRlcmlhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICBpdGVyQ2IoZXJyLCB7dmFsdWU6IHgsIGNyaXRlcmlhfSk7XG4gICAgICAgIH0pO1xuICAgIH0sIChlcnIsIHJlc3VsdHMpID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdHMuc29ydChjb21wYXJhdG9yKS5tYXAodiA9PiB2LnZhbHVlKSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYSwgYiA9IHJpZ2h0LmNyaXRlcmlhO1xuICAgICAgICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDA7XG4gICAgfVxufVxudmFyIHNvcnRCeSQxID0gYXdhaXRpZnkoc29ydEJ5LCAzKTtcblxuLyoqXG4gKiBTZXRzIGEgdGltZSBsaW1pdCBvbiBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24uIElmIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBjYWxsXG4gKiBpdHMgY2FsbGJhY2sgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWlsbGlzZWNvbmRzLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFcbiAqIHRpbWVvdXQgZXJyb3IuIFRoZSBjb2RlIHByb3BlcnR5IGZvciB0aGUgZXJyb3Igb2JqZWN0IHdpbGwgYmUgYCdFVElNRURPVVQnYC5cbiAqXG4gKiBAbmFtZSB0aW1lb3V0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBhc3luY0ZuIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGxpbWl0IGluIHRpbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gVGhlIHNwZWNpZmllZCB0aW1lIGxpbWl0LlxuICogQHBhcmFtIHsqfSBbaW5mb10gLSBBbnkgdmFyaWFibGUgeW91IHdhbnQgYXR0YWNoZWQgKGBzdHJpbmdgLCBgb2JqZWN0YCwgZXRjKVxuICogdG8gdGltZW91dCBFcnJvciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4uXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gUmV0dXJucyBhIHdyYXBwZWQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGFueVxuICogb2YgdGhlIGNvbnRyb2wgZmxvdyBmdW5jdGlvbnMuXG4gKiBJbnZva2UgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgeW91IHdvdWxkIGBhc3luY0Z1bmNgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBteUZ1bmN0aW9uKGZvbywgY2FsbGJhY2spIHtcbiAqICAgICBkb0FzeW5jVGFzayhmb28sIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICogICAgICAgICAvLyBoYW5kbGUgZXJyb3JzXG4gKiAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICpcbiAqICAgICAgICAgLy8gZG8gc29tZSBzdHVmZiAuLi5cbiAqXG4gKiAgICAgICAgIC8vIHJldHVybiBwcm9jZXNzZWQgZGF0YVxuICogICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgZGF0YSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKlxuICogdmFyIHdyYXBwZWQgPSBhc3luYy50aW1lb3V0KG15RnVuY3Rpb24sIDEwMDApO1xuICpcbiAqIC8vIGNhbGwgYHdyYXBwZWRgIGFzIHlvdSB3b3VsZCBgbXlGdW5jdGlvbmBcbiAqIHdyYXBwZWQoeyBiYXI6ICdiYXInIH0sIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICogICAgIC8vIGlmIGBteUZ1bmN0aW9uYCB0YWtlcyA8IDEwMDAgbXMgdG8gZXhlY3V0ZSwgYGVycmBcbiAqICAgICAvLyBhbmQgYGRhdGFgIHdpbGwgaGF2ZSB0aGVpciBleHBlY3RlZCB2YWx1ZXNcbiAqXG4gKiAgICAgLy8gZWxzZSBgZXJyYCB3aWxsIGJlIGFuIEVycm9yIHdpdGggdGhlIGNvZGUgJ0VUSU1FRE9VVCdcbiAqIH0pO1xuICovXG5mdW5jdGlvbiB0aW1lb3V0KGFzeW5jRm4sIG1pbGxpc2Vjb25kcywgaW5mbykge1xuICAgIHZhciBmbiA9IHdyYXBBc3luYyhhc3luY0ZuKTtcblxuICAgIHJldHVybiBpbml0aWFsUGFyYW1zKChhcmdzLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICB2YXIgdGltZWRPdXQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHRpbWVyO1xuXG4gICAgICAgIGZ1bmN0aW9uIHRpbWVvdXRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gYXN5bmNGbi5uYW1lIHx8ICdhbm9ueW1vdXMnO1xuICAgICAgICAgICAgdmFyIGVycm9yICA9IG5ldyBFcnJvcignQ2FsbGJhY2sgZnVuY3Rpb24gXCInICsgbmFtZSArICdcIiB0aW1lZCBvdXQuJyk7XG4gICAgICAgICAgICBlcnJvci5jb2RlID0gJ0VUSU1FRE9VVCc7XG4gICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICAgIGVycm9yLmluZm8gPSBpbmZvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZWRPdXQgPSB0cnVlO1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5wdXNoKCguLi5jYkFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmICghdGltZWRPdXQpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayguLi5jYkFyZ3MpO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHNldHVwIHRpbWVyIGFuZCBjYWxsIG9yaWdpbmFsIGZ1bmN0aW9uXG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCh0aW1lb3V0Q2FsbGJhY2ssIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGZuKC4uLmFyZ3MpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiByYW5nZShzaXplKSB7XG4gICAgdmFyIHJlc3VsdCA9IEFycmF5KHNpemUpO1xuICAgIHdoaWxlIChzaXplLS0pIHtcbiAgICAgICAgcmVzdWx0W3NpemVdID0gc2l6ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbdGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc30gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhXG4gKiB0aW1lLlxuICpcbiAqIEBuYW1lIHRpbWVzTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnRpbWVzXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cudGltZXN9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgYG5gIHRpbWVzLlxuICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gc2VlIFthc3luYy5tYXBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9LlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gdGltZXNMaW1pdChjb3VudCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuICAgIHJldHVybiBtYXBMaW1pdCQxKHJhbmdlKGNvdW50KSwgbGltaXQsIF9pdGVyYXRlZSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uIGBuYCB0aW1lcywgYW5kIGFjY3VtdWxhdGVzIHJlc3VsdHMgaW4gdGhlIHNhbWVcbiAqIG1hbm5lciB5b3Ugd291bGQgdXNlIHdpdGggW21hcF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0uXG4gKlxuICogQG5hbWUgdGltZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLm1hcF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIC0gVGhlIG51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsIGBuYCB0aW1lcy5cbiAqIEludm9rZWQgd2l0aCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCBhIGNhbGxiYWNrOiAobiwgbmV4dCkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIHNlZSB7QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0uXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwcm92aWRlZFxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBQcmV0ZW5kIHRoaXMgaXMgc29tZSBjb21wbGljYXRlZCBhc3luYyBmYWN0b3J5XG4gKiB2YXIgY3JlYXRlVXNlciA9IGZ1bmN0aW9uKGlkLCBjYWxsYmFjaykge1xuICogICAgIGNhbGxiYWNrKG51bGwsIHtcbiAqICAgICAgICAgaWQ6ICd1c2VyJyArIGlkXG4gKiAgICAgfSk7XG4gKiB9O1xuICpcbiAqIC8vIGdlbmVyYXRlIDUgdXNlcnNcbiAqIGFzeW5jLnRpbWVzKDUsIGZ1bmN0aW9uKG4sIG5leHQpIHtcbiAqICAgICBjcmVhdGVVc2VyKG4sIGZ1bmN0aW9uKGVyciwgdXNlcikge1xuICogICAgICAgICBuZXh0KGVyciwgdXNlcik7XG4gKiAgICAgfSk7XG4gKiB9LCBmdW5jdGlvbihlcnIsIHVzZXJzKSB7XG4gKiAgICAgLy8gd2Ugc2hvdWxkIG5vdyBoYXZlIDUgdXNlcnNcbiAqIH0pO1xuICovXG5mdW5jdGlvbiB0aW1lcyAobiwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRpbWVzTGltaXQobiwgSW5maW5pdHksIGl0ZXJhdGVlLCBjYWxsYmFjaylcbn1cblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbdGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc30gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIHRpbWVzU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy50aW1lc117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnRpbWVzfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtudW1iZXJ9IG4gLSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgYG5gIHRpbWVzLlxuICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gc2VlIHtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHByb3ZpZGVkXG4gKi9cbmZ1bmN0aW9uIHRpbWVzU2VyaWVzIChuLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGltZXNMaW1pdChuLCAxLCBpdGVyYXRlZSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogQSByZWxhdGl2ZSBvZiBgcmVkdWNlYC4gIFRha2VzIGFuIE9iamVjdCBvciBBcnJheSwgYW5kIGl0ZXJhdGVzIG92ZXIgZWFjaFxuICogZWxlbWVudCBpbiBwYXJhbGxlbCwgZWFjaCBzdGVwIHBvdGVudGlhbGx5IG11dGF0aW5nIGFuIGBhY2N1bXVsYXRvcmAgdmFsdWUuXG4gKiBUaGUgdHlwZSBvZiB0aGUgYWNjdW11bGF0b3IgZGVmYXVsdHMgdG8gdGhlIHR5cGUgb2YgY29sbGVjdGlvbiBwYXNzZWQgaW4uXG4gKlxuICogQG5hbWUgdHJhbnNmb3JtXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gLSBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgdHJhbnNmb3JtLiAgSWYgb21pdHRlZCxcbiAqIGl0IHdpbGwgZGVmYXVsdCB0byBhbiBlbXB0eSBPYmplY3Qgb3IgQXJyYXksIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBgY29sbGBcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICogY29sbGVjdGlvbiB0aGF0IHBvdGVudGlhbGx5IG1vZGlmaWVzIHRoZSBhY2N1bXVsYXRvci5cbiAqIEludm9rZWQgd2l0aCAoYWNjdW11bGF0b3IsIGl0ZW0sIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgdHJhbnNmb3JtZWQgYWNjdW11bGF0b3IuXG4gKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUyLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAqXG4gKiAvLyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGh1bWFuLXJlYWRhYmxlIHNpemUgZm9ybWF0IGZyb20gYnl0ZXNcbiAqIGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzLCBkZWNpbWFscyA9IDIpIHtcbiAqICAgLy8gaW1wbGVtZW50YXRpb24gbm90IGluY2x1ZGVkIGZvciBicmV2aXR5XG4gKiAgIHJldHVybiBodW1hblJlYWRibGVGaWxlc2l6ZTtcbiAqIH1cbiAqXG4gKiBjb25zdCBmaWxlTGlzdCA9IFsnZmlsZTEudHh0JywnZmlsZTIudHh0JywnZmlsZTMudHh0J107XG4gKlxuICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZmlsZSBzaXplLCB0cmFuc2Zvcm1lZCB0byBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqIC8vIGUuZy4gMTAyNCBieXRlcyA9IDFLQiwgMTIzNCBieXRlcyA9IDEuMjEgS0IsIDEwNDg1NzYgYnl0ZXMgPSAxTUIsIGV0Yy5cbiAqIGZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVTaXplKGFjYywgdmFsdWUsIGtleSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5zdGF0KHZhbHVlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAqICAgICAgICAgaWYgKGVycikge1xuICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gKiAgICAgICAgIH1cbiAqICAgICAgICAgYWNjW2tleV0gPSBmb3JtYXRCeXRlcyhzdGF0LnNpemUpO1xuICogICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAqICAgICB9KTtcbiAqIH1cbiAqXG4gKiAvLyBVc2luZyBjYWxsYmFja3NcbiAqIGFzeW5jLnRyYW5zZm9ybShmaWxlTGlzdCwgdHJhbnNmb3JtRmlsZVNpemUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgaWYoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAgICAgLy8gWyAnMTAwMCBCeXRlcycsICcxLjk1IEtCJywgJzIuOTMgS0InIF1cbiAqICAgICB9XG4gKiB9KTtcbiAqXG4gKiAvLyBVc2luZyBQcm9taXNlc1xuICogYXN5bmMudHJhbnNmb3JtKGZpbGVMaXN0LCB0cmFuc2Zvcm1GaWxlU2l6ZSlcbiAqIC50aGVuKHJlc3VsdCA9PiB7XG4gKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAqICAgICAvLyBbICcxMDAwIEJ5dGVzJywgJzEuOTUgS0InLCAnMi45MyBLQicgXVxuICogfSkuY2F0Y2goZXJyID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICogfSk7XG4gKlxuICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAqIChhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLnRyYW5zZm9ybShmaWxlTGlzdCwgdHJhbnNmb3JtRmlsZVNpemUpO1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgICAvLyBbICcxMDAwIEJ5dGVzJywgJzEuOTUgS0InLCAnMi45MyBLQicgXVxuICogICAgIH1cbiAqICAgICBjYXRjaCAoZXJyKSB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gKiAgICAgfVxuICogfSkoKTtcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUyLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyMDAwIGJ5dGVzIGluIHNpemVcbiAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAqXG4gKiAvLyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGh1bWFuLXJlYWRhYmxlIHNpemUgZm9ybWF0IGZyb20gYnl0ZXNcbiAqIGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzLCBkZWNpbWFscyA9IDIpIHtcbiAqICAgLy8gaW1wbGVtZW50YXRpb24gbm90IGluY2x1ZGVkIGZvciBicmV2aXR5XG4gKiAgIHJldHVybiBodW1hblJlYWRibGVGaWxlc2l6ZTtcbiAqIH1cbiAqXG4gKiBjb25zdCBmaWxlTWFwID0geyBmMTogJ2ZpbGUxLnR4dCcsIGYyOiAnZmlsZTIudHh0JywgZjM6ICdmaWxlMy50eHQnIH07XG4gKlxuICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZmlsZSBzaXplLCB0cmFuc2Zvcm1lZCB0byBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqIC8vIGUuZy4gMTAyNCBieXRlcyA9IDFLQiwgMTIzNCBieXRlcyA9IDEuMjEgS0IsIDEwNDg1NzYgYnl0ZXMgPSAxTUIsIGV0Yy5cbiAqIGZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVTaXplKGFjYywgdmFsdWUsIGtleSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5zdGF0KHZhbHVlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAqICAgICAgICAgaWYgKGVycikge1xuICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gKiAgICAgICAgIH1cbiAqICAgICAgICAgYWNjW2tleV0gPSBmb3JtYXRCeXRlcyhzdGF0LnNpemUpO1xuICogICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAqICAgICB9KTtcbiAqIH1cbiAqXG4gKiAvLyBVc2luZyBjYWxsYmFja3NcbiAqIGFzeW5jLnRyYW5zZm9ybShmaWxlTWFwLCB0cmFuc2Zvcm1GaWxlU2l6ZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICBpZihlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICogICAgICAgICAvLyB7IGYxOiAnMTAwMCBCeXRlcycsIGYyOiAnMS45NSBLQicsIGYzOiAnMi45MyBLQicgfVxuICogICAgIH1cbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIFByb21pc2VzXG4gKiBhc3luYy50cmFuc2Zvcm0oZmlsZU1hcCwgdHJhbnNmb3JtRmlsZVNpemUpXG4gKiAudGhlbihyZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgLy8geyBmMTogJzEwMDAgQnl0ZXMnLCBmMjogJzEuOTUgS0InLCBmMzogJzIuOTMgS0InIH1cbiAqIH0pLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqIH0pO1xuICpcbiAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gKiBhc3luYyAoKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLnRyYW5zZm9ybShmaWxlTWFwLCB0cmFuc2Zvcm1GaWxlU2l6ZSk7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gKiAgICAgICAgIC8vIHsgZjE6ICcxMDAwIEJ5dGVzJywgZjI6ICcxLjk1IEtCJywgZjM6ICcyLjkzIEtCJyB9XG4gKiAgICAgfVxuICogICAgIGNhdGNoIChlcnIpIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0gKGNvbGwsIGFjY3VtdWxhdG9yLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8PSAzICYmIHR5cGVvZiBhY2N1bXVsYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYWxsYmFjayA9IGl0ZXJhdGVlO1xuICAgICAgICBpdGVyYXRlZSA9IGFjY3VtdWxhdG9yO1xuICAgICAgICBhY2N1bXVsYXRvciA9IEFycmF5LmlzQXJyYXkoY29sbCkgPyBbXSA6IHt9O1xuICAgIH1cbiAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgcHJvbWlzZUNhbGxiYWNrKCkpO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuXG4gICAgZWFjaE9mJDEoY29sbCwgKHYsIGssIGNiKSA9PiB7XG4gICAgICAgIF9pdGVyYXRlZShhY2N1bXVsYXRvciwgdiwgaywgY2IpO1xuICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIGFjY3VtdWxhdG9yKSk7XG4gICAgcmV0dXJuIGNhbGxiYWNrW1BST01JU0VfU1lNQk9MXVxufVxuXG4vKipcbiAqIEl0IHJ1bnMgZWFjaCB0YXNrIGluIHNlcmllcyBidXQgc3RvcHMgd2hlbmV2ZXIgYW55IG9mIHRoZSBmdW5jdGlvbnMgd2VyZVxuICogc3VjY2Vzc2Z1bC4gSWYgb25lIG9mIHRoZSB0YXNrcyB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZSBgY2FsbGJhY2tgIHdpbGwgYmVcbiAqIHBhc3NlZCB0aGUgcmVzdWx0IG9mIHRoZSBzdWNjZXNzZnVsIHRhc2suIElmIGFsbCB0YXNrcyBmYWlsLCB0aGUgY2FsbGJhY2tcbiAqIHdpbGwgYmUgcGFzc2VkIHRoZSBlcnJvciBhbmQgcmVzdWx0IChpZiBhbnkpIG9mIHRoZSBmaW5hbCBhdHRlbXB0LlxuICpcbiAqIEBuYW1lIHRyeUVhY2hcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IHRhc2tzIC0gQSBjb2xsZWN0aW9uIGNvbnRhaW5pbmcgZnVuY3Rpb25zIHRvXG4gKiBydW4sIGVhY2ggZnVuY3Rpb24gaXMgcGFzc2VkIGEgYGNhbGxiYWNrKGVyciwgcmVzdWx0KWAgaXQgbXVzdCBjYWxsIG9uXG4gKiBjb21wbGV0aW9uIHdpdGggYW4gZXJyb3IgYGVycmAgKHdoaWNoIGNhbiBiZSBgbnVsbGApIGFuZCBhbiBvcHRpb25hbCBgcmVzdWx0YFxuICogdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gb25lXG4gKiBvZiB0aGUgdGFza3MgaGFzIHN1Y2NlZWRlZCwgb3IgYWxsIGhhdmUgZmFpbGVkLiBJdCByZWNlaXZlcyB0aGUgYGVycmAgYW5kXG4gKiBgcmVzdWx0YCBhcmd1bWVudHMgb2YgdGhlIGxhc3QgYXR0ZW1wdCBhdCBjb21wbGV0aW5nIHRoZSBgdGFza2AuIEludm9rZWQgd2l0aFxuICogKGVyciwgcmVzdWx0cykuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAqIEBleGFtcGxlXG4gKiBhc3luYy50cnlFYWNoKFtcbiAqICAgICBmdW5jdGlvbiBnZXREYXRhRnJvbUZpcnN0V2Vic2l0ZShjYWxsYmFjaykge1xuICogICAgICAgICAvLyBUcnkgZ2V0dGluZyB0aGUgZGF0YSBmcm9tIHRoZSBmaXJzdCB3ZWJzaXRlXG4gKiAgICAgICAgIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbiBnZXREYXRhRnJvbVNlY29uZFdlYnNpdGUoY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gRmlyc3Qgd2Vic2l0ZSBmYWlsZWQsXG4gKiAgICAgICAgIC8vIFRyeSBnZXR0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGJhY2t1cCB3ZWJzaXRlXG4gKiAgICAgICAgIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gKiAgICAgfVxuICogXSxcbiAqIC8vIG9wdGlvbmFsIGNhbGxiYWNrXG4gKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBOb3cgZG8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuXG4gKiB9KTtcbiAqXG4gKi9cbmZ1bmN0aW9uIHRyeUVhY2godGFza3MsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGVycm9yID0gbnVsbDtcbiAgICB2YXIgcmVzdWx0O1xuICAgIHJldHVybiBlYWNoU2VyaWVzJDEodGFza3MsICh0YXNrLCB0YXNrQ2IpID0+IHtcbiAgICAgICAgd3JhcEFzeW5jKHRhc2spKChlcnIsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSByZXR1cm4gdGFza0NiKGVycik7XG5cbiAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICBbcmVzdWx0XSA9IGFyZ3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFyZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcnJvciA9IGVycjtcbiAgICAgICAgICAgIHRhc2tDYihlcnIgPyBudWxsIDoge30pO1xuICAgICAgICB9KTtcbiAgICB9LCAoKSA9PiBjYWxsYmFjayhlcnJvciwgcmVzdWx0KSk7XG59XG5cbnZhciB0cnlFYWNoJDEgPSBhd2FpdGlmeSh0cnlFYWNoKTtcblxuLyoqXG4gKiBVbmRvZXMgYSBbbWVtb2l6ZV17QGxpbmsgbW9kdWxlOlV0aWxzLm1lbW9pemV9ZCBmdW5jdGlvbiwgcmV2ZXJ0aW5nIGl0IHRvIHRoZSBvcmlnaW5hbCxcbiAqIHVubWVtb2l6ZWQgZm9ybS4gSGFuZHkgZm9yIHRlc3RpbmcuXG4gKlxuICogQG5hbWUgdW5tZW1vaXplXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5tZW1vaXplXXtAbGluayBtb2R1bGU6VXRpbHMubWVtb2l6ZX1cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gdGhlIG1lbW9pemVkIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCB1bm1lbW9pemVkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHVubWVtb2l6ZShmbikge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICByZXR1cm4gKGZuLnVubWVtb2l6ZWQgfHwgZm4pKC4uLmFyZ3MpO1xuICAgIH07XG59XG5cbi8qKlxuICogUmVwZWF0ZWRseSBjYWxsIGBpdGVyYXRlZWAsIHdoaWxlIGB0ZXN0YCByZXR1cm5zIGB0cnVlYC4gQ2FsbHMgYGNhbGxiYWNrYCB3aGVuXG4gKiBzdG9wcGVkLCBvciBhbiBlcnJvciBvY2N1cnMuXG4gKlxuICogQG5hbWUgd2hpbHN0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRlc3QgLSBhc3luY2hyb25vdXMgdHJ1dGggdGVzdCB0byBwZXJmb3JtIGJlZm9yZSBlYWNoXG4gKiBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYC4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZVxuICogYHRlc3RgIHBhc3Nlcy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHRlc3RcbiAqIGZ1bmN0aW9uIGhhcyBmYWlsZWQgYW5kIHJlcGVhdGVkIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgIGhhcyBzdG9wcGVkLiBgY2FsbGJhY2tgXG4gKiB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAnc1xuICogY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pO1xuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBjb3VudCA9IDA7XG4gKiBhc3luYy53aGlsc3QoXG4gKiAgICAgZnVuY3Rpb24gdGVzdChjYikgeyBjYihudWxsLCBjb3VudCA8IDUpOyB9LFxuICogICAgIGZ1bmN0aW9uIGl0ZXIoY2FsbGJhY2spIHtcbiAqICAgICAgICAgY291bnQrKztcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGNvdW50KTtcbiAqICAgICAgICAgfSwgMTAwMCk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbiAoZXJyLCBuKSB7XG4gKiAgICAgICAgIC8vIDUgc2Vjb25kcyBoYXZlIHBhc3NlZCwgbiA9IDVcbiAqICAgICB9XG4gKiApO1xuICovXG5mdW5jdGlvbiB3aGlsc3QodGVzdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmx5T25jZShjYWxsYmFjayk7XG4gICAgdmFyIF9mbiA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgdmFyIF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgIHZhciByZXN1bHRzID0gW107XG5cbiAgICBmdW5jdGlvbiBuZXh0KGVyciwgLi4ucmVzdCkge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgcmVzdWx0cyA9IHJlc3Q7XG4gICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSByZXR1cm47XG4gICAgICAgIF90ZXN0KGNoZWNrKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVjayhlcnIsIHRydXRoKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkgcmV0dXJuO1xuICAgICAgICBpZiAoIXRydXRoKSByZXR1cm4gY2FsbGJhY2sobnVsbCwgLi4ucmVzdWx0cyk7XG4gICAgICAgIF9mbihuZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3Rlc3QoY2hlY2spO1xufVxudmFyIHdoaWxzdCQxID0gYXdhaXRpZnkod2hpbHN0LCAzKTtcblxuLyoqXG4gKiBSZXBlYXRlZGx5IGNhbGwgYGl0ZXJhdGVlYCB1bnRpbCBgdGVzdGAgcmV0dXJucyBgdHJ1ZWAuIENhbGxzIGBjYWxsYmFja2Agd2hlblxuICogc3RvcHBlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBgY2FsbGJhY2tgIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnlcbiAqIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAncyBjYWxsYmFjay5cbiAqXG4gKiBUaGUgaW52ZXJzZSBvZiBbd2hpbHN0XXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fS5cbiAqXG4gKiBAbmFtZSB1bnRpbFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMud2hpbHN0XXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB0ZXN0IC0gYXN5bmNocm9ub3VzIHRydXRoIHRlc3QgdG8gcGVyZm9ybSBiZWZvcmUgZWFjaFxuICogZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAuIEludm9rZWQgd2l0aCAoY2FsbGJhY2spLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWVcbiAqIGB0ZXN0YCBmYWlscy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHRlc3RcbiAqIGZ1bmN0aW9uIGhhcyBwYXNzZWQgYW5kIHJlcGVhdGVkIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgIGhhcyBzdG9wcGVkLiBgY2FsbGJhY2tgXG4gKiB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAnc1xuICogY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pO1xuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBub3QgcGFzc2VkXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdHMgPSBbXVxuICogbGV0IGZpbmlzaGVkID0gZmFsc2VcbiAqIGFzeW5jLnVudGlsKGZ1bmN0aW9uIHRlc3QoY2IpIHtcbiAqICAgICBjYihudWxsLCBmaW5pc2hlZClcbiAqIH0sIGZ1bmN0aW9uIGl0ZXIobmV4dCkge1xuICogICAgIGZldGNoUGFnZSh1cmwsIChlcnIsIGJvZHkpID0+IHtcbiAqICAgICAgICAgaWYgKGVycikgcmV0dXJuIG5leHQoZXJyKVxuICogICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoYm9keS5vYmplY3RzKVxuICogICAgICAgICBmaW5pc2hlZCA9ICEhYm9keS5uZXh0XG4gKiAgICAgICAgIG5leHQoZXJyKVxuICogICAgIH0pXG4gKiB9LCBmdW5jdGlvbiBkb25lIChlcnIpIHtcbiAqICAgICAvLyBhbGwgcGFnZXMgaGF2ZSBiZWVuIGZldGNoZWRcbiAqIH0pXG4gKi9cbmZ1bmN0aW9uIHVudGlsKHRlc3QsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgIHJldHVybiB3aGlsc3QkMSgoY2IpID0+IF90ZXN0KChlcnIsIHRydXRoKSA9PiBjYiAoZXJyLCAhdHJ1dGgpKSwgaXRlcmF0ZWUsIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBgdGFza3NgIGFycmF5IG9mIGZ1bmN0aW9ucyBpbiBzZXJpZXMsIGVhY2ggcGFzc2luZyB0aGVpciByZXN1bHRzIHRvXG4gKiB0aGUgbmV4dCBpbiB0aGUgYXJyYXkuIEhvd2V2ZXIsIGlmIGFueSBvZiB0aGUgYHRhc2tzYCBwYXNzIGFuIGVycm9yIHRvIHRoZWlyXG4gKiBvd24gY2FsbGJhY2ssIHRoZSBuZXh0IGZ1bmN0aW9uIGlzIG5vdCBleGVjdXRlZCwgYW5kIHRoZSBtYWluIGBjYWxsYmFja2AgaXNcbiAqIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSBlcnJvci5cbiAqXG4gKiBAbmFtZSB3YXRlcmZhbGxcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXJyYXl9IHRhc2tzIC0gQW4gYXJyYXkgb2YgW2FzeW5jIGZ1bmN0aW9uc117QGxpbmsgQXN5bmNGdW5jdGlvbn1cbiAqIHRvIHJ1bi5cbiAqIEVhY2ggZnVuY3Rpb24gc2hvdWxkIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBgcmVzdWx0YCB2YWx1ZXMuXG4gKiBUaGUgYHJlc3VsdGAgdmFsdWVzIHdpbGwgYmUgcGFzc2VkIGFzIGFyZ3VtZW50cywgaW4gb3JkZXIsIHRvIHRoZSBuZXh0IHRhc2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICogZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkLiBUaGlzIHdpbGwgYmUgcGFzc2VkIHRoZSByZXN1bHRzIG9mIHRoZSBsYXN0IHRhc2snc1xuICogY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pLlxuICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScsICd0d28nKTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uKGFyZzEsIGFyZzIsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIGFyZzEgbm93IGVxdWFscyAnb25lJyBhbmQgYXJnMiBub3cgZXF1YWxzICd0d28nXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0aHJlZScpO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oYXJnMSwgY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gYXJnMSBub3cgZXF1YWxzICd0aHJlZSdcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RvbmUnKTtcbiAqICAgICB9XG4gKiBdLCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgbm93IGVxdWFscyAnZG9uZSdcbiAqIH0pO1xuICpcbiAqIC8vIE9yLCB3aXRoIG5hbWVkIGZ1bmN0aW9uczpcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgbXlGaXJzdEZ1bmN0aW9uLFxuICogICAgIG15U2Vjb25kRnVuY3Rpb24sXG4gKiAgICAgbXlMYXN0RnVuY3Rpb24sXG4gKiBdLCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgbm93IGVxdWFscyAnZG9uZSdcbiAqIH0pO1xuICogZnVuY3Rpb24gbXlGaXJzdEZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScsICd0d28nKTtcbiAqIH1cbiAqIGZ1bmN0aW9uIG15U2Vjb25kRnVuY3Rpb24oYXJnMSwgYXJnMiwgY2FsbGJhY2spIHtcbiAqICAgICAvLyBhcmcxIG5vdyBlcXVhbHMgJ29uZScgYW5kIGFyZzIgbm93IGVxdWFscyAndHdvJ1xuICogICAgIGNhbGxiYWNrKG51bGwsICd0aHJlZScpO1xuICogfVxuICogZnVuY3Rpb24gbXlMYXN0RnVuY3Rpb24oYXJnMSwgY2FsbGJhY2spIHtcbiAqICAgICAvLyBhcmcxIG5vdyBlcXVhbHMgJ3RocmVlJ1xuICogICAgIGNhbGxiYWNrKG51bGwsICdkb25lJyk7XG4gKiB9XG4gKi9cbmZ1bmN0aW9uIHdhdGVyZmFsbCAodGFza3MsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFza3MpKSByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdGaXJzdCBhcmd1bWVudCB0byB3YXRlcmZhbGwgbXVzdCBiZSBhbiBhcnJheSBvZiBmdW5jdGlvbnMnKSk7XG4gICAgaWYgKCF0YXNrcy5sZW5ndGgpIHJldHVybiBjYWxsYmFjaygpO1xuICAgIHZhciB0YXNrSW5kZXggPSAwO1xuXG4gICAgZnVuY3Rpb24gbmV4dFRhc2soYXJncykge1xuICAgICAgICB2YXIgdGFzayA9IHdyYXBBc3luYyh0YXNrc1t0YXNrSW5kZXgrK10pO1xuICAgICAgICB0YXNrKC4uLmFyZ3MsIG9ubHlPbmNlKG5leHQpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBuZXh0KGVyciwgLi4uYXJncykge1xuICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkgcmV0dXJuXG4gICAgICAgIGlmIChlcnIgfHwgdGFza0luZGV4ID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIG5leHRUYXNrKGFyZ3MpO1xuICAgIH1cblxuICAgIG5leHRUYXNrKFtdKTtcbn1cblxudmFyIHdhdGVyZmFsbCQxID0gYXdhaXRpZnkod2F0ZXJmYWxsKTtcblxuLyoqXG4gKiBBbiBcImFzeW5jIGZ1bmN0aW9uXCIgaW4gdGhlIGNvbnRleHQgb2YgQXN5bmMgaXMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGhcbiAqIGEgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIHdpdGggdGhlIGZpbmFsIHBhcmFtZXRlciBiZWluZyBhIGNhbGxiYWNrLlxuICogKGBmdW5jdGlvbiAoYXJnMSwgYXJnMiwgLi4uLCBjYWxsYmFjaykge31gKVxuICogVGhlIGZpbmFsIGNhbGxiYWNrIGlzIG9mIHRoZSBmb3JtIGBjYWxsYmFjayhlcnIsIHJlc3VsdHMuLi4pYCwgd2hpY2ggbXVzdCBiZVxuICogY2FsbGVkIG9uY2UgdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZC4gIFRoZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkIHdpdGggYVxuICogRXJyb3IgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIHNpZ25hbCB0aGF0IGFuIGVycm9yIG9jY3VycmVkLlxuICogT3RoZXJ3aXNlLCBpZiBubyBlcnJvciBvY2N1cnJlZCwgaXQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGBudWxsYCBhcyB0aGUgZmlyc3RcbiAqIGFyZ3VtZW50LCBhbmQgYW55IGFkZGl0aW9uYWwgYHJlc3VsdGAgYXJndW1lbnRzIHRoYXQgbWF5IGFwcGx5LCB0byBzaWduYWxcbiAqIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi5cbiAqIFRoZSBjYWxsYmFjayBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UsIGlkZWFsbHkgb24gYSBsYXRlciB0aWNrIG9mIHRoZVxuICogSmF2YVNjcmlwdCBldmVudCBsb29wLlxuICpcbiAqIFRoaXMgdHlwZSBvZiBmdW5jdGlvbiBpcyBhbHNvIHJlZmVycmVkIHRvIGFzIGEgXCJOb2RlLXN0eWxlIGFzeW5jIGZ1bmN0aW9uXCIsXG4gKiBvciBhIFwiY29udGludWF0aW9uIHBhc3Npbmctc3R5bGUgZnVuY3Rpb25cIiAoQ1BTKS4gTW9zdCBvZiB0aGUgbWV0aG9kcyBvZiB0aGlzXG4gKiBsaWJyYXJ5IGFyZSB0aGVtc2VsdmVzIENQUy9Ob2RlLXN0eWxlIGFzeW5jIGZ1bmN0aW9ucywgb3IgZnVuY3Rpb25zIHRoYXRcbiAqIHJldHVybiBDUFMvTm9kZS1zdHlsZSBhc3luYyBmdW5jdGlvbnMuXG4gKlxuICogV2hlcmV2ZXIgd2UgYWNjZXB0IGEgTm9kZS1zdHlsZSBhc3luYyBmdW5jdGlvbiwgd2UgYWxzbyBkaXJlY3RseSBhY2NlcHQgYW5cbiAqIFtFUzIwMTcgYGFzeW5jYCBmdW5jdGlvbl17QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvU3RhdGVtZW50cy9hc3luY19mdW5jdGlvbn0uXG4gKiBJbiB0aGlzIGNhc2UsIHRoZSBgYXN5bmNgIGZ1bmN0aW9uIHdpbGwgbm90IGJlIHBhc3NlZCBhIGZpbmFsIGNhbGxiYWNrXG4gKiBhcmd1bWVudCwgYW5kIGFueSB0aHJvd24gZXJyb3Igd2lsbCBiZSB1c2VkIGFzIHRoZSBgZXJyYCBhcmd1bWVudCBvZiB0aGVcbiAqIGltcGxpY2l0IGNhbGxiYWNrLCBhbmQgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGByZXN1bHRgIHZhbHVlLlxuICogKGkuZS4gYSBgcmVqZWN0ZWRgIG9mIHRoZSByZXR1cm5lZCBQcm9taXNlIGJlY29tZXMgdGhlIGBlcnJgIGNhbGxiYWNrXG4gKiBhcmd1bWVudCwgYW5kIGEgYHJlc29sdmVkYCB2YWx1ZSBiZWNvbWVzIHRoZSBgcmVzdWx0YC4pXG4gKlxuICogTm90ZSwgZHVlIHRvIEphdmFTY3JpcHQgbGltaXRhdGlvbnMsIHdlIGNhbiBvbmx5IGRldGVjdCBuYXRpdmUgYGFzeW5jYFxuICogZnVuY3Rpb25zIGFuZCBub3QgdHJhbnNwaWxpZWQgaW1wbGVtZW50YXRpb25zLlxuICogWW91ciBlbnZpcm9ubWVudCBtdXN0IGhhdmUgYGFzeW5jYC9gYXdhaXRgIHN1cHBvcnQgZm9yIHRoaXMgdG8gd29yay5cbiAqIChlLmcuIE5vZGUgPiB2Ny42LCBvciBhIHJlY2VudCB2ZXJzaW9uIG9mIGEgbW9kZXJuIGJyb3dzZXIpLlxuICogSWYgeW91IGFyZSB1c2luZyBgYXN5bmNgIGZ1bmN0aW9ucyB0aHJvdWdoIGEgdHJhbnNwaWxlciAoZS5nLiBCYWJlbCksIHlvdVxuICogbXVzdCBzdGlsbCB3cmFwIHRoZSBmdW5jdGlvbiB3aXRoIFthc3luY2lmeV17QGxpbmsgbW9kdWxlOlV0aWxzLmFzeW5jaWZ5fSxcbiAqIGJlY2F1c2UgdGhlIGBhc3luYyBmdW5jdGlvbmAgd2lsbCBiZSBjb21waWxlZCB0byBhbiBvcmRpbmFyeSBmdW5jdGlvbiB0aGF0XG4gKiByZXR1cm5zIGEgcHJvbWlzZS5cbiAqXG4gKiBAdHlwZWRlZiB7RnVuY3Rpb259IEFzeW5jRnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqL1xuXG5cbnZhciBpbmRleCA9IHtcbiAgICBhcHBseSxcbiAgICBhcHBseUVhY2gsXG4gICAgYXBwbHlFYWNoU2VyaWVzLFxuICAgIGFzeW5jaWZ5LFxuICAgIGF1dG8sXG4gICAgYXV0b0luamVjdCxcbiAgICBjYXJnbzogY2FyZ28kMSxcbiAgICBjYXJnb1F1ZXVlOiBjYXJnbyxcbiAgICBjb21wb3NlLFxuICAgIGNvbmNhdDogY29uY2F0JDEsXG4gICAgY29uY2F0TGltaXQ6IGNvbmNhdExpbWl0JDEsXG4gICAgY29uY2F0U2VyaWVzOiBjb25jYXRTZXJpZXMkMSxcbiAgICBjb25zdGFudDogY29uc3RhbnQkMSxcbiAgICBkZXRlY3Q6IGRldGVjdCQxLFxuICAgIGRldGVjdExpbWl0OiBkZXRlY3RMaW1pdCQxLFxuICAgIGRldGVjdFNlcmllczogZGV0ZWN0U2VyaWVzJDEsXG4gICAgZGlyLFxuICAgIGRvVW50aWwsXG4gICAgZG9XaGlsc3Q6IGRvV2hpbHN0JDEsXG4gICAgZWFjaCxcbiAgICBlYWNoTGltaXQ6IGVhY2hMaW1pdCQxLFxuICAgIGVhY2hPZjogZWFjaE9mJDEsXG4gICAgZWFjaE9mTGltaXQ6IGVhY2hPZkxpbWl0JDEsXG4gICAgZWFjaE9mU2VyaWVzOiBlYWNoT2ZTZXJpZXMkMSxcbiAgICBlYWNoU2VyaWVzOiBlYWNoU2VyaWVzJDEsXG4gICAgZW5zdXJlQXN5bmMsXG4gICAgZXZlcnk6IGV2ZXJ5JDEsXG4gICAgZXZlcnlMaW1pdDogZXZlcnlMaW1pdCQxLFxuICAgIGV2ZXJ5U2VyaWVzOiBldmVyeVNlcmllcyQxLFxuICAgIGZpbHRlcjogZmlsdGVyJDEsXG4gICAgZmlsdGVyTGltaXQ6IGZpbHRlckxpbWl0JDEsXG4gICAgZmlsdGVyU2VyaWVzOiBmaWx0ZXJTZXJpZXMkMSxcbiAgICBmb3JldmVyOiBmb3JldmVyJDEsXG4gICAgZ3JvdXBCeSxcbiAgICBncm91cEJ5TGltaXQ6IGdyb3VwQnlMaW1pdCQxLFxuICAgIGdyb3VwQnlTZXJpZXMsXG4gICAgbG9nLFxuICAgIG1hcDogbWFwJDEsXG4gICAgbWFwTGltaXQ6IG1hcExpbWl0JDEsXG4gICAgbWFwU2VyaWVzOiBtYXBTZXJpZXMkMSxcbiAgICBtYXBWYWx1ZXMsXG4gICAgbWFwVmFsdWVzTGltaXQ6IG1hcFZhbHVlc0xpbWl0JDEsXG4gICAgbWFwVmFsdWVzU2VyaWVzLFxuICAgIG1lbW9pemUsXG4gICAgbmV4dFRpY2ssXG4gICAgcGFyYWxsZWwsXG4gICAgcGFyYWxsZWxMaW1pdCxcbiAgICBwcmlvcml0eVF1ZXVlLFxuICAgIHF1ZXVlLFxuICAgIHJhY2U6IHJhY2UkMSxcbiAgICByZWR1Y2U6IHJlZHVjZSQxLFxuICAgIHJlZHVjZVJpZ2h0LFxuICAgIHJlZmxlY3QsXG4gICAgcmVmbGVjdEFsbCxcbiAgICByZWplY3Q6IHJlamVjdCQxLFxuICAgIHJlamVjdExpbWl0OiByZWplY3RMaW1pdCQxLFxuICAgIHJlamVjdFNlcmllczogcmVqZWN0U2VyaWVzJDEsXG4gICAgcmV0cnksXG4gICAgcmV0cnlhYmxlLFxuICAgIHNlcSxcbiAgICBzZXJpZXMsXG4gICAgc2V0SW1tZWRpYXRlOiBzZXRJbW1lZGlhdGUkMSxcbiAgICBzb21lOiBzb21lJDEsXG4gICAgc29tZUxpbWl0OiBzb21lTGltaXQkMSxcbiAgICBzb21lU2VyaWVzOiBzb21lU2VyaWVzJDEsXG4gICAgc29ydEJ5OiBzb3J0QnkkMSxcbiAgICB0aW1lb3V0LFxuICAgIHRpbWVzLFxuICAgIHRpbWVzTGltaXQsXG4gICAgdGltZXNTZXJpZXMsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyeUVhY2g6IHRyeUVhY2gkMSxcbiAgICB1bm1lbW9pemUsXG4gICAgdW50aWwsXG4gICAgd2F0ZXJmYWxsOiB3YXRlcmZhbGwkMSxcbiAgICB3aGlsc3Q6IHdoaWxzdCQxLFxuXG4gICAgLy8gYWxpYXNlc1xuICAgIGFsbDogZXZlcnkkMSxcbiAgICBhbGxMaW1pdDogZXZlcnlMaW1pdCQxLFxuICAgIGFsbFNlcmllczogZXZlcnlTZXJpZXMkMSxcbiAgICBhbnk6IHNvbWUkMSxcbiAgICBhbnlMaW1pdDogc29tZUxpbWl0JDEsXG4gICAgYW55U2VyaWVzOiBzb21lU2VyaWVzJDEsXG4gICAgZmluZDogZGV0ZWN0JDEsXG4gICAgZmluZExpbWl0OiBkZXRlY3RMaW1pdCQxLFxuICAgIGZpbmRTZXJpZXM6IGRldGVjdFNlcmllcyQxLFxuICAgIGZsYXRNYXA6IGNvbmNhdCQxLFxuICAgIGZsYXRNYXBMaW1pdDogY29uY2F0TGltaXQkMSxcbiAgICBmbGF0TWFwU2VyaWVzOiBjb25jYXRTZXJpZXMkMSxcbiAgICBmb3JFYWNoOiBlYWNoLFxuICAgIGZvckVhY2hTZXJpZXM6IGVhY2hTZXJpZXMkMSxcbiAgICBmb3JFYWNoTGltaXQ6IGVhY2hMaW1pdCQxLFxuICAgIGZvckVhY2hPZjogZWFjaE9mJDEsXG4gICAgZm9yRWFjaE9mU2VyaWVzOiBlYWNoT2ZTZXJpZXMkMSxcbiAgICBmb3JFYWNoT2ZMaW1pdDogZWFjaE9mTGltaXQkMSxcbiAgICBpbmplY3Q6IHJlZHVjZSQxLFxuICAgIGZvbGRsOiByZWR1Y2UkMSxcbiAgICBmb2xkcjogcmVkdWNlUmlnaHQsXG4gICAgc2VsZWN0OiBmaWx0ZXIkMSxcbiAgICBzZWxlY3RMaW1pdDogZmlsdGVyTGltaXQkMSxcbiAgICBzZWxlY3RTZXJpZXM6IGZpbHRlclNlcmllcyQxLFxuICAgIHdyYXBTeW5jOiBhc3luY2lmeSxcbiAgICBkdXJpbmc6IHdoaWxzdCQxLFxuICAgIGRvRHVyaW5nOiBkb1doaWxzdCQxXG59O1xuXG5leHBvcnQgeyBldmVyeSQxIGFzIGFsbCwgZXZlcnlMaW1pdCQxIGFzIGFsbExpbWl0LCBldmVyeVNlcmllcyQxIGFzIGFsbFNlcmllcywgc29tZSQxIGFzIGFueSwgc29tZUxpbWl0JDEgYXMgYW55TGltaXQsIHNvbWVTZXJpZXMkMSBhcyBhbnlTZXJpZXMsIGFwcGx5LCBhcHBseUVhY2gsIGFwcGx5RWFjaFNlcmllcywgYXN5bmNpZnksIGF1dG8sIGF1dG9JbmplY3QsIGNhcmdvJDEgYXMgY2FyZ28sIGNhcmdvIGFzIGNhcmdvUXVldWUsIGNvbXBvc2UsIGNvbmNhdCQxIGFzIGNvbmNhdCwgY29uY2F0TGltaXQkMSBhcyBjb25jYXRMaW1pdCwgY29uY2F0U2VyaWVzJDEgYXMgY29uY2F0U2VyaWVzLCBjb25zdGFudCQxIGFzIGNvbnN0YW50LCBpbmRleCBhcyBkZWZhdWx0LCBkZXRlY3QkMSBhcyBkZXRlY3QsIGRldGVjdExpbWl0JDEgYXMgZGV0ZWN0TGltaXQsIGRldGVjdFNlcmllcyQxIGFzIGRldGVjdFNlcmllcywgZGlyLCBkb1doaWxzdCQxIGFzIGRvRHVyaW5nLCBkb1VudGlsLCBkb1doaWxzdCQxIGFzIGRvV2hpbHN0LCB3aGlsc3QkMSBhcyBkdXJpbmcsIGVhY2gsIGVhY2hMaW1pdCQxIGFzIGVhY2hMaW1pdCwgZWFjaE9mJDEgYXMgZWFjaE9mLCBlYWNoT2ZMaW1pdCQxIGFzIGVhY2hPZkxpbWl0LCBlYWNoT2ZTZXJpZXMkMSBhcyBlYWNoT2ZTZXJpZXMsIGVhY2hTZXJpZXMkMSBhcyBlYWNoU2VyaWVzLCBlbnN1cmVBc3luYywgZXZlcnkkMSBhcyBldmVyeSwgZXZlcnlMaW1pdCQxIGFzIGV2ZXJ5TGltaXQsIGV2ZXJ5U2VyaWVzJDEgYXMgZXZlcnlTZXJpZXMsIGZpbHRlciQxIGFzIGZpbHRlciwgZmlsdGVyTGltaXQkMSBhcyBmaWx0ZXJMaW1pdCwgZmlsdGVyU2VyaWVzJDEgYXMgZmlsdGVyU2VyaWVzLCBkZXRlY3QkMSBhcyBmaW5kLCBkZXRlY3RMaW1pdCQxIGFzIGZpbmRMaW1pdCwgZGV0ZWN0U2VyaWVzJDEgYXMgZmluZFNlcmllcywgY29uY2F0JDEgYXMgZmxhdE1hcCwgY29uY2F0TGltaXQkMSBhcyBmbGF0TWFwTGltaXQsIGNvbmNhdFNlcmllcyQxIGFzIGZsYXRNYXBTZXJpZXMsIHJlZHVjZSQxIGFzIGZvbGRsLCByZWR1Y2VSaWdodCBhcyBmb2xkciwgZWFjaCBhcyBmb3JFYWNoLCBlYWNoTGltaXQkMSBhcyBmb3JFYWNoTGltaXQsIGVhY2hPZiQxIGFzIGZvckVhY2hPZiwgZWFjaE9mTGltaXQkMSBhcyBmb3JFYWNoT2ZMaW1pdCwgZWFjaE9mU2VyaWVzJDEgYXMgZm9yRWFjaE9mU2VyaWVzLCBlYWNoU2VyaWVzJDEgYXMgZm9yRWFjaFNlcmllcywgZm9yZXZlciQxIGFzIGZvcmV2ZXIsIGdyb3VwQnksIGdyb3VwQnlMaW1pdCQxIGFzIGdyb3VwQnlMaW1pdCwgZ3JvdXBCeVNlcmllcywgcmVkdWNlJDEgYXMgaW5qZWN0LCBsb2csIG1hcCQxIGFzIG1hcCwgbWFwTGltaXQkMSBhcyBtYXBMaW1pdCwgbWFwU2VyaWVzJDEgYXMgbWFwU2VyaWVzLCBtYXBWYWx1ZXMsIG1hcFZhbHVlc0xpbWl0JDEgYXMgbWFwVmFsdWVzTGltaXQsIG1hcFZhbHVlc1NlcmllcywgbWVtb2l6ZSwgbmV4dFRpY2ssIHBhcmFsbGVsLCBwYXJhbGxlbExpbWl0LCBwcmlvcml0eVF1ZXVlLCBxdWV1ZSwgcmFjZSQxIGFzIHJhY2UsIHJlZHVjZSQxIGFzIHJlZHVjZSwgcmVkdWNlUmlnaHQsIHJlZmxlY3QsIHJlZmxlY3RBbGwsIHJlamVjdCQxIGFzIHJlamVjdCwgcmVqZWN0TGltaXQkMSBhcyByZWplY3RMaW1pdCwgcmVqZWN0U2VyaWVzJDEgYXMgcmVqZWN0U2VyaWVzLCByZXRyeSwgcmV0cnlhYmxlLCBmaWx0ZXIkMSBhcyBzZWxlY3QsIGZpbHRlckxpbWl0JDEgYXMgc2VsZWN0TGltaXQsIGZpbHRlclNlcmllcyQxIGFzIHNlbGVjdFNlcmllcywgc2VxLCBzZXJpZXMsIHNldEltbWVkaWF0ZSQxIGFzIHNldEltbWVkaWF0ZSwgc29tZSQxIGFzIHNvbWUsIHNvbWVMaW1pdCQxIGFzIHNvbWVMaW1pdCwgc29tZVNlcmllcyQxIGFzIHNvbWVTZXJpZXMsIHNvcnRCeSQxIGFzIHNvcnRCeSwgdGltZW91dCwgdGltZXMsIHRpbWVzTGltaXQsIHRpbWVzU2VyaWVzLCB0cmFuc2Zvcm0sIHRyeUVhY2gkMSBhcyB0cnlFYWNoLCB1bm1lbW9pemUsIHVudGlsLCB3YXRlcmZhbGwkMSBhcyB3YXRlcmZhbGwsIHdoaWxzdCQxIGFzIHdoaWxzdCwgYXN5bmNpZnkgYXMgd3JhcFN5bmMgfTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgYXBwIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgc2VydmUgZnJvbSBcImVsZWN0cm9uLXNlcnZlXCI7XG5pbXBvcnQgeyBjcmVhdGVXaW5kb3csIHBlcmZvcm1TZXR1cCB9IGZyb20gXCIuL2hlbHBlcnNcIjtcbmltcG9ydCB7IHNldHVwSGFuZGxlcnMgfSBmcm9tIFwiLi9oZWxwZXJzL2hhbmRsZXJzXCI7XG5cbmNvbnN0IGlzUHJvZCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIjtcbmxldCBtYWluV2luZG93OiBFbGVjdHJvbi5Ccm93c2VyV2luZG93O1xuaWYgKGlzUHJvZCkge1xuXHRzZXJ2ZSh7IGRpcmVjdG9yeTogXCJhcHBcIiB9KTtcbn0gZWxzZSB7XG5cdGFwcC5zZXRQYXRoKFwidXNlckRhdGFcIiwgYCR7YXBwLmdldFBhdGgoXCJ1c2VyRGF0YVwiKX0gKGRldmVsb3BtZW50KWApO1xufVxuXG4oYXN5bmMgKCkgPT4ge1xuXHRhd2FpdCBhcHAud2hlblJlYWR5KCk7XG5cblx0bWFpbldpbmRvdyA9IGNyZWF0ZVdpbmRvdyhcIm1haW5cIiwge1xuXHRcdHdpZHRoOiAxMDAwLFxuXHRcdGhlaWdodDogNjAwLFxuXHRcdGF1dG9IaWRlTWVudUJhcjogdHJ1ZSxcblx0XHR3ZWJQcmVmZXJlbmNlczoge1xuXHRcdFx0cHJlbG9hZDogcGF0aC5qb2luKF9fZGlybmFtZSwgXCJwcmVsb2FkLmpzXCIpLFxuXHRcdH0sXG5cdH0pO1xuXG5cdGlmIChpc1Byb2QpIHtcblx0XHRhd2FpdCBtYWluV2luZG93LmxvYWRVUkwoXCJhcHA6Ly8uL3N0YXJ0XCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHBvcnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5cdFx0YXdhaXQgbWFpbldpbmRvdy5sb2FkVVJMKGBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vc3RhcnRgKTtcblx0XHRtYWluV2luZG93LndlYkNvbnRlbnRzLm9wZW5EZXZUb29scygpO1xuXHR9XG5cblx0Y29uc3QgcHl0aG9uU2NyaXB0c1BhdGg6IHN0cmluZyA9IGlzUHJvZFxuXHRcdD8gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgXCJweVwiKVxuXHRcdDogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9weVwiKTtcblxuXHRzZXR1cEhhbmRsZXJzKHB5dGhvblNjcmlwdHNQYXRoKTtcblx0cGVyZm9ybVNldHVwKG1haW5XaW5kb3csIHB5dGhvblNjcmlwdHNQYXRoKTtcbn0pKCk7XG5cbmFwcC5vbihcIndpbmRvdy1hbGwtY2xvc2VkXCIsICgpID0+IHtcblx0YXBwLnF1aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbInNjcmVlbiIsIkJyb3dzZXJXaW5kb3ciLCJTdG9yZSIsImNyZWF0ZVdpbmRvdyIsIndpbmRvd05hbWUiLCJvcHRpb25zIiwia2V5IiwibmFtZSIsInN0b3JlIiwiZGVmYXVsdFNpemUiLCJ3aWR0aCIsImhlaWdodCIsInN0YXRlIiwicmVzdG9yZSIsImdldCIsImdldEN1cnJlbnRQb3NpdGlvbiIsInBvc2l0aW9uIiwid2luIiwiZ2V0UG9zaXRpb24iLCJzaXplIiwiZ2V0U2l6ZSIsIngiLCJ5Iiwid2luZG93V2l0aGluQm91bmRzIiwid2luZG93U3RhdGUiLCJib3VuZHMiLCJyZXNldFRvRGVmYXVsdHMiLCJnZXRQcmltYXJ5RGlzcGxheSIsIl9PYmplY3QkYXNzaWduIiwiZW5zdXJlVmlzaWJsZU9uU29tZURpc3BsYXkiLCJfY29udGV4dCIsInZpc2libGUiLCJfc29tZUluc3RhbmNlUHJvcGVydHkiLCJnZXRBbGxEaXNwbGF5cyIsImNhbGwiLCJkaXNwbGF5Iiwic2F2ZVN0YXRlIiwiaXNNaW5pbWl6ZWQiLCJpc01heGltaXplZCIsInNldCIsIl9vYmplY3RTcHJlYWQiLCJ3ZWJQcmVmZXJlbmNlcyIsIm5vZGVJbnRlZ3JhdGlvbiIsImNvbnRleHRJc29sYXRpb24iLCJvbiIsImlwY01haW4iLCJjcmVhdGVQcm9qZWN0IiwibG9hZFByb2plY3QiLCJkZWxldGVBbmltYWwiLCJkZWxldGVQcm9qZWN0Iiwic2VsZWN0RGlyZWN0b3J5IiwiZ2V0QW5pbWFsRGF0YURpcmVjdG9yeSIsImRlbGV0ZUFuaW1hbERhdGFEaXJlY3RvcnkiLCJkZWxldGVGaWxlIiwiZ2V0QW5pbWFsRGF0YSIsImltcG9ydFByb2plY3QiLCJleHBvcnRQcm9qZWN0IiwiZ2V0UHJvamVjdHMiLCJ1cGxvYWRGaWxlIiwiYWRkQW5pbWFsIiwiUHl0aG9uU2hlbGwiLCJwYXRoIiwib3MiLCJydW5QeXRob25TY3JpcHQiLCJldmVudCIsInB5U2NyaXB0c1BhdGgiLCJzY3JpcHROYW1lIiwiYXJncyIsInJlc3VsdEV2ZW50Iiwia2lsbEV2ZW50IiwiZW52UHl0aG9uUGF0aCIsImpvaW4iLCJob21lZGlyIiwicGxhdGZvcm0iLCJweUNvbW1hbmQiLCJzY3JpcHRPcHRpb25zIiwibW9kZSIsInB5dGhvblBhdGgiLCJzY3JpcHRQYXRoIiwicHlzaGVsbCIsInRvdGFsIiwiY3VycmVudCIsInN0ZGVyciIsImNvbnNvbGUiLCJlcnJvciIsIm1lc3NhZ2UiLCJOdW1iZXIiLCJlbmQiLCJlcnIiLCJjb2RlIiwic2lnbmFsIiwic2VuZGVyIiwic2VuZCIsInJlbW92ZUFsbExpc3RlbmVycyIsIk1hdGgiLCJyb3VuZCIsIm9uY2UiLCJraWxsIiwic2V0dXBIYW5kbGVycyIsImhvbWVEaXIiLCJpc1Byb2QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJyZXNvdXJjZURpciIsInJlc291cmNlc1BhdGgiLCJfX2Rpcm5hbWUiLCJoYW5kbGUiLCJfZXZlbnQiLCJkZXNjcmlwdGlvbiIsInN1Y2Nlc3MiLCJ0aGVuIiwicHJvamVjdCIsInByb2plY3ROYW1lIiwiYW5pbWFsTmFtZSIsImRhdGFUeXBlIiwiZmlsZVBhdGhzIiwiYW5pbWFsRGF0YSIsImRhdGEiLCJmaWxlTmFtZSIsInByb2plY3RzIiwidGVtcERpciIsImRpcmVjdG9yeSIsInNlbGVjdGVkRGlyZWN0b3J5Iiwic3RydWN0UGF0aCIsIm1vZGVsUGF0aCIsIm5ycmRQYXRoIiwibWFwUGF0aCIsImN1c3RvbUFyZ3MiLCJwdXNoIiwibW9kZWxzIiwic29tYXRhIiwibnVjbGVpIiwibGVuZ3RoIiwiYXhpb3MiLCJmcyIsImV4dHJhY3QiLCJleGVjIiwiaG9tZUZvbGRlciIsImJlbGxqYXJGb2xkZXIiLCJidWNrZXQiLCJvYmplY3RQYXRoIiwiaXRlbSIsInZlcnNpb24iLCJkb3dubG9hZEZpbGUiLCJ1cmwiLCJmaWxlbmFtZSIsInJlc3BvbnNlIiwibWV0aG9kIiwicmVzcG9uc2VUeXBlIiwidG90YWxMZW5ndGgiLCJfcGFyc2VJbnQiLCJoZWFkZXJzIiwiZG93bmxvYWRlZExlbmd0aCIsIndyaXRlciIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiY2h1bmsiLCJwcm9ncmVzcyIsImVtaXQiLCJwaXBlIiwiX1Byb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiTUFOSUZFU1QiLCJucnJkIiwiY2hlY2tNYW5pZmVzdCIsImRpcmVjdG9yeVBhdGgiLCJtYW5pZmVzdFBhdGgiLCJleGlzdHNTeW5jIiwid3JpdGVGaWxlIiwiX0pTT04kc3RyaW5naWZ5IiwiX09iamVjdCRrZXlzIiwicmVhZEZpbGUiLCJtYW5pZmVzdERhdGEiLCJKU09OIiwicGFyc2UiLCJvdXRkYXRlZEl0ZW1zIiwiX2ZvckVhY2hJbnN0YW5jZVByb3BlcnR5IiwiZG93bmxvYWRGcm9tTWFuaWZlc3QiLCJkb3dubG9hZFByb21pc2VzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJ0YXJiYWxsUGF0aCIsImV4dHJhY3RUYXJiYWxsIiwiYWxsIiwiZmlsZVBhdGgiLCJ1bmxpbmsiLCJkZXN0aW5hdGlvblBhdGgiLCJmaWxlIiwiY3dkIiwiY2F0Y2giLCJjcmVhdGVEaXJlY3RvcnlJbkhvbWVGb2xkZXIiLCJkaXJlY3RvcnlOYW1lIiwic3ViZGlycyIsIm1rZGlyU3luYyIsInJlY3Vyc2l2ZSIsInN1YmRpciIsImxvY2FsUGF0aCIsInB5dGhvblZlcnNpb25zIiwid2luMzIiLCJkYXJ3aW4iLCJsaW51eCIsInNldHVwUHl0aG9uIiwid2luZG93IiwicHl0aG9uU2NyaXB0c1BhdGgiLCJhcmNoaXRlY3R1cmUiLCJhcmNoIiwicHl0aG9uVmVyc2lvbiIsIndlYkNvbnRlbnRzIiwicmVxdWlyZW1lbnRzUGF0aCIsImVudlB5Q29tbWFuZCIsInB5dGhvblRhcmJhbGxQYXRoIiwicGVyZm9ybVNldHVwIiwiZGlhbG9nIiwiYXJjaGl2ZXIiLCJiZWxsSmFyRm9sZGVyIiwicmVxdWlyZSIsInByb2plY3RzUGF0aCIsInByb2plY3REaXIiLCJFcnJvciIsIm1ldGFkYXRhIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwibGFzdE1vZGlmaWVkIiwiYW5pbWFscyIsIndyaXRlRmlsZVN5bmMiLCJzYXZlQXNEaWFsb2ciLCJyZXN1bHQiLCJzaG93U2F2ZURpYWxvZ1N5bmMiLCJ0aXRsZSIsImRlZmF1bHRQYXRoIiwiZmlsdGVycyIsImV4dGVuc2lvbnMiLCJvcGVuRmlsZSIsInNob3dPcGVuRGlhbG9nU3luYyIsInByb3BlcnRpZXMiLCJyZWFkRmlsZVN5bmMiLCJ0b1N0cmluZyIsInJtU3luYyIsImZvcmNlIiwiaW1wb3J0UGF0aCIsImltcG9ydE5hbWUiLCJiYXNlbmFtZSIsImRpciIsImV4cG9ydFBhdGgiLCJvdXRwdXQiLCJhcmNoaXZlIiwiemxpYiIsImxldmVsIiwibG9nIiwicG9pbnRlciIsInJlYWRkaXJTeW5jIiwiZmluYWxpemUiLCJtZXRhZGF0YVBhdGgiLCJoYXNBbGlnbm1lbnREYXRhIiwiaGFzQ2VsbERldGVjdGlvbkRhdGEiLCJmaWxlTWV0YWRhdGEiLCJhZGRlZEF0IiwiZGF0YVR5cGVEaXIiLCJzeW1saW5rU3luYyIsImFuaW1hbERpciIsImFuaW1hbERhdGFGaWxlcyIsImRhdGFUeXBlcyIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5Iiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsIl9jb250ZXh0MiIsImZpbGVzIiwiYW5pbWFsRGF0YUZpbGVzSW5EYXRhVHlwZURpciIsIl9lbmRzV2l0aEluc3RhbmNlUHJvcGVydHkiLCJmaWxlQ29udGVudCIsIl9jb250ZXh0MyIsImNyZWF0ZVN5bWxpbmsiLCJ0YXJnZXRQYXRoIiwic3ltbGlua1BhdGgiLCJzeW1saW5rIiwiZGlybmFtZSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImFwcCIsInNlcnZlIiwibWFpbldpbmRvdyIsInNldFBhdGgiLCJnZXRQYXRoIiwid2hlblJlYWR5IiwiYXV0b0hpZGVNZW51QmFyIiwicHJlbG9hZCIsImxvYWRVUkwiLCJwb3J0IiwiYXJndiIsIm9wZW5EZXZUb29scyIsInF1aXQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/app/preload.js b/app/preload.js new file mode 100644 index 0000000..3d46eef --- /dev/null +++ b/app/preload.js @@ -0,0 +1,128 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(global, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "electron": +/*!***************************!*\ + !*** external "electron" ***! + \***************************/ +/***/ ((module) => { + +module.exports = require("electron"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +/*!*************************!*\ + !*** ./main/preload.ts ***! + \*************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ "electron"); +/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__); + +const handler = { + send(channel, value) { + electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer.send(channel, value); + }, + invoke(channel, ...args) { + return electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer.invoke(channel, ...args); + }, + on(channel, callback) { + const subscription = (_event, ...args) => callback(...args); + electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer.on(channel, subscription); + return () => { + electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer.removeListener(channel, subscription); + }; + }, + once(channel, callback) { + electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer.once(channel, (_event, ...args) => callback(...args)); + } +}; +electron__WEBPACK_IMPORTED_MODULE_0__.contextBridge.exposeInMainWorld("ipc", handler); +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTzs7Ozs7Ozs7OztBQ1ZBOzs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7OztBQ053RTtBQUV4RSxNQUFNRSxPQUFPLEdBQUc7RUFDZEMsSUFBSUEsQ0FBQ0MsT0FBZSxFQUFFQyxLQUFjLEVBQUU7SUFDcENKLGlEQUFXLENBQUNFLElBQUksQ0FBQ0MsT0FBTyxFQUFFQyxLQUFLLENBQUM7RUFDbEMsQ0FBQztFQUNEQyxNQUFNQSxDQUFDRixPQUFlLEVBQUUsR0FBR0csSUFBZSxFQUFFO0lBQzFDLE9BQU9OLGlEQUFXLENBQUNLLE1BQU0sQ0FBQ0YsT0FBTyxFQUFFLEdBQUdHLElBQUksQ0FBQztFQUM3QyxDQUFDO0VBQ0RDLEVBQUVBLENBQUNKLE9BQWUsRUFBRUssUUFBc0MsRUFBRTtJQUMxRCxNQUFNQyxZQUFZLEdBQUdBLENBQUNDLE1BQXdCLEVBQUUsR0FBR0osSUFBZSxLQUNoRUUsUUFBUSxDQUFDLEdBQUdGLElBQUksQ0FBQztJQUNuQk4saURBQVcsQ0FBQ08sRUFBRSxDQUFDSixPQUFPLEVBQUVNLFlBQVksQ0FBQztJQUVyQyxPQUFPLE1BQU07TUFDWFQsaURBQVcsQ0FBQ1csY0FBYyxDQUFDUixPQUFPLEVBQUVNLFlBQVksQ0FBQztJQUNuRCxDQUFDO0VBQ0gsQ0FBQztFQUNERyxJQUFJQSxDQUFDVCxPQUFlLEVBQUVLLFFBQXNDLEVBQUU7SUFDNURSLGlEQUFXLENBQUNZLElBQUksQ0FBQ1QsT0FBTyxFQUFFLENBQUNPLE1BQU0sRUFBRSxHQUFHSixJQUFJLEtBQUtFLFFBQVEsQ0FBQyxHQUFHRixJQUFJLENBQUMsQ0FBQztFQUNuRTtBQUNGLENBQUM7QUFFRFAsbURBQWEsQ0FBQ2MsaUJBQWlCLENBQUMsS0FBSyxFQUFFWixPQUFPLENBQUMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL2JlbGwtamFyL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9iZWxsLWphci9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiZWxlY3Ryb25cIiIsIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmVsbC1qYXIvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iZWxsLWphci93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2JlbGwtamFyLy4vbWFpbi9wcmVsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSB7XG5cdFx0dmFyIGEgPSBmYWN0b3J5KCk7XG5cdFx0Zm9yKHZhciBpIGluIGEpICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgPyBleHBvcnRzIDogcm9vdClbaV0gPSBhW2ldO1xuXHR9XG59KShnbG9iYWwsICgpID0+IHtcbnJldHVybiAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IHsgY29udGV4dEJyaWRnZSwgaXBjUmVuZGVyZXIsIElwY1JlbmRlcmVyRXZlbnQgfSBmcm9tIFwiZWxlY3Ryb25cIjtcblxuY29uc3QgaGFuZGxlciA9IHtcbiAgc2VuZChjaGFubmVsOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgaXBjUmVuZGVyZXIuc2VuZChjaGFubmVsLCB2YWx1ZSk7XG4gIH0sXG4gIGludm9rZShjaGFubmVsOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlci5pbnZva2UoY2hhbm5lbCwgLi4uYXJncyk7XG4gIH0sXG4gIG9uKGNoYW5uZWw6IHN0cmluZywgY2FsbGJhY2s6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSAoX2V2ZW50OiBJcGNSZW5kZXJlckV2ZW50LCAuLi5hcmdzOiB1bmtub3duW10pID0+XG4gICAgICBjYWxsYmFjayguLi5hcmdzKTtcbiAgICBpcGNSZW5kZXJlci5vbihjaGFubmVsLCBzdWJzY3JpcHRpb24pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlwY1JlbmRlcmVyLnJlbW92ZUxpc3RlbmVyKGNoYW5uZWwsIHN1YnNjcmlwdGlvbik7XG4gICAgfTtcbiAgfSxcbiAgb25jZShjaGFubmVsOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkKSB7XG4gICAgaXBjUmVuZGVyZXIub25jZShjaGFubmVsLCAoX2V2ZW50LCAuLi5hcmdzKSA9PiBjYWxsYmFjayguLi5hcmdzKSk7XG4gIH0sXG59O1xuXG5jb250ZXh0QnJpZGdlLmV4cG9zZUluTWFpbldvcmxkKFwiaXBjXCIsIGhhbmRsZXIpO1xuXG5leHBvcnQgdHlwZSBJcGNIYW5kbGVyID0gdHlwZW9mIGhhbmRsZXI7XG4iXSwibmFtZXMiOlsiY29udGV4dEJyaWRnZSIsImlwY1JlbmRlcmVyIiwiaGFuZGxlciIsInNlbmQiLCJjaGFubmVsIiwidmFsdWUiLCJpbnZva2UiLCJhcmdzIiwib24iLCJjYWxsYmFjayIsInN1YnNjcmlwdGlvbiIsIl9ldmVudCIsInJlbW92ZUxpc3RlbmVyIiwib25jZSIsImV4cG9zZUluTWFpbldvcmxkIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..68e8ad8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8288 @@ +{ + "name": "belljar", + "version": "9.5.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "belljar", + "version": "9.5.2", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.1.1", + "node-fetch": "v2", + "python-shell": "^3.0.1", + "semver": "^7.5.4", + "tar": "^6.1.11" + }, + "devDependencies": { + "@electron-forge/cli": "^6.0.3", + "@electron-forge/maker-deb": "^6.0.3", + "@electron-forge/maker-dmg": "^6.2.1", + "@electron-forge/maker-rpm": "^6.0.3", + "@electron-forge/maker-squirrel": "^6.3.0", + "@electron-forge/maker-zip": "^6.0.3", + "@typescript-eslint/eslint-plugin": "^4.29.0", + "@typescript-eslint/parser": "^4.29.0", + "dotenv": "^16.3.1", + "electron": "18.1.0", + "eslint": "^7.32.0", + "prettier": "^2.7.1", + "typescript": "^4.6.3" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@electron-forge/cli": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-6.4.2.tgz", + "integrity": "sha512-bM6YVTV0uUEpIL1jkpARlSm4Li26XZn+avC/lyTdpPqnd65T/oXZNkrAD+2Jb0RlgplOaM21qWm7ybtvKDGDyA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "@electron-forge/core": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron/get": "^2.0.0", + "chalk": "^4.0.0", + "commander": "^4.1.1", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^5.0.3", + "semver": "^7.2.1" + }, + "bin": { + "electron-forge": "dist/electron-forge.js", + "electron-forge-vscode-nix": "script/vscode.sh", + "electron-forge-vscode-win": "script/vscode.cmd" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron-forge/cli/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/cli/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-6.4.2.tgz", + "integrity": "sha512-VtrFZ1Q7NG1ov0jJO/tUvUiYdWZ0Y31xw762is/jfpRPD6V/soOpwJJAoWoPK9TZVkTm2pkS8S5LikCMbNCLxw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "@electron-forge/core-utils": "6.4.2", + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/plugin-base": "6.4.2", + "@electron-forge/publisher-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "@electron-forge/template-vite": "6.4.2", + "@electron-forge/template-vite-typescript": "6.4.2", + "@electron-forge/template-webpack": "6.4.2", + "@electron-forge/template-webpack-typescript": "6.4.2", + "@electron/get": "^2.0.0", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "electron-packager": "^17.1.2", + "fast-glob": "^3.2.7", + "filenamify": "^4.1.0", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5", + "interpret": "^3.1.1", + "listr2": "^5.0.3", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "rechoir": "^0.8.0", + "resolve-package": "^1.0.1", + "semver": "^7.2.1", + "source-map-support": "^0.5.13", + "sudo-prompt": "^9.1.1", + "username": "^5.1.0", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-6.4.2.tgz", + "integrity": "sha512-CjB3aakmRsXAMMDYc8PxNTMf4FdI29y4PErfv7eCXlL5oo3JW0VSKZIV7R8/Po0S0got85q2kmhZgCKuxL1BNA==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "log-symbols": "^4.0.0", + "semver": "^7.2.1", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@electron-forge/core/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/core/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/core/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/core/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron-forge/core/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/core/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron-forge/maker-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.4.2.tgz", + "integrity": "sha512-zW3GH+LqDK9nxQmQEFkJPR8RqiX0lVk6a4mXll3ngujN1fPevO4ivUAWmaEVeC1dH/hXbN7s9m0S6a37MigftQ==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/maker-base/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/maker-base/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/maker-base/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/maker-deb": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-6.4.2.tgz", + "integrity": "sha512-tlV8ffivgBP94vtYXgAeXgzeKCaRyLuWH9LT8PQW1QrYbAFpCMmuwk/zFaJkyMklImCWmDFTPYMEqdEJGd7Npg==", + "dev": true, + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-debian": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-dmg": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-6.4.2.tgz", + "integrity": "sha512-PG3qzDKQhogZe7rPOlWYR72k85mvwYdn4tzAMKTXTJyPy7RNuRq8NhANZHqFyFi95d4fawTcsbyFKM4kY+qQRQ==", + "dev": true, + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-dmg": "^4.0.0" + } + }, + "node_modules/@electron-forge/maker-dmg/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/maker-dmg/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/maker-dmg/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/maker-rpm": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-6.4.2.tgz", + "integrity": "sha512-+hfbY5pYbAer0y07OtOzVgVBHoTRmemqqZ//T0mKJpyK2ThHKGTvyW8FFlr5jlQs5LoDCM2WHKE8oGtRhivsMg==", + "dev": true, + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-redhat": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-squirrel": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-6.4.2.tgz", + "integrity": "sha512-ukK3RcFaBrQXUzR52PsHxfwDq5XKSnj6A1kkXiyHWqgj+HIU97prBScBb5JRtasPvYN+nDdQO2vlInsLaqcx9Q==", + "dev": true, + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-winstaller": "^5.0.0" + } + }, + "node_modules/@electron-forge/maker-squirrel/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/maker-squirrel/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/maker-squirrel/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/maker-zip": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-6.4.2.tgz", + "integrity": "sha512-k2nfhhnxcYbUS7rCKCisuqEalxtH9l73+lrtfL0aQZiE/BLbDXyNckDIDOPvX0tBEg62nVzUdJonZwOhZVvAMw==", + "dev": true, + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "cross-zip": "^4.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/maker-zip/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/maker-zip/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/maker-zip/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/plugin-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.4.2.tgz", + "integrity": "sha512-g6AAtQ7fZ94djBmwcnWasQ8xgaNVNjgaQ00GLK0NkmQ7n0PNbsnlMDuw9vdfTiL6WaLg5nxNSYc9bFJP/rtyeA==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/publisher-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.4.2.tgz", + "integrity": "sha512-Tnf9O8MFzdT1gsb5EDDaQUoslt7gUuUywtsr+lT/fpBlBQbei2fvioTwvZ1Q1cmsKnld7XhRh6unfgdWLTZzgw==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.4.2.tgz", + "integrity": "sha512-vsQh+64Fr2Vxg6k8DAahWq4MAdB2F2qTig+LgIJENv8ksbzC1YIq05SBAS/g2674cdr7WdwyukMy2rgxe3rhnQ==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-base/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@electron-forge/template-base/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/template-base/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/template-base/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/template-vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-6.4.2.tgz", + "integrity": "sha512-NX7jHRblBmIqufMbqWgpI/VnpgF/qMSTq9ZPmDSXamBhid336MC6+DoWzDpXceQZEp0m/jpMLR04ynr8O4jGlg==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-6.4.2.tgz", + "integrity": "sha512-h3pn6onvC/nLglmJuelYU82Qzrh0l6MqvbBGoT39bbDoRLIqmlhWTWppHgDJVXAGrSoH+9BEpptipeBQWirFwg==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/template-vite-typescript/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/template-vite-typescript/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/template-vite/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/template-vite/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/template-vite/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/template-webpack": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.4.2.tgz", + "integrity": "sha512-9QYr/td4cmnGOj8UF25W6An/eI+JXj9T/b+KFybL3cQ87H1yrQOn2T84Bm5/JaB4SPdIu4FdKRjqwR7C7R0g2w==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-webpack-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-6.4.2.tgz", + "integrity": "sha512-MPAZQ4v6piCED7NT1LTVQf61o6Eg/laNoKbhbrFBSH1i20OUwbtV2MLj6Op292ynI9+1qdHKmFgctr6qPTCAQw==", + "dev": true, + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-webpack-typescript/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/template-webpack-typescript/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/template-webpack-typescript/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron-forge/template-webpack/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron-forge/template-webpack/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron-forge/template-webpack/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz", + "integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==", + "dev": true, + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/osx-sign/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/osx-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", + "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/rebuild/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.1.3.tgz", + "integrity": "sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw==", + "dev": true, + "optional": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/windows-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "optional": true + }, + "node_modules/@types/node": { + "version": "20.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", + "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/appdmg": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/appdmg/-/appdmg-0.6.6.tgz", + "integrity": "sha512-GRmFKlCG+PWbcYF4LUNonTYmy0GjguDy6Jh9WP8mpd0T6j80XIJyXBiWlD0U+MLNhqV9Nhx49Gl9GpVToulpLg==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "async": "^1.4.2", + "ds-store": "^0.1.5", + "execa": "^1.0.0", + "fs-temp": "^1.0.0", + "fs-xattr": "^0.3.0", + "image-size": "^0.7.4", + "is-my-json-valid": "^2.20.0", + "minimist": "^1.1.3", + "parse-color": "^1.0.0", + "path-exists": "^4.0.0", + "repeat-string": "^1.5.4" + }, + "bin": { + "appdmg": "bin/appdmg.js" + }, + "engines": { + "node": ">=8.5" + } + }, + "node_modules/appdmg/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "optional": true + }, + "node_modules/appdmg/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "optional": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/appdmg/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "optional": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/appdmg/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "optional": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/appdmg/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/appdmg/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "optional": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/appdmg/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/appdmg/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/appdmg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/appdmg/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "optional": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/appdmg/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/appdmg/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + "dev": true, + "optional": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/asar/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base32-encode": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.2.0.tgz", + "integrity": "sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==", + "dev": true, + "optional": true, + "dependencies": { + "to-data-view": "^1.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/bplist-creator": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", + "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", + "dev": true, + "optional": true, + "dependencies": { + "stream-buffers": "~2.2.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "optional": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "optional": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn-windows-exe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz", + "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "is-wsl": "^2.2.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-zip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.1.tgz", + "integrity": "sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=12.10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "optional": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ds-store": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ds-store/-/ds-store-0.1.6.tgz", + "integrity": "sha512-kY21M6Lz+76OS3bnCzjdsJSF7LBpLYGCVfavW8TgQD2XkcqIZ86W0y9qUDZu6fp7SIZzqosMDW2zi7zVFfv4hw==", + "dev": true, + "optional": true, + "dependencies": { + "bplist-creator": "~0.0.3", + "macos-alias": "~0.2.5", + "tn1150": "^0.1.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/electron": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-18.1.0.tgz", + "integrity": "sha512-P55wdHNTRMo7a/agC84ZEZDYEK/pTBcQdlp8lFbHcx3mO4Kr+Im/J5p2uQgiuXtown31HqNh2paL3V0p+E6rpQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^1.13.0", + "@types/node": "^16.11.26", + "extract-zip": "^1.0.3" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 8.6" + } + }, + "node_modules/electron-installer-common": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.3.tgz", + "integrity": "sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==", + "dev": true, + "optional": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "asar": "^3.0.0", + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "glob": "^7.1.4", + "lodash": "^4.17.15", + "parse-author": "^2.0.0", + "semver": "^7.1.1", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "url": "https://github.com/electron-userland/electron-installer-common?sponsor=1" + }, + "optionalDependencies": { + "@types/fs-extra": "^9.0.1" + } + }, + "node_modules/electron-installer-common/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-common/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-installer-common/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz", + "integrity": "sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==", + "dev": true, + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "get-folder-size": "^2.0.1", + "lodash": "^4.17.4", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-debian": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-installer-debian/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "optional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-dmg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/electron-installer-dmg/-/electron-installer-dmg-4.0.0.tgz", + "integrity": "sha512-g3W6XnyUa7QGrAF7ViewHdt6bXV2KYU1Pm1CY3pZpp+H6mOjCHHAhf/iZAxtaX1ERCb+SQHz7xSsAHuNH9I8ZQ==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.2", + "minimist": "^1.1.1" + }, + "bin": { + "electron-installer-dmg": "bin/electron-installer-dmg.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "optionalDependencies": { + "appdmg": "^0.6.4" + } + }, + "node_modules/electron-installer-redhat": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz", + "integrity": "sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==", + "dev": true, + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-redhat": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-installer-redhat/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "optional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz", + "integrity": "sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==", + "deprecated": "Please use @electron/packager moving forward. There is no API change, just a package name change", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@electron/get": "^2.0.0", + "@electron/notarize": "^1.2.3", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^1.3.2", + "cross-spawn-windows-exe": "^1.2.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^3.0.1", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 14.17.5" + }, + "funding": { + "url": "https://github.com/electron/electron-packager?sponsor=1" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz", + "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/electron-packager/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/electron-packager/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-packager/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron/node_modules/@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1" + } + }, + "node_modules/electron/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/electron/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "16.18.106", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.106.tgz", + "integrity": "sha512-YTgQUcpdXRc7iiEMutkkXl9WUx5lGUCVYvnfRg9CV+IA4l9epctEhCTbaw4KgzXaKYv8emvFJkEM65+MkNUhsQ==", + "dev": true + }, + "node_modules/electron/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/electron/node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/electron/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/electron/node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/electron/node_modules/got/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/electron/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/electron/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/electron/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/electron/node_modules/responselike/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "dev": true, + "optional": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "optional": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/flora-colossus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/flora-colossus/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/flora-colossus/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fmix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", + "dev": true, + "optional": true, + "dependencies": { + "imul": "^1.0.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-temp": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fs-temp/-/fs-temp-1.2.1.tgz", + "integrity": "sha512-okTwLB7/Qsq82G6iN5zZJFsOfZtx2/pqrA7Hk/9fvy+c+eJS9CvgGXT2uNxwnI14BDY9L/jQPkaBgSvlKfSW9w==", + "dev": true, + "optional": true, + "dependencies": { + "random-path": "^0.1.0" + } + }, + "node_modules/fs-xattr": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fs-xattr/-/fs-xattr-0.3.1.tgz", + "integrity": "sha512-UVqkrEW0GfDabw4C3HOrFlxKfx0eeigfRne69FxSBdHIP8Qt5Sq6Pu3RM9KmMlkygtC4pPKkj5CiPO5USnj2GA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/galactus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/galactus/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/galactus/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/gar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", + "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "optional": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-property": "^1.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-folder-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", + "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", + "dev": true, + "optional": true, + "dependencies": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + }, + "bin": { + "get-folder-size": "bin/get-folder-size" + } + }, + "node_modules/get-installed-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", + "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", + "dev": true, + "dependencies": { + "global-modules": "1.0.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "optional": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/get-package-info/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-package-info/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "optional": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "optional": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz", + "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imul": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-my-ip-valid": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "dev": true, + "optional": true + }, + "node_modules/is-my-json-valid": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", + "dev": true, + "optional": true, + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true, + "optional": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/macos-alias": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/macos-alias/-/macos-alias-0.2.11.tgz", + "integrity": "sha512-zIUs3+qpml+w3wiRuADutd7XIO8UABqksot10Utl/tji4UxZzLG4fWDC+yJZoO8/Ehg5RqsvSRE/6TS5AEOeWw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.4.0" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/murmur-32": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/murmur-32/-/murmur-32-0.2.0.tgz", + "integrity": "sha512-ZkcWZudylwF+ir3Ld1n7gL6bI2mQAzXvSobPwVtu8aYi2sbXeipeSkdcanRLzIofLcM5F53lGaKm2dk7orBi7Q==", + "dev": true, + "optional": true, + "dependencies": { + "encode-utf8": "^1.0.3", + "fmix": "^0.1.0", + "imul": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "dev": true, + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.67.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", + "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-api-version": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", + "dev": true, + "dependencies": { + "author-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-color": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", + "integrity": "sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "~0.5.0" + } + }, + "node_modules/parse-color/node_modules/color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==", + "dev": true, + "optional": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "optional": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "optional": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/python-shell": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/python-shell/-/python-shell-3.0.1.tgz", + "integrity": "sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/random-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/random-path/-/random-path-0.1.2.tgz", + "integrity": "sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw==", + "dev": true, + "optional": true, + "dependencies": { + "base32-encode": "^0.1.0 || ^1.0.0", + "murmur-32": "^0.1.0 || ^0.2.0" + } + }, + "node_modules/rcedit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz", + "integrity": "sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==", + "dev": true, + "dependencies": { + "cross-spawn-windows-exe": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-package/-/resolve-package-1.0.1.tgz", + "integrity": "sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g==", + "dev": true, + "dependencies": { + "get-installed-path": "^2.0.3" + }, + "engines": { + "node": ">=4", + "npm": ">=2" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "dev": true + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "optional": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tiny-each-async": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", + "integrity": "sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==", + "dev": true, + "optional": true + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "optional": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tn1150": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tn1150/-/tn1150-0.1.0.tgz", + "integrity": "sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w==", + "dev": true, + "optional": true, + "dependencies": { + "unorm": "^1.4.1" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/to-data-view": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", + "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", + "dev": true, + "optional": true + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/username/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/username/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/username/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yarn-or-npm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz", + "integrity": "sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.5", + "pkg-dir": "^4.2.0" + }, + "bin": { + "yarn-or-npm": "bin/index.js", + "yon": "bin/index.js" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/yarn-or-npm/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/yarn-or-npm/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-or-npm/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-or-npm/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yarn-or-npm/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-or-npm/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-or-npm/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yarn-or-npm/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-or-npm/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json index 6c9968d..34bd781 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "belljar", "description": "A tool for mouse neurohistology", - "version": "9.5.2", + "version": "10.0.0", "main": "main.js", "repository": "asoronow/belljar", "author": "Alec ", diff --git a/py/csv/legacy_graph.json b/py/csv/legacy_graph.json new file mode 100644 index 0000000..590781c --- /dev/null +++ b/py/csv/legacy_graph.json @@ -0,0 +1,882 @@ +[ + "[0]", + "[1]", + "grey", + "CH", + "CTX", + "CTXpl", + "Isocortex", + "FRP", + "FRP1", + "FRP2\/3", + "MO", + "MOp", + "MOp1", + "MOp2\/3", + "MOp5", + "MOp6a", + "MOp6b", + "MOs", + "MOs1", + "MOs2\/3", + "MOs5", + "MOs6a", + "MOs6b", + "SS", + "SSp", + "SSp-n", + "SSp-n1", + "SSp-n2\/3", + "SSp-n4", + "SSp-n5", + "SSp-n6a", + "SSp-n6b", + "SSp-bfd", + "SSp-bfd1", + "SSp-bfd2\/3", + "SSp-bfd4", + "SSp-bfd5", + "SSp-bfd6a", + "SSp-bfd6b", + "SSp-ll", + "SSp-ll1", + "SSp-ll2\/3", + "SSp-ll4", + "SSp-ll5", + "SSp-ll6a", + "SSp-ll6b", + "SSp-m", + "SSp-m1", + "SSp-m2\/3", + "SSp-m4", + "SSp-m5", + "SSp-m6a", + "SSp-m6b", + "SSp-ul", + "SSp-ul1", + "SSp-ul2\/3", + "SSp-ul4", + "SSp-ul5", + "SSp-ul6a", + "SSp-ul6b", + "SSp-tr", + "SSp-tr1", + "SSp-tr2\/3", + "SSp-tr4", + "SSp-tr5", + "SSp-tr6a", + "SSp-tr6b", + "SSp-un", + "SSp-un1", + "SSp-un2\/3", + "SSp-un4", + "SSp-un5", + "SSp-un6a", + "SSp-un6b", + "SSs", + "SSs1", + "SSs2\/3", + "SSs4", + "SSs5", + "SSs6a", + "SSs6b", + "GU", + "GU1", + "GU2\/3", + "GU4", + "GU5", + "GU6a", + "GU6b", + "VISC", + "VISC1", + "VISC2\/3", + "VISC4", + "VISC5", + "VISC6a", + "VISC6b", + "AUD", + "AUDd", + "AUDd1", + "AUDd2\/3", + "AUDd4", + "AUDd5", + "AUDd6a", + "AUDd6b", + "AUDp", + "AUDp1", + "AUDp2\/3", + "AUDp4", + "AUDp5", + "AUDp6a", + "AUDp6b", + "AUDpo", + "AUDpo1", + "AUDpo2\/3", + "AUDpo4", + "AUDpo5", + "AUDpo6a", + "AUDpo6b", + "AUDv", + "AUDv1", + "AUDv2\/3", + "AUDv4", + "AUDv5", + "AUDv6a", + "AUDv6b", + "VIS", + "VISal", + "VISal1", + "VISal2\/3", + "VISal4", + "VISal5", + "VISal6a", + "VISal6b", + "VISam", + "VISam1", + "VISam2\/3", + "VISam4", + "VISam5", + "VISam6a", + "VISam6b", + "VISl", + "VISl1", + "VISl2\/3", + "VISl4", + "VISl5", + "VISl6a", + "VISl6b", + "VISp", + "VISp1", + "VISp2\/3", + "VISp4", + "VISp5", + "VISp6a", + "VISp6b", + "VISpl", + "VISpl1", + "VISpl2\/3", + "VISpl4", + "VISpl5", + "VISpl6a", + "VISpl6b", + "VISpm", + "VISpm1", + "VISpm2\/3", + "VISpm4", + "VISpm5", + "VISpm6a", + "VISpm6b", + "ACA", + "ACAd", + "ACAd1", + "ACAd2\/3", + "ACAd5", + "ACAd6a", + "ACAd6b", + "ACAv", + "ACAv1", + "ACAv2\/3", + "ACAv5", + "ACAv6a", + "ACAv6b", + "PL", + "PL1", + "PL2", + "PL2\/3", + "PL5", + "PL6a", + "PL6b", + "ILA", + "ILA1", + "ILA2", + "ILA2\/3", + "ILA5", + "ILA6a", + "ILA6b", + "ORB", + "ORBl", + "ORBl1", + "ORBl2\/3", + "ORBl5", + "ORBl6a", + "ORBl6b", + "ORBm", + "ORBm1", + "ORBm2", + "ORBm2\/3", + "ORBm5", + "ORBm6a", + "ORBvl", + "ORBvl1", + "ORBvl2\/3", + "ORBvl5", + "ORBvl6a", + "ORBvl6b", + "AI", + "AId", + "AId1", + "AId2\/3", + "AId5", + "AId6a", + "AId6b", + "AIp", + "AIp1", + "AIp2\/3", + "AIp5", + "AIp6a", + "AIv", + "AIv1", + "AIv2\/3", + "AIv5", + "AIv6a", + "AIv6b", + "RSP", + "RSPagl", + "RSPagl1", + "RSPagl2\/3", + "RSPagl5", + "RSPagl6a", + "RSPagl6b", + "RSPd", + "RSPd1", + "RSPd2\/3", + "RSPd5", + "RSPd6a", + "RSPd6b", + "RSPv", + "RSPv1", + "RSPv2", + "RSPv2\/3", + "RSPv5", + "RSPv6a", + "RSPv6b", + "PTLp", + "PTLp1", + "PTLp2\/3", + "PTLp4", + "PTLp5", + "PTLp6a", + "PTLp6b", + "TEa", + "TEa1", + "TEa2\/3", + "TEa4", + "TEa5", + "TEa6a", + "TEa6b", + "PERI", + "PERI6a", + "PERI6b", + "PERI1", + "PERI5", + "PERI2\/3", + "ECT", + "ECT1", + "ECT2\/3", + "ECT5", + "ECT6a", + "ECT6b", + "OLF", + "MOB", + "MOBgl", + "MOBgr", + "MOBipl", + "MOBmi", + "MOBopl", + "AOB", + "AOBgl", + "AOBgr", + "AOBmi", + "AON", + "AONd", + "AONe", + "AONl", + "AONm", + "AONpv", + "AON1", + "TT", + "TTd", + "TTd1", + "TTd2", + "TTd3", + "TTd4", + "TTv", + "TTv1", + "TTv2", + "TTv3", + "DP", + "DP1", + "DP2\/3", + "DP5", + "DP6a", + "PIR", + "PIR1", + "PIR2", + "PIR3", + "NLOT", + "NLOT1", + "NLOT2", + "NLOT3", + "COA", + "COAa", + "COAa1", + "COAa2", + "COAp", + "COApl", + "COApl1", + "COApl2", + "COApl3", + "COApm", + "COApm1", + "COApm2", + "COApm3", + "PAA", + "PAA1", + "PAA2", + "PAA3", + "TR", + "TR1", + "TR2", + "TR3", + "HPF", + "HIP", + "CA", + "CA1", + "CA1slm", + "CA1so", + "CA1sp", + "CA1sr", + "CA2", + "CA2slm", + "CA2so", + "CA2sp", + "CA2sr", + "CA3", + "CA3slm", + "CA3slu", + "CA3so", + "CA3sp", + "CA3sr", + "DG", + "DG-mo", + "DG-po", + "DG-sg", + "FC", + "IG", + "RHP", + "ENT", + "ENTl", + "ENTl1", + "ENTl2", + "ENTl2\/3", + "ENTl2a", + "ENTl2b", + "ENTl3", + "ENTl4", + "ENTl4\/5", + "ENTl5", + "ENTl6a", + "ENTl6b", + "ENTm", + "ENTm1", + "ENTm2", + "ENTm2a", + "ENTm2b", + "ENTm3", + "ENTm4", + "ENTm5", + "ENTm6", + "ENTmv", + "ENTmv1", + "ENTmv2", + "ENTmv3", + "ENTmv5\/6", + "PAR", + "PAR1", + "PAR2", + "PAR3", + "POST", + "POST1", + "POST2", + "POST3", + "PRE", + "PRE1", + "PRE2", + "PRE3", + "SUB", + "SUBd", + "SUBd-m", + "SUBd-sp", + "SUBd-sr", + "SUBv", + "SUBv-m", + "SUBv-sp", + "SUBv-sr", + "CTXsp", + "CLA", + "EP", + "EPd", + "EPv", + "LA", + "BLA", + "BLAa", + "BLAp", + "BLAv", + "BMA", + "BMAa", + "BMAp", + "PA", + "CNU", + "STR", + "STRd", + "CP", + "STRv", + "ACB", + "FS", + "OT", + "isl", + "islm", + "OT1", + "OT2", + "OT3", + "LSX", + "LS", + "LSc", + "LSr", + "LSv", + "SF", + "SH", + "sAMY", + "AAA", + "BA", + "CEA", + "CEAc", + "CEAl", + "CEAm", + "IA", + "MEA", + "MEAad", + "MEAav", + "MEApd", + "MEApd-a", + "MEApd-b", + "MEApd-c", + "MEApv", + "PAL", + "PALd", + "GPe", + "GPi", + "PALv", + "SI", + "MA", + "PALm", + "MSC", + "MS", + "NDB", + "TRS", + "PALc", + "BST", + "BSTa", + "BSTal", + "BSTam", + "BSTdm", + "BSTfu", + "BSTju", + "BSTmg", + "BSTov", + "BSTrh", + "BSTv", + "BSTp", + "BSTd", + "BSTpr", + "BSTif", + "BSTtr", + "BSTse", + "BAC", + "BS", + "IB", + "TH", + "DORsm", + "VENT", + "VAL", + "VM", + "VP", + "VPL", + "VPLpc", + "VPM", + "VPMpc", + "SPF", + "SPFm", + "SPFp", + "SPA", + "PP", + "GENd", + "MG", + "MGd", + "MGv", + "MGm", + "LGd", + "DORpm", + "LAT", + "LP", + "PO", + "POL", + "SGN", + "ATN", + "AV", + "AM", + "AMd", + "AMv", + "AD", + "IAM", + "IAD", + "LD", + "MED", + "IMD", + "MD", + "MDc", + "MDl", + "MDm", + "SMT", + "PR", + "MTN", + "PVT", + "PT", + "RE", + "ILM", + "RH", + "CM", + "PCN", + "CL", + "PF", + "RT", + "GENv", + "IGL", + "LGv", + "SubG", + "EPI", + "MH", + "LH", + "HY", + "PVZ", + "SO", + "ASO", + "NC", + "PVH", + "PVHm", + "PVHmm", + "PVHpm", + "PVHpml", + "PVHpmm", + "PVHp", + "PVHap", + "PVHmpd", + "PVHpv", + "PVa", + "PVi", + "ARH", + "PVR", + "ADP", + "AVP", + "AVPV", + "DMH", + "DMHa", + "DMHp", + "DMHv", + "MEPO", + "MPO", + "OV", + "PD", + "PS", + "PVp", + "PVpo", + "SBPV", + "SCH", + "SFO", + "VLPO", + "MEZ", + "AHN", + "AHNa", + "AHNc", + "AHNp", + "MBO", + "LM", + "MM", + "Mmme", + "SUM", + "SUMl", + "SUMm", + "TM", + "TMd", + "TMv", + "MPN", + "MPNc", + "MPNl", + "MPNm", + "PMd", + "PMv", + "PVHd", + "PVHdp", + "PVHf", + "PVHlp", + "PVHmpv", + "VMH", + "VMHa", + "VMHc", + "VMHdm", + "VMHvl", + "PH", + "LZ", + "LHA", + "LPO", + "PST", + "PSTN", + "RCH", + "STN", + "TU", + "ZI", + "A13", + "FF", + "ME", + "MB", + "MBsen", + "SCs", + "SCop", + "SCsg", + "SCzo", + "IC", + "ICc", + "ICd", + "ICe", + "NB", + "SAG", + "PBG", + "MEV", + "MBmot", + "SNr", + "VTA", + "RR", + "MRN", + "SCm", + "SCdg", + "SCdw", + "SCiw", + "SCig", + "SCig-a", + "SCig-b", + "SCig-c", + "PAG", + "PRC", + "INC", + "ND", + "PRT", + "APN", + "MPT", + "NOT", + "NPC", + "OP", + "PPT", + "CUN", + "RN", + "III", + "EW", + "IV", + "VTN", + "AT", + "LT", + "MBsta", + "SNc", + "PPN", + "RAmb", + "IF", + "IPN", + "RL", + "CLI", + "DR", + "HB", + "P", + "P-sen", + "NLL", + "NLLd", + "NLLh", + "NLLv", + "PSV", + "PB", + "KF", + "PBl", + "PBlc", + "PBld", + "PBle", + "PBls", + "PBlv", + "PBm", + "PBme", + "PBmm", + "SOC", + "POR", + "SOCm", + "SOCl", + "P-mot", + "B", + "DTN", + "PCG", + "PG", + "PRNc", + "SG", + "SUT", + "TRN", + "V", + "P-sat", + "CS", + "CSl", + "CSm", + "LC", + "LDT", + "NI", + "PRNr", + "RPO", + "SLC", + "SLD", + "MY", + "MY-sen", + "AP", + "CN", + "CNlam", + "CNspg", + "DCO", + "VCO", + "DCN", + "CU", + "GR", + "ECU", + "NTB", + "NTS", + "NTSce", + "NTSco", + "NTSge", + "NTSl", + "NTSm", + "SPVC", + "SPVI", + "SPVO", + "SPVOcdm", + "SPVOmdmd", + "SPVOmdmv", + "SPVOrdm", + "SPVOvl", + "MY-mot", + "VI", + "VII", + "ACVII", + "AMB", + "AMBd", + "AMBv", + "DMX", + "GRN", + "ICB", + "IO", + "IRN", + "ISN", + "LIN", + "LRN", + "LRNm", + "LRNp", + "MARN", + "MDRN", + "MDRNd", + "MDRNv", + "PARN", + "PAS", + "PGRN", + "PGRNd", + "PGRNl", + "PHY", + "NR", + "PRP", + "PPY", + "VNC", + "LAV", + "MV", + "SPIV", + "SUV", + "x", + "XII", + "y", + "MY-sat", + "RM", + "RPA", + "RO", + "CB", + "CBX", + "VERM", + "LING", + "LINGmo", + "LINGgr", + "CENT", + "CENT2", + "CENT2mo", + "CENT2gr", + "CENT3", + "CENT3mo", + "CENT3gr", + "CUL", + "CUL4, 5", + "CUL4, 5mo", + "CUL4, 5gr", + "DEC", + "DECmo", + "DECgr", + "FOTU", + "FOTUmo", + "FOTUgr", + "PYR", + "PYRmo", + "PYRgr", + "UVU", + "UVUmo", + "UVUgr", + "NOD", + "NODmo", + "NODgr", + "HEM", + "SIM", + "SIMmo", + "SIMgr", + "AN", + "ANcr1", + "ANcr1mo", + "ANcr1gr", + "ANcr2", + "ANcr2mo", + "ANcr2gr", + "PRM", + "PRMmo", + "PRMgr", + "COPY", + "COPYmo", + "COPYgr", + "PFL", + "PFLmo", + "PFLgr", + "FL", + "FLmo", + "FLgr", + "CBN", + "FN", + "IP", + "DN", + "[866]", + "[867]", + "[868]", + "[869]", + "[870]", + "[871]", + "[872]", + "[873]", + "[874]", + "[875]", + "[876]", + "[877]", + "[878]", + "[879]" + ] \ No newline at end of file diff --git a/py/csv/structure_graph.json b/py/csv/structure_graph.json new file mode 100644 index 0000000..0096e63 --- /dev/null +++ b/py/csv/structure_graph.json @@ -0,0 +1,17540 @@ +{ + "id": 997, + "atlas_id": -1, + "ontology_id": 1, + "acronym": "root", + "name": "root", + "color_hex_triplet": "FFFFFF", + "graph_order": 0, + "st_level": 0, + "hemisphere_id": 3, + "parent_structure_id": null, + "children": [ + { + "id": 8, + "atlas_id": 0, + "ontology_id": 1, + "acronym": "grey", + "name": "Basic cell groups and regions", + "color_hex_triplet": "BFDAE3", + "graph_order": 1, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 567, + "atlas_id": 70, + "ontology_id": 1, + "acronym": "CH", + "name": "Cerebrum", + "color_hex_triplet": "B0F0FF", + "graph_order": 2, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 688, + "atlas_id": 85, + "ontology_id": 1, + "acronym": "CTX", + "name": "Cerebral cortex", + "color_hex_triplet": "B0FFB8", + "graph_order": 3, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 567, + "children": [ + { + "id": 695, + "atlas_id": 86, + "ontology_id": 1, + "acronym": "CTXpl", + "name": "Cortical plate", + "color_hex_triplet": "70FF70", + "graph_order": 4, + "st_level": 4, + "hemisphere_id": 3, + "parent_structure_id": 688, + "children": [ + { + "id": 315, + "atlas_id": 746, + "ontology_id": 1, + "acronym": "Isocortex", + "name": "Isocortex", + "color_hex_triplet": "70FF71", + "graph_order": 5, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 184, + "atlas_id": 871, + "ontology_id": 1, + "acronym": "FRP", + "name": "Frontal pole, cerebral cortex", + "color_hex_triplet": "268F45", + "graph_order": 6, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 68, + "atlas_id": 998, + "ontology_id": 1, + "acronym": "FRP1", + "name": "Frontal pole, layer 1", + "color_hex_triplet": "268F45", + "graph_order": 7, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 667, + "atlas_id": 1073, + "ontology_id": 1, + "acronym": "FRP2/3", + "name": "Frontal pole, layer 2/3", + "color_hex_triplet": "268F45", + "graph_order": 8, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 526157192, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP5", + "name": "Frontal pole, layer 5", + "color_hex_triplet": "268F45", + "graph_order": 9, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 526157196, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP6a", + "name": "Frontal pole, layer 6a", + "color_hex_triplet": "268F45", + "graph_order": 10, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 526322264, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP6b", + "name": "Frontal pole, layer 6b", + "color_hex_triplet": "268F45", + "graph_order": 11, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + } + ] + }, + { + "id": 500, + "atlas_id": 203, + "ontology_id": 1, + "acronym": "MO", + "name": "Somatomotor areas", + "color_hex_triplet": "1F9D5A", + "graph_order": 12, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 107, + "atlas_id": 1003, + "ontology_id": 1, + "acronym": "MO1", + "name": "Somatomotor areas, Layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 13, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 219, + "atlas_id": 1017, + "ontology_id": 1, + "acronym": "MO2/3", + "name": "Somatomotor areas, Layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 14, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 299, + "atlas_id": 1027, + "ontology_id": 1, + "acronym": "MO5", + "name": "Somatomotor areas, Layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 15, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 644, + "atlas_id": 787, + "ontology_id": 1, + "acronym": "MO6a", + "name": "Somatomotor areas, Layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 16, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 947, + "atlas_id": 825, + "ontology_id": 1, + "acronym": "MO6b", + "name": "Somatomotor areas, Layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 17, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 985, + "atlas_id": 830, + "ontology_id": 1, + "acronym": "MOp", + "name": "Primary motor area", + "color_hex_triplet": "1F9D5A", + "graph_order": 18, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [ + { + "id": 320, + "atlas_id": 888, + "ontology_id": 1, + "acronym": "MOp1", + "name": "Primary motor area, Layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 19, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 943, + "atlas_id": 966, + "ontology_id": 1, + "acronym": "MOp2/3", + "name": "Primary motor area, Layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 20, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 648, + "atlas_id": 929, + "ontology_id": 1, + "acronym": "MOp5", + "name": "Primary motor area, Layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 21, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 844, + "atlas_id": 1095, + "ontology_id": 1, + "acronym": "MOp6a", + "name": "Primary motor area, Layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 22, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 882, + "atlas_id": 1100, + "ontology_id": 1, + "acronym": "MOp6b", + "name": "Primary motor area, Layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 23, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + } + ] + }, + { + "id": 993, + "atlas_id": 831, + "ontology_id": 1, + "acronym": "MOs", + "name": "Secondary motor area", + "color_hex_triplet": "1F9D5A", + "graph_order": 24, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [ + { + "id": 656, + "atlas_id": 930, + "ontology_id": 1, + "acronym": "MOs1", + "name": "Secondary motor area, layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 25, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 962, + "atlas_id": 1110, + "ontology_id": 1, + "acronym": "MOs2/3", + "name": "Secondary motor area, layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 26, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 767, + "atlas_id": 944, + "ontology_id": 1, + "acronym": "MOs5", + "name": "Secondary motor area, layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 27, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 1021, + "atlas_id": 1117, + "ontology_id": 1, + "acronym": "MOs6a", + "name": "Secondary motor area, layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 28, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 1085, + "atlas_id": 1125, + "ontology_id": 1, + "acronym": "MOs6b", + "name": "Secondary motor area, layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 29, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + } + ] + } + ] + }, + { + "id": 453, + "atlas_id": 339, + "ontology_id": 1, + "acronym": "SS", + "name": "Somatosensory areas", + "color_hex_triplet": "188064", + "graph_order": 30, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 12993, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS1", + "name": "Somatosensory areas, layer 1", + "color_hex_triplet": "188064", + "graph_order": 31, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12994, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS2/3", + "name": "Somatosensory areas, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 32, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12995, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS4", + "name": "Somatosensory areas, layer 4", + "color_hex_triplet": "188064", + "graph_order": 33, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12996, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS5", + "name": "Somatosensory areas, layer 5", + "color_hex_triplet": "188064", + "graph_order": 34, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12997, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS6a", + "name": "Somatosensory areas, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 35, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12998, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS6b", + "name": "Somatosensory areas, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 36, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 322, + "atlas_id": 747, + "ontology_id": 1, + "acronym": "SSp", + "name": "Primary somatosensory area", + "color_hex_triplet": "188064", + "graph_order": 37, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [ + { + "id": 793, + "atlas_id": 1089, + "ontology_id": 1, + "acronym": "SSp1", + "name": "Primary somatosensory area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 38, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 346, + "atlas_id": 1033, + "ontology_id": 1, + "acronym": "SSp2/3", + "name": "Primary somatosensory area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 39, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 865, + "atlas_id": 1098, + "ontology_id": 1, + "acronym": "SSp4", + "name": "Primary somatosensory area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 40, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 921, + "atlas_id": 1105, + "ontology_id": 1, + "acronym": "SSp5", + "name": "Primary somatosensory area, layer 5", + "color_hex_triplet": "188064", + "graph_order": 41, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 686, + "atlas_id": 934, + "ontology_id": 1, + "acronym": "SSp6a", + "name": "Primary somatosensory area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 42, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 719, + "atlas_id": 938, + "ontology_id": 1, + "acronym": "SSp6b", + "name": "Primary somatosensory area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 43, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 353, + "atlas_id": 751, + "ontology_id": 1, + "acronym": "SSp-n", + "name": "Primary somatosensory area, nose", + "color_hex_triplet": "188064", + "graph_order": 44, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 558, + "atlas_id": 635, + "ontology_id": 1, + "acronym": "SSp-n1", + "name": "Primary somatosensory area, nose, layer 1", + "color_hex_triplet": "188064", + "graph_order": 45, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 838, + "atlas_id": 953, + "ontology_id": 1, + "acronym": "SSp-n2/3", + "name": "Primary somatosensory area, nose, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 46, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 654, + "atlas_id": 647, + "ontology_id": 1, + "acronym": "SSp-n4", + "name": "Primary somatosensory area, nose, layer 4", + "color_hex_triplet": "188064", + "graph_order": 47, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 702, + "atlas_id": 653, + "ontology_id": 1, + "acronym": "SSp-n5", + "name": "Primary somatosensory area, nose, layer 5", + "color_hex_triplet": "188064", + "graph_order": 48, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 889, + "atlas_id": 1101, + "ontology_id": 1, + "acronym": "SSp-n6a", + "name": "Primary somatosensory area, nose, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 49, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 929, + "atlas_id": 1106, + "ontology_id": 1, + "acronym": "SSp-n6b", + "name": "Primary somatosensory area, nose, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 50, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + } + ] + }, + { + "id": 329, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd", + "name": "Primary somatosensory area, barrel field", + "color_hex_triplet": "188064", + "graph_order": 51, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 981, + "atlas_id": 971, + "ontology_id": 1, + "acronym": "SSp-bfd1", + "name": "Primary somatosensory area, barrel field, layer 1", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 201, + "atlas_id": 1015, + "ontology_id": 1, + "acronym": "SSp-bfd2/3", + "name": "Primary somatosensory area, barrel field, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1047, + "atlas_id": 979, + "ontology_id": 1, + "acronym": "SSp-bfd4", + "name": "Primary somatosensory area, barrel field, layer 4", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1070, + "atlas_id": 982, + "ontology_id": 1, + "acronym": "SSp-bfd5", + "name": "Primary somatosensory area, barrel field, layer 5", + "color_hex_triplet": "188064", + "graph_order": 55, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1038, + "atlas_id": 978, + "ontology_id": 1, + "acronym": "SSp-bfd6a", + "name": "Primary somatosensory area, barrel field, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 56, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1062, + "atlas_id": 981, + "ontology_id": 1, + "acronym": "SSp-bfd6b", + "name": "Primary somatosensory area, barrel field, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 57, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 480149202, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll", + "name": "Rostrolateral lateral visual area", + "color_hex_triplet": "188064", + "graph_order": 58, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 480149206, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll1", + "name": "Rostrolateral lateral visual area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 59, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149210, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll2/3", + "name": "Rostrolateral lateral visual area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 60, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149214, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll4", + "name": "Rostrolateral lateral visual area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 61, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149218, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll5", + "name": "Rostrolateral lateral visual area,layer 5", + "color_hex_triplet": "188064", + "graph_order": 62, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149222, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll6a", + "name": "Rostrolateral lateral visual area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 63, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149226, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll6b", + "name": "Rostrolateral lateral visual area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 64, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + } + ] + } + ] + }, + { + "id": 337, + "atlas_id": 749, + "ontology_id": 1, + "acronym": "SSp-ll", + "name": "Primary somatosensory area, lower limb", + "color_hex_triplet": "188064", + "graph_order": 65, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 1030, + "atlas_id": 977, + "ontology_id": 1, + "acronym": "SSp-ll1", + "name": "Primary somatosensory area, lower limb, layer 1", + "color_hex_triplet": "188064", + "graph_order": 66, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 113, + "atlas_id": 1004, + "ontology_id": 1, + "acronym": "SSp-ll2/3", + "name": "Primary somatosensory area, lower limb, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 67, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 1094, + "atlas_id": 985, + "ontology_id": 1, + "acronym": "SSp-ll4", + "name": "Primary somatosensory area, lower limb, layer 4", + "color_hex_triplet": "188064", + "graph_order": 68, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 1128, + "atlas_id": 989, + "ontology_id": 1, + "acronym": "SSp-ll5", + "name": "Primary somatosensory area, lower limb, layer 5", + "color_hex_triplet": "188064", + "graph_order": 69, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 478, + "atlas_id": 625, + "ontology_id": 1, + "acronym": "SSp-ll6a", + "name": "Primary somatosensory area, lower limb, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 70, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 510, + "atlas_id": 629, + "ontology_id": 1, + "acronym": "SSp-ll6b", + "name": "Primary somatosensory area, lower limb, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 71, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + } + ] + }, + { + "id": 345, + "atlas_id": 750, + "ontology_id": 1, + "acronym": "SSp-m", + "name": "Primary somatosensory area, mouth", + "color_hex_triplet": "188064", + "graph_order": 72, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 878, + "atlas_id": 958, + "ontology_id": 1, + "acronym": "SSp-m1", + "name": "Primary somatosensory area, mouth, layer 1", + "color_hex_triplet": "188064", + "graph_order": 73, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 657, + "atlas_id": 1072, + "ontology_id": 1, + "acronym": "SSp-m2/3", + "name": "Primary somatosensory area, mouth, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 74, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 950, + "atlas_id": 967, + "ontology_id": 1, + "acronym": "SSp-m4", + "name": "Primary somatosensory area, mouth, layer 4", + "color_hex_triplet": "188064", + "graph_order": 75, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 974, + "atlas_id": 970, + "ontology_id": 1, + "acronym": "SSp-m5", + "name": "Primary somatosensory area, mouth, layer 5", + "color_hex_triplet": "188064", + "graph_order": 76, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 1102, + "atlas_id": 986, + "ontology_id": 1, + "acronym": "SSp-m6a", + "name": "Primary somatosensory area, mouth, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 77, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 2, + "atlas_id": 990, + "ontology_id": 1, + "acronym": "SSp-m6b", + "name": "Primary somatosensory area, mouth, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 78, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + } + ] + }, + { + "id": 369, + "atlas_id": 753, + "ontology_id": 1, + "acronym": "SSp-ul", + "name": "Primary somatosensory area, upper limb", + "color_hex_triplet": "188064", + "graph_order": 79, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 450, + "atlas_id": 1046, + "ontology_id": 1, + "acronym": "SSp-ul1", + "name": "Primary somatosensory area, upper limb, layer 1", + "color_hex_triplet": "188064", + "graph_order": 80, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 854, + "atlas_id": 955, + "ontology_id": 1, + "acronym": "SSp-ul2/3", + "name": "Primary somatosensory area, upper limb, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 81, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 577, + "atlas_id": 1062, + "ontology_id": 1, + "acronym": "SSp-ul4", + "name": "Primary somatosensory area, upper limb, layer 4", + "color_hex_triplet": "188064", + "graph_order": 82, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 625, + "atlas_id": 1068, + "ontology_id": 1, + "acronym": "SSp-ul5", + "name": "Primary somatosensory area, upper limb, layer 5", + "color_hex_triplet": "188064", + "graph_order": 83, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 945, + "atlas_id": 1108, + "ontology_id": 1, + "acronym": "SSp-ul6a", + "name": "Primary somatosensory area, upper limb, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 84, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 1026, + "atlas_id": 1118, + "ontology_id": 1, + "acronym": "SSp-ul6b", + "name": "Primary somatosensory area, upper limb, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 85, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + } + ] + }, + { + "id": 361, + "atlas_id": 752, + "ontology_id": 1, + "acronym": "SSp-tr", + "name": "Primary somatosensory area, trunk", + "color_hex_triplet": "188064", + "graph_order": 86, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 1006, + "atlas_id": 974, + "ontology_id": 1, + "acronym": "SSp-tr1", + "name": "Primary somatosensory area, trunk, layer 1", + "color_hex_triplet": "188064", + "graph_order": 87, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 670, + "atlas_id": 649, + "ontology_id": 1, + "acronym": "SSp-tr2/3", + "name": "Primary somatosensory area, trunk, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 88, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 1086, + "atlas_id": 984, + "ontology_id": 1, + "acronym": "SSp-tr4", + "name": "Primary somatosensory area, trunk, layer 4", + "color_hex_triplet": "188064", + "graph_order": 89, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 1111, + "atlas_id": 987, + "ontology_id": 1, + "acronym": "SSp-tr5", + "name": "Primary somatosensory area, trunk, layer 5", + "color_hex_triplet": "188064", + "graph_order": 90, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 9, + "atlas_id": 991, + "ontology_id": 1, + "acronym": "SSp-tr6a", + "name": "Primary somatosensory area, trunk, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 91, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 461, + "atlas_id": 623, + "ontology_id": 1, + "acronym": "SSp-tr6b", + "name": "Primary somatosensory area, trunk, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 92, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + } + ] + }, + { + "id": 182305689, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un", + "name": "Primary somatosensory area, unassigned", + "color_hex_triplet": "188064", + "graph_order": 93, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 182305693, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un1", + "name": "Primary somatosensory area, unassigned, layer 1", + "color_hex_triplet": "188064", + "graph_order": 94, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305697, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un2/3", + "name": "Primary somatosensory area, unassigned, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 95, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305701, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un4", + "name": "Primary somatosensory area, unassigned, layer 4", + "color_hex_triplet": "188064", + "graph_order": 96, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305705, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un5", + "name": "Primary somatosensory area, unassigned, layer 5", + "color_hex_triplet": "188064", + "graph_order": 97, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305709, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un6a", + "name": "Primary somatosensory area, unassigned, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 98, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305713, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un6b", + "name": "Primary somatosensory area, unassigned, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 99, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + } + ] + } + ] + }, + { + "id": 378, + "atlas_id": 754, + "ontology_id": 1, + "acronym": "SSs", + "name": "Supplemental somatosensory area", + "color_hex_triplet": "188064", + "graph_order": 100, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [ + { + "id": 873, + "atlas_id": 1099, + "ontology_id": 1, + "acronym": "SSs1", + "name": "Supplemental somatosensory area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 101, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 806, + "atlas_id": 949, + "ontology_id": 1, + "acronym": "SSs2/3", + "name": "Supplemental somatosensory area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 102, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 1035, + "atlas_id": 1119, + "ontology_id": 1, + "acronym": "SSs4", + "name": "Supplemental somatosensory area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 103, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 1090, + "atlas_id": 1126, + "ontology_id": 1, + "acronym": "SSs5", + "name": "Supplemental somatosensory area, layer 5", + "color_hex_triplet": "188064", + "graph_order": 104, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 862, + "atlas_id": 956, + "ontology_id": 1, + "acronym": "SSs6a", + "name": "Supplemental somatosensory area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 105, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 893, + "atlas_id": 960, + "ontology_id": 1, + "acronym": "SSs6b", + "name": "Supplemental somatosensory area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 106, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + } + ] + } + ] + }, + { + "id": 1057, + "atlas_id": 131, + "ontology_id": 1, + "acronym": "GU", + "name": "Gustatory areas", + "color_hex_triplet": "009C75", + "graph_order": 107, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 36, + "atlas_id": 994, + "ontology_id": 1, + "acronym": "GU1", + "name": "Gustatory areas, layer 1", + "color_hex_triplet": "009C75", + "graph_order": 108, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 180, + "atlas_id": 729, + "ontology_id": 1, + "acronym": "GU2/3", + "name": "Gustatory areas, layer 2/3", + "color_hex_triplet": "009C75", + "graph_order": 109, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 148, + "atlas_id": 1008, + "ontology_id": 1, + "acronym": "GU4", + "name": "Gustatory areas, layer 4", + "color_hex_triplet": "009C75", + "graph_order": 110, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 187, + "atlas_id": 1013, + "ontology_id": 1, + "acronym": "GU5", + "name": "Gustatory areas, layer 5", + "color_hex_triplet": "009C75", + "graph_order": 111, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 638, + "atlas_id": 645, + "ontology_id": 1, + "acronym": "GU6a", + "name": "Gustatory areas, layer 6a", + "color_hex_triplet": "009C75", + "graph_order": 112, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 662, + "atlas_id": 648, + "ontology_id": 1, + "acronym": "GU6b", + "name": "Gustatory areas, layer 6b", + "color_hex_triplet": "009C75", + "graph_order": 113, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + } + ] + }, + { + "id": 677, + "atlas_id": 367, + "ontology_id": 1, + "acronym": "VISC", + "name": "Visceral area", + "color_hex_triplet": "11AD83", + "graph_order": 114, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 897, + "atlas_id": 1102, + "ontology_id": 1, + "acronym": "VISC1", + "name": "Visceral area, layer 1", + "color_hex_triplet": "11AD83", + "graph_order": 115, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 1106, + "atlas_id": 1128, + "ontology_id": 1, + "acronym": "VISC2/3", + "name": "Visceral area, layer 2/3", + "color_hex_triplet": "11AD83", + "graph_order": 116, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 1010, + "atlas_id": 1116, + "ontology_id": 1, + "acronym": "VISC4", + "name": "Visceral area, layer 4", + "color_hex_triplet": "11AD83", + "graph_order": 117, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 1058, + "atlas_id": 1122, + "ontology_id": 1, + "acronym": "VISC5", + "name": "Visceral area, layer 5", + "color_hex_triplet": "11AD83", + "graph_order": 118, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 857, + "atlas_id": 1097, + "ontology_id": 1, + "acronym": "VISC6a", + "name": "Visceral area, layer 6a", + "color_hex_triplet": "11AD83", + "graph_order": 119, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 849, + "atlas_id": 1096, + "ontology_id": 1, + "acronym": "VISC6b", + "name": "Visceral area, layer 6b", + "color_hex_triplet": "11AD83", + "graph_order": 120, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + } + ] + }, + { + "id": 247, + "atlas_id": 30, + "ontology_id": 1, + "acronym": "AUD", + "name": "Auditory areas", + "color_hex_triplet": "019399", + "graph_order": 121, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 1011, + "atlas_id": 833, + "ontology_id": 1, + "acronym": "AUDd", + "name": "Dorsal auditory area", + "color_hex_triplet": "019399", + "graph_order": 122, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 527, + "atlas_id": 631, + "ontology_id": 1, + "acronym": "AUDd1", + "name": "Dorsal auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 123, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 600, + "atlas_id": 923, + "ontology_id": 1, + "acronym": "AUDd2/3", + "name": "Dorsal auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 124, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 678, + "atlas_id": 650, + "ontology_id": 1, + "acronym": "AUDd4", + "name": "Dorsal auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 125, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 252, + "atlas_id": 738, + "ontology_id": 1, + "acronym": "AUDd5", + "name": "Dorsal auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 126, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 156, + "atlas_id": 1009, + "ontology_id": 1, + "acronym": "AUDd6a", + "name": "Dorsal auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 127, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 243, + "atlas_id": 1020, + "ontology_id": 1, + "acronym": "AUDd6b", + "name": "Dorsal auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 128, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 480149230, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla", + "name": "Laterolateral anterior visual area", + "color_hex_triplet": "019399", + "graph_order": 129, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [ + { + "id": 480149234, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla1", + "name": "Laterolateral anterior visual area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 130, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149238, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla2/3", + "name": "Laterolateral anterior visual area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 131, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149242, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla4", + "name": "Laterolateral anterior visual area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 132, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149246, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla5", + "name": "Laterolateral anterior visual area,layer 5", + "color_hex_triplet": "019399", + "graph_order": 133, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149250, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla6a", + "name": "Laterolateral anterior visual area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 134, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149254, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla6b", + "name": "Laterolateral anterior visual area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 135, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + } + ] + } + ] + }, + { + "id": 1002, + "atlas_id": 832, + "ontology_id": 1, + "acronym": "AUDp", + "name": "Primary auditory area", + "color_hex_triplet": "019399", + "graph_order": 136, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 735, + "atlas_id": 940, + "ontology_id": 1, + "acronym": "AUDp1", + "name": "Primary auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 137, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 251, + "atlas_id": 1021, + "ontology_id": 1, + "acronym": "AUDp2/3", + "name": "Primary auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 138, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 816, + "atlas_id": 950, + "ontology_id": 1, + "acronym": "AUDp4", + "name": "Primary auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 139, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 847, + "atlas_id": 954, + "ontology_id": 1, + "acronym": "AUDp5", + "name": "Primary auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 140, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 954, + "atlas_id": 1109, + "ontology_id": 1, + "acronym": "AUDp6a", + "name": "Primary auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 141, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 1005, + "atlas_id": 1115, + "ontology_id": 1, + "acronym": "AUDp6b", + "name": "Primary auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 142, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + } + ] + }, + { + "id": 1027, + "atlas_id": 835, + "ontology_id": 1, + "acronym": "AUDpo", + "name": "Posterior auditory area", + "color_hex_triplet": "019399", + "graph_order": 143, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 696, + "atlas_id": 935, + "ontology_id": 1, + "acronym": "AUDpo1", + "name": "Posterior auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 144, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 643, + "atlas_id": 1070, + "ontology_id": 1, + "acronym": "AUDpo2/3", + "name": "Posterior auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 145, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 759, + "atlas_id": 943, + "ontology_id": 1, + "acronym": "AUDpo4", + "name": "Posterior auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 146, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 791, + "atlas_id": 947, + "ontology_id": 1, + "acronym": "AUDpo5", + "name": "Posterior auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 147, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 249, + "atlas_id": 455, + "ontology_id": 1, + "acronym": "AUDpo6a", + "name": "Posterior auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 148, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 456, + "atlas_id": 622, + "ontology_id": 1, + "acronym": "AUDpo6b", + "name": "Posterior auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 149, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + } + ] + }, + { + "id": 1018, + "atlas_id": 834, + "ontology_id": 1, + "acronym": "AUDv", + "name": "Ventral auditory area", + "color_hex_triplet": "019399", + "graph_order": 150, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 959, + "atlas_id": 968, + "ontology_id": 1, + "acronym": "AUDv1", + "name": "Ventral auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 151, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 755, + "atlas_id": 1084, + "ontology_id": 1, + "acronym": "AUDv2/3", + "name": "Ventral auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 152, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 990, + "atlas_id": 972, + "ontology_id": 1, + "acronym": "AUDv4", + "name": "Ventral auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 153, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 1023, + "atlas_id": 976, + "ontology_id": 1, + "acronym": "AUDv5", + "name": "Ventral auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 154, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 520, + "atlas_id": 630, + "ontology_id": 1, + "acronym": "AUDv6a", + "name": "Ventral auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 155, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 598, + "atlas_id": 640, + "ontology_id": 1, + "acronym": "AUDv6b", + "name": "Ventral auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 156, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + } + ] + } + ] + }, + { + "id": 669, + "atlas_id": 366, + "ontology_id": 1, + "acronym": "VIS", + "name": "Visual areas", + "color_hex_triplet": "08858C", + "graph_order": 157, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 801, + "atlas_id": 1090, + "ontology_id": 1, + "acronym": "VIS1", + "name": "Visual areas, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 158, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 561, + "atlas_id": 1060, + "ontology_id": 1, + "acronym": "VIS2/3", + "name": "Visual areas, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 159, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 913, + "atlas_id": 1104, + "ontology_id": 1, + "acronym": "VIS4", + "name": "Visual areas, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 160, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 937, + "atlas_id": 1107, + "ontology_id": 1, + "acronym": "VIS5", + "name": "Visual areas, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 161, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 457, + "atlas_id": 1047, + "ontology_id": 1, + "acronym": "VIS6a", + "name": "Visual areas, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 162, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 497, + "atlas_id": 1052, + "ontology_id": 1, + "acronym": "VIS6b", + "name": "Visual areas, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 163, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 402, + "atlas_id": 757, + "ontology_id": 1, + "acronym": "VISal", + "name": "Anterolateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 164, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 1074, + "atlas_id": 1124, + "ontology_id": 1, + "acronym": "VISal1", + "name": "Anterolateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 165, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 905, + "atlas_id": 1103, + "ontology_id": 1, + "acronym": "VISal2/3", + "name": "Anterolateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 166, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 1114, + "atlas_id": 1129, + "ontology_id": 1, + "acronym": "VISal4", + "name": "Anterolateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 167, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 233, + "atlas_id": 453, + "ontology_id": 1, + "acronym": "VISal5", + "name": "Anterolateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 168, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 601, + "atlas_id": 1065, + "ontology_id": 1, + "acronym": "VISal6a", + "name": "Anterolateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 169, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 649, + "atlas_id": 1071, + "ontology_id": 1, + "acronym": "VISal6b", + "name": "Anterolateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 170, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + } + ] + }, + { + "id": 394, + "atlas_id": 756, + "ontology_id": 1, + "acronym": "VISam", + "name": "Anteromedial visual area", + "color_hex_triplet": "08858C", + "graph_order": 171, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 281, + "atlas_id": 1025, + "ontology_id": 1, + "acronym": "VISam1", + "name": "Anteromedial visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 172, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 1066, + "atlas_id": 1123, + "ontology_id": 1, + "acronym": "VISam2/3", + "name": "Anteromedial visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 173, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 401, + "atlas_id": 1040, + "ontology_id": 1, + "acronym": "VISam4", + "name": "Anteromedial visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 174, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 433, + "atlas_id": 1044, + "ontology_id": 1, + "acronym": "VISam5", + "name": "Anteromedial visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 175, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 1046, + "atlas_id": 696, + "ontology_id": 1, + "acronym": "VISam6a", + "name": "Anteromedial visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 176, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 441, + "atlas_id": 762, + "ontology_id": 1, + "acronym": "VISam6b", + "name": "Anteromedial visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 177, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + } + ] + }, + { + "id": 409, + "atlas_id": 758, + "ontology_id": 1, + "acronym": "VISl", + "name": "Lateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 178, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 421, + "atlas_id": 618, + "ontology_id": 1, + "acronym": "VISl1", + "name": "Lateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 179, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 973, + "atlas_id": 687, + "ontology_id": 1, + "acronym": "VISl2/3", + "name": "Lateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 180, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 573, + "atlas_id": 637, + "ontology_id": 1, + "acronym": "VISl4", + "name": "Lateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 181, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 613, + "atlas_id": 642, + "ontology_id": 1, + "acronym": "VISl5", + "name": "Lateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 182, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 74, + "atlas_id": 999, + "ontology_id": 1, + "acronym": "VISl6a", + "name": "Lateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 183, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 121, + "atlas_id": 1005, + "ontology_id": 1, + "acronym": "VISl6b", + "name": "Lateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 184, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + } + ] + }, + { + "id": 385, + "atlas_id": 755, + "ontology_id": 1, + "acronym": "VISp", + "name": "Primary visual area", + "color_hex_triplet": "08858C", + "graph_order": 185, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 593, + "atlas_id": 1064, + "ontology_id": 1, + "acronym": "VISp1", + "name": "Primary visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 186, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 821, + "atlas_id": 951, + "ontology_id": 1, + "acronym": "VISp2/3", + "name": "Primary visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 187, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 721, + "atlas_id": 1080, + "ontology_id": 1, + "acronym": "VISp4", + "name": "Primary visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 188, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 778, + "atlas_id": 1087, + "ontology_id": 1, + "acronym": "VISp5", + "name": "Primary visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 189, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 33, + "atlas_id": 428, + "ontology_id": 1, + "acronym": "VISp6a", + "name": "Primary visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 190, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 305, + "atlas_id": 462, + "ontology_id": 1, + "acronym": "VISp6b", + "name": "Primary visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 191, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + } + ] + }, + { + "id": 425, + "atlas_id": 760, + "ontology_id": 1, + "acronym": "VISpl", + "name": "Posterolateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 192, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 750, + "atlas_id": 942, + "ontology_id": 1, + "acronym": "VISpl1", + "name": "Posterolateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 193, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 269, + "atlas_id": 882, + "ontology_id": 1, + "acronym": "VISpl2/3", + "name": "Posterolateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 194, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 869, + "atlas_id": 957, + "ontology_id": 1, + "acronym": "VISpl4", + "name": "Posterolateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 195, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 902, + "atlas_id": 961, + "ontology_id": 1, + "acronym": "VISpl5", + "name": "Posterolateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 196, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 377, + "atlas_id": 1037, + "ontology_id": 1, + "acronym": "VISpl6a", + "name": "Posterolateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 197, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 393, + "atlas_id": 1039, + "ontology_id": 1, + "acronym": "VISpl6b", + "name": "Posterolateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 198, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + } + ] + }, + { + "id": 533, + "atlas_id": 915, + "ontology_id": 1, + "acronym": "VISpm", + "name": "posteromedial visual area", + "color_hex_triplet": "08858C", + "graph_order": 199, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 805, + "atlas_id": 383, + "ontology_id": 1, + "acronym": "VISpm1", + "name": "posteromedial visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 200, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 41, + "atlas_id": 995, + "ontology_id": 1, + "acronym": "VISpm2/3", + "name": "posteromedial visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 201, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 501, + "atlas_id": 628, + "ontology_id": 1, + "acronym": "VISpm4", + "name": "posteromedial visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 202, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 565, + "atlas_id": 636, + "ontology_id": 1, + "acronym": "VISpm5", + "name": "posteromedial visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 203, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 257, + "atlas_id": 456, + "ontology_id": 1, + "acronym": "VISpm6a", + "name": "posteromedial visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 204, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 469, + "atlas_id": 624, + "ontology_id": 1, + "acronym": "VISpm6b", + "name": "posteromedial visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 205, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + } + ] + }, + { + "id": 312782574, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli", + "name": "Laterointermediate area", + "color_hex_triplet": "08858C", + "graph_order": 206, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 312782578, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli1", + "name": "Laterointermediate area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 207, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782582, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli2/3", + "name": "Laterointermediate area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 208, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782586, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli4", + "name": "Laterointermediate area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 209, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782590, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli5", + "name": "Laterointermediate area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 210, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782594, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli6a", + "name": "Laterointermediate area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 211, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782598, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli6b", + "name": "Laterointermediate area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 212, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + } + ] + }, + { + "id": 312782628, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor", + "name": "Postrhinal area", + "color_hex_triplet": "08858C", + "graph_order": 213, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 312782632, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor1", + "name": "Postrhinal area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 214, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782636, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor2/3", + "name": "Postrhinal area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 215, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782640, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor4", + "name": "Postrhinal area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 216, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782644, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor5", + "name": "Postrhinal area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 217, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782648, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor6a", + "name": "Postrhinal area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 218, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782652, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor6b", + "name": "Postrhinal area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 219, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + } + ] + } + ] + }, + { + "id": 31, + "atlas_id": 3, + "ontology_id": 1, + "acronym": "ACA", + "name": "Anterior cingulate area", + "color_hex_triplet": "40A666", + "graph_order": 220, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 572, + "atlas_id": 1061, + "ontology_id": 1, + "acronym": "ACA1", + "name": "Anterior cingulate area, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 221, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 1053, + "atlas_id": 1121, + "ontology_id": 1, + "acronym": "ACA2/3", + "name": "Anterior cingulate area, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 222, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 739, + "atlas_id": 1082, + "ontology_id": 1, + "acronym": "ACA5", + "name": "Anterior cingulate area, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 223, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 179, + "atlas_id": 1012, + "ontology_id": 1, + "acronym": "ACA6a", + "name": "Anterior cingulate area, layer 6a", + "color_hex_triplet": "40A666", + "graph_order": 224, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 227, + "atlas_id": 1018, + "ontology_id": 1, + "acronym": "ACA6b", + "name": "Anterior cingulate area, layer 6b", + "color_hex_triplet": "40A666", + "graph_order": 225, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 39, + "atlas_id": 4, + "ontology_id": 1, + "acronym": "ACAd", + "name": "Anterior cingulate area, dorsal part", + "color_hex_triplet": "40A666", + "graph_order": 226, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [ + { + "id": 935, + "atlas_id": 965, + "ontology_id": 1, + "acronym": "ACAd1", + "name": "Anterior cingulate area, dorsal part, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 227, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 211, + "atlas_id": 1016, + "ontology_id": 1, + "acronym": "ACAd2/3", + "name": "Anterior cingulate area, dorsal part, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 228, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 1015, + "atlas_id": 975, + "ontology_id": 1, + "acronym": "ACAd5", + "name": "Anterior cingulate area, dorsal part, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 229, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 919, + "atlas_id": 963, + "ontology_id": 1, + "acronym": "ACAd6a", + "name": "Anterior cingulate area, dorsal part, layer 6a", + "color_hex_triplet": "40A666", + "graph_order": 230, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 927, + "atlas_id": 964, + "ontology_id": 1, + "acronym": "ACAd6b", + "name": "Anterior cingulate area, dorsal part, layer 6b", + "color_hex_triplet": "40A666", + "graph_order": 231, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + } + ] + }, + { + "id": 48, + "atlas_id": 5, + "ontology_id": 1, + "acronym": "ACAv", + "name": "Anterior cingulate area, ventral part", + "color_hex_triplet": "40A666", + "graph_order": 232, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [ + { + "id": 588, + "atlas_id": 1063, + "ontology_id": 1, + "acronym": "ACAv1", + "name": "Anterior cingulate area, ventral part, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 233, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 296, + "atlas_id": 885, + "ontology_id": 1, + "acronym": "ACAv2/3", + "name": "Anterior cingulate area, ventral part, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 234, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 772, + "atlas_id": 1086, + "ontology_id": 1, + "acronym": "ACAv5", + "name": "Anterior cingulate area, ventral part, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 235, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 810, + "atlas_id": 1091, + "ontology_id": 1, + "acronym": "ACAv6a", + "name": "Anterior cingulate area, ventral part, 6a", + "color_hex_triplet": "40A666", + "graph_order": 236, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 819, + "atlas_id": 1092, + "ontology_id": 1, + "acronym": "ACAv6b", + "name": "Anterior cingulate area, ventral part, 6b", + "color_hex_triplet": "40A666", + "graph_order": 237, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + } + ] + } + ] + }, + { + "id": 972, + "atlas_id": 262, + "ontology_id": 1, + "acronym": "PL", + "name": "Prelimbic area", + "color_hex_triplet": "2FA850", + "graph_order": 238, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 171, + "atlas_id": 1011, + "ontology_id": 1, + "acronym": "PL1", + "name": "Prelimbic area, layer 1", + "color_hex_triplet": "2FA850", + "graph_order": 239, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 195, + "atlas_id": 1014, + "ontology_id": 1, + "acronym": "PL2", + "name": "Prelimbic area, layer 2", + "color_hex_triplet": "2FA850", + "graph_order": 240, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 304, + "atlas_id": 886, + "ontology_id": 1, + "acronym": "PL2/3", + "name": "Prelimbic area, layer 2/3", + "color_hex_triplet": "2FA850", + "graph_order": 241, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 363, + "atlas_id": 1035, + "ontology_id": 1, + "acronym": "PL5", + "name": "Prelimbic area, layer 5", + "color_hex_triplet": "2FA850", + "graph_order": 242, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 84, + "atlas_id": 1000, + "ontology_id": 1, + "acronym": "PL6a", + "name": "Prelimbic area, layer 6a", + "color_hex_triplet": "2FA850", + "graph_order": 243, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 132, + "atlas_id": 1006, + "ontology_id": 1, + "acronym": "PL6b", + "name": "Prelimbic area, layer 6b", + "color_hex_triplet": "2FA850", + "graph_order": 244, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + } + ] + }, + { + "id": 44, + "atlas_id": 146, + "ontology_id": 1, + "acronym": "ILA", + "name": "Infralimbic area", + "color_hex_triplet": "59B363", + "graph_order": 245, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 707, + "atlas_id": 1078, + "ontology_id": 1, + "acronym": "ILA1", + "name": "Infralimbic area, layer 1", + "color_hex_triplet": "59B363", + "graph_order": 246, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 747, + "atlas_id": 1083, + "ontology_id": 1, + "acronym": "ILA2", + "name": "Infralimbic area, layer 2", + "color_hex_triplet": "59B363", + "graph_order": 247, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 556, + "atlas_id": 1059, + "ontology_id": 1, + "acronym": "ILA2/3", + "name": "Infralimbic area, layer 2/3", + "color_hex_triplet": "59B363", + "graph_order": 248, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 827, + "atlas_id": 1093, + "ontology_id": 1, + "acronym": "ILA5", + "name": "Infralimbic area, layer 5", + "color_hex_triplet": "59B363", + "graph_order": 249, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 1054, + "atlas_id": 980, + "ontology_id": 1, + "acronym": "ILA6a", + "name": "Infralimbic area, layer 6a", + "color_hex_triplet": "59B363", + "graph_order": 250, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 1081, + "atlas_id": 983, + "ontology_id": 1, + "acronym": "ILA6b", + "name": "Infralimbic area, layer 6b", + "color_hex_triplet": "59B363", + "graph_order": 251, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + } + ] + }, + { + "id": 714, + "atlas_id": 230, + "ontology_id": 1, + "acronym": "ORB", + "name": "Orbital area", + "color_hex_triplet": "248A5E", + "graph_order": 252, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 264, + "atlas_id": 881, + "ontology_id": 1, + "acronym": "ORB1", + "name": "Orbital area, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 253, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 492, + "atlas_id": 1051, + "ontology_id": 1, + "acronym": "ORB2/3", + "name": "Orbital area, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 254, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 352, + "atlas_id": 892, + "ontology_id": 1, + "acronym": "ORB5", + "name": "Orbital area, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 255, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 476, + "atlas_id": 1049, + "ontology_id": 1, + "acronym": "ORB6a", + "name": "Orbital area, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 256, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 516, + "atlas_id": 1054, + "ontology_id": 1, + "acronym": "ORB6b", + "name": "Orbital area, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 257, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 723, + "atlas_id": 231, + "ontology_id": 1, + "acronym": "ORBl", + "name": "Orbital area, lateral part", + "color_hex_triplet": "248A5E", + "graph_order": 258, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 448, + "atlas_id": 621, + "ontology_id": 1, + "acronym": "ORBl1", + "name": "Orbital area, lateral part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 259, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 412, + "atlas_id": 1041, + "ontology_id": 1, + "acronym": "ORBl2/3", + "name": "Orbital area, lateral part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 260, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 630, + "atlas_id": 644, + "ontology_id": 1, + "acronym": "ORBl5", + "name": "Orbital area, lateral part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 261, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 440, + "atlas_id": 620, + "ontology_id": 1, + "acronym": "ORBl6a", + "name": "Orbital area, lateral part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 262, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 488, + "atlas_id": 626, + "ontology_id": 1, + "acronym": "ORBl6b", + "name": "Orbital area, lateral part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 263, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + } + ] + }, + { + "id": 731, + "atlas_id": 232, + "ontology_id": 1, + "acronym": "ORBm", + "name": "Orbital area, medial part", + "color_hex_triplet": "248A5E", + "graph_order": 264, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 484, + "atlas_id": 1050, + "ontology_id": 1, + "acronym": "ORBm1", + "name": "Orbital area, medial part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 265, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 524, + "atlas_id": 1055, + "ontology_id": 1, + "acronym": "ORBm2", + "name": "Orbital area, medial part, layer 2", + "color_hex_triplet": "248A5E", + "graph_order": 266, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 582, + "atlas_id": 638, + "ontology_id": 1, + "acronym": "ORBm2/3", + "name": "Orbital area, medial part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 267, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 620, + "atlas_id": 1067, + "ontology_id": 1, + "acronym": "ORBm5", + "name": "Orbital area, medial part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 268, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 910, + "atlas_id": 962, + "ontology_id": 1, + "acronym": "ORBm6a", + "name": "Orbital area, medial part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 269, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 527696977, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ORBm6b", + "name": "Orbital area, medial part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 270, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + } + ] + }, + { + "id": 738, + "atlas_id": 233, + "ontology_id": 1, + "acronym": "ORBv", + "name": "Orbital area, ventral part", + "color_hex_triplet": "248A5E", + "graph_order": 271, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 746, + "atlas_id": 234, + "ontology_id": 1, + "acronym": "ORBvl", + "name": "Orbital area, ventrolateral part", + "color_hex_triplet": "248A5E", + "graph_order": 272, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 969, + "atlas_id": 1111, + "ontology_id": 1, + "acronym": "ORBvl1", + "name": "Orbital area, ventrolateral part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 273, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 288, + "atlas_id": 884, + "ontology_id": 1, + "acronym": "ORBvl2/3", + "name": "Orbital area, ventrolateral part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 274, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 1125, + "atlas_id": 1130, + "ontology_id": 1, + "acronym": "ORBvl5", + "name": "Orbital area, ventrolateral part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 275, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 608, + "atlas_id": 924, + "ontology_id": 1, + "acronym": "ORBvl6a", + "name": "Orbital area, ventrolateral part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 276, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 680, + "atlas_id": 933, + "ontology_id": 1, + "acronym": "ORBvl6b", + "name": "Orbital area, ventrolateral part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 277, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + } + ] + } + ] + }, + { + "id": 95, + "atlas_id": 11, + "ontology_id": 1, + "acronym": "AI", + "name": "Agranular insular area", + "color_hex_triplet": "219866", + "graph_order": 278, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 104, + "atlas_id": 12, + "ontology_id": 1, + "acronym": "AId", + "name": "Agranular insular area, dorsal part", + "color_hex_triplet": "219866", + "graph_order": 279, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 996, + "atlas_id": 1114, + "ontology_id": 1, + "acronym": "AId1", + "name": "Agranular insular area, dorsal part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 280, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 328, + "atlas_id": 889, + "ontology_id": 1, + "acronym": "AId2/3", + "name": "Agranular insular area, dorsal part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 281, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 1101, + "atlas_id": 1127, + "ontology_id": 1, + "acronym": "AId5", + "name": "Agranular insular area, dorsal part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 282, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 783, + "atlas_id": 946, + "ontology_id": 1, + "acronym": "AId6a", + "name": "Agranular insular area, dorsal part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 283, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 831, + "atlas_id": 952, + "ontology_id": 1, + "acronym": "AId6b", + "name": "Agranular insular area, dorsal part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 284, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + } + ] + }, + { + "id": 111, + "atlas_id": 13, + "ontology_id": 1, + "acronym": "AIp", + "name": "Agranular insular area, posterior part", + "color_hex_triplet": "219866", + "graph_order": 285, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 120, + "atlas_id": 863, + "ontology_id": 1, + "acronym": "AIp1", + "name": "Agranular insular area, posterior part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 286, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 163, + "atlas_id": 1010, + "ontology_id": 1, + "acronym": "AIp2/3", + "name": "Agranular insular area, posterior part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 287, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 344, + "atlas_id": 891, + "ontology_id": 1, + "acronym": "AIp5", + "name": "Agranular insular area, posterior part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 288, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 314, + "atlas_id": 1029, + "ontology_id": 1, + "acronym": "AIp6a", + "name": "Agranular insular area, posterior part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 289, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 355, + "atlas_id": 1034, + "ontology_id": 1, + "acronym": "AIp6b", + "name": "Agranular insular area, posterior part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 290, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + } + ] + }, + { + "id": 119, + "atlas_id": 14, + "ontology_id": 1, + "acronym": "AIv", + "name": "Agranular insular area, ventral part", + "color_hex_triplet": "219866", + "graph_order": 291, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 704, + "atlas_id": 936, + "ontology_id": 1, + "acronym": "AIv1", + "name": "Agranular insular area, ventral part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 292, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 694, + "atlas_id": 652, + "ontology_id": 1, + "acronym": "AIv2/3", + "name": "Agranular insular area, ventral part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 293, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 800, + "atlas_id": 948, + "ontology_id": 1, + "acronym": "AIv5", + "name": "Agranular insular area, ventral part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 294, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 675, + "atlas_id": 1074, + "ontology_id": 1, + "acronym": "AIv6a", + "name": "Agranular insular area, ventral part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 295, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 699, + "atlas_id": 1077, + "ontology_id": 1, + "acronym": "AIv6b", + "name": "Agranular insular area, ventral part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 296, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + } + ] + } + ] + }, + { + "id": 254, + "atlas_id": 314, + "ontology_id": 1, + "acronym": "RSP", + "name": "Retrosplenial area", + "color_hex_triplet": "1AA698", + "graph_order": 297, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 894, + "atlas_id": 394, + "ontology_id": 1, + "acronym": "RSPagl", + "name": "Retrosplenial area, lateral agranular part", + "color_hex_triplet": "1AA698", + "graph_order": 298, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 671, + "atlas_id": 932, + "ontology_id": 1, + "acronym": "RSPagl1", + "name": "Retrosplenial area, lateral agranular part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 299, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 965, + "atlas_id": 969, + "ontology_id": 1, + "acronym": "RSPagl2/3", + "name": "Retrosplenial area, lateral agranular part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 300, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 774, + "atlas_id": 945, + "ontology_id": 1, + "acronym": "RSPagl5", + "name": "Retrosplenial area, lateral agranular part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 301, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 906, + "atlas_id": 820, + "ontology_id": 1, + "acronym": "RSPagl6a", + "name": "Retrosplenial area, lateral agranular part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 302, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 279, + "atlas_id": 883, + "ontology_id": 1, + "acronym": "RSPagl6b", + "name": "Retrosplenial area, lateral agranular part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 303, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 480149258, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma", + "name": "Mediomedial anterior visual area", + "color_hex_triplet": "1AA698", + "graph_order": 304, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149262, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma1", + "name": "Mediomedial anterior visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 305, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149266, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma2/3", + "name": "Mediomedial anterior visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 306, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149270, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma4", + "name": "Mediomedial anterior visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 307, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149274, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma5", + "name": "Mediomedial anterior visual area,layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 308, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149278, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma6a", + "name": "Mediomedial anterior visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 309, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149282, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma6b", + "name": "Mediomedial anterior visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 310, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + } + ] + }, + { + "id": 480149286, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp", + "name": "Mediomedial posterior visual area", + "color_hex_triplet": "1AA698", + "graph_order": 311, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149290, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp1", + "name": "Mediomedial posterior visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 312, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149294, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp2/3", + "name": "Mediomedial posterior visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 313, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149298, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp4", + "name": "Mediomedial posterior visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 314, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149302, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp5", + "name": "Mediomedial posterior visual area,layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 315, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149306, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp6a", + "name": "Mediomedial posterior visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 316, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149310, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp6b", + "name": "Mediomedial posterior visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 317, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + } + ] + }, + { + "id": 480149314, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm", + "name": "Medial visual area", + "color_hex_triplet": "1AA698", + "graph_order": 318, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149318, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm1", + "name": "Medial visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 319, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149322, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm2/3", + "name": "Medial visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 320, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149326, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm4", + "name": "Medial visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 321, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149330, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm5", + "name": "Medial visual area,layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 322, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149334, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm6a", + "name": "Medial visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 323, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149338, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm6b", + "name": "Medial visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 324, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + } + ] + } + ] + }, + { + "id": 879, + "atlas_id": 392, + "ontology_id": 1, + "acronym": "RSPd", + "name": "Retrosplenial area, dorsal part", + "color_hex_triplet": "1AA698", + "graph_order": 325, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 442, + "atlas_id": 1045, + "ontology_id": 1, + "acronym": "RSPd1", + "name": "Retrosplenial area, dorsal part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 326, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 434, + "atlas_id": 761, + "ontology_id": 1, + "acronym": "RSPd2/3", + "name": "Retrosplenial area, dorsal part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 327, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 545, + "atlas_id": 1058, + "ontology_id": 1, + "acronym": "RSPd4", + "name": "Retrosplenial area, dorsal part, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 328, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 610, + "atlas_id": 1066, + "ontology_id": 1, + "acronym": "RSPd5", + "name": "Retrosplenial area, dorsal part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 329, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 274, + "atlas_id": 1024, + "ontology_id": 1, + "acronym": "RSPd6a", + "name": "Retrosplenial area, dorsal part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 330, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 330, + "atlas_id": 1031, + "ontology_id": 1, + "acronym": "RSPd6b", + "name": "Retrosplenial area, dorsal part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 331, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + } + ] + }, + { + "id": 886, + "atlas_id": 393, + "ontology_id": 1, + "acronym": "RSPv", + "name": "Retrosplenial area, ventral part", + "color_hex_triplet": "1AA698", + "graph_order": 332, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 542, + "atlas_id": 633, + "ontology_id": 1, + "acronym": "RSPv1", + "name": "Retrosplenial area, ventral part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 333, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 606, + "atlas_id": 641, + "ontology_id": 1, + "acronym": "RSPv2", + "name": "Retrosplenial area, ventral part, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 334, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 430, + "atlas_id": 619, + "ontology_id": 1, + "acronym": "RSPv2/3", + "name": "Retrosplenial area, ventral part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 335, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 687, + "atlas_id": 651, + "ontology_id": 1, + "acronym": "RSPv5", + "name": "Retrosplenial area, ventral part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 336, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 590, + "atlas_id": 639, + "ontology_id": 1, + "acronym": "RSPv6a", + "name": "Retrosplenial area, ventral part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 337, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 622, + "atlas_id": 643, + "ontology_id": 1, + "acronym": "RSPv6b", + "name": "Retrosplenial area, ventral part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 338, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + } + ] + } + ] + }, + { + "id": 22, + "atlas_id": 285, + "ontology_id": 1, + "acronym": "PTLp", + "name": "Posterior parietal association areas", + "color_hex_triplet": "009FAC", + "graph_order": 339, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 532, + "atlas_id": 1056, + "ontology_id": 1, + "acronym": "PTLp1", + "name": "Posterior parietal association areas, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 340, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 241, + "atlas_id": 454, + "ontology_id": 1, + "acronym": "PTLp2/3", + "name": "Posterior parietal association areas, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 341, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 635, + "atlas_id": 1069, + "ontology_id": 1, + "acronym": "PTLp4", + "name": "Posterior parietal association areas, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 342, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 683, + "atlas_id": 1075, + "ontology_id": 1, + "acronym": "PTLp5", + "name": "Posterior parietal association areas, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 343, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 308, + "atlas_id": 1028, + "ontology_id": 1, + "acronym": "PTLp6a", + "name": "Posterior parietal association areas, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 344, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 340, + "atlas_id": 1032, + "ontology_id": 1, + "acronym": "PTLp6b", + "name": "Posterior parietal association areas, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 345, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 312782546, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa", + "name": "Anterior area", + "color_hex_triplet": "009FAC", + "graph_order": 346, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [ + { + "id": 312782550, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa1", + "name": "Anterior area, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 347, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782554, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa2/3", + "name": "Anterior area, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 348, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782558, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa4", + "name": "Anterior area, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 349, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782562, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa5", + "name": "Anterior area, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 350, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782566, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa6a", + "name": "Anterior area, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 351, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782570, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa6b", + "name": "Anterior area, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 352, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + } + ] + }, + { + "id": 417, + "atlas_id": 759, + "ontology_id": 1, + "acronym": "VISrl", + "name": "Rostrolateral visual area", + "color_hex_triplet": "009FAC", + "graph_order": 353, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [ + { + "id": 312782604, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl1", + "name": "Rostrolateral area, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 354, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782608, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl2/3", + "name": "Rostrolateral area, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 355, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782612, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl4", + "name": "Rostrolateral area, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 356, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782616, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl5", + "name": "Rostrolateral area, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 357, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782620, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl6a", + "name": "Rostrolateral area, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 358, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782624, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl6b", + "name": "Rostrolateral area, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 359, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + } + ] + } + ] + }, + { + "id": 541, + "atlas_id": 350, + "ontology_id": 1, + "acronym": "TEa", + "name": "Temporal association areas", + "color_hex_triplet": "15B0B3", + "graph_order": 360, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 97, + "atlas_id": 1002, + "ontology_id": 1, + "acronym": "TEa1", + "name": "Temporal association areas, layer 1", + "color_hex_triplet": "15B0B3", + "graph_order": 361, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 1127, + "atlas_id": 706, + "ontology_id": 1, + "acronym": "TEa2/3", + "name": "Temporal association areas, layer 2/3", + "color_hex_triplet": "15B0B3", + "graph_order": 362, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 234, + "atlas_id": 1019, + "ontology_id": 1, + "acronym": "TEa4", + "name": "Temporal association areas, layer 4", + "color_hex_triplet": "15B0B3", + "graph_order": 363, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 289, + "atlas_id": 1026, + "ontology_id": 1, + "acronym": "TEa5", + "name": "Temporal association areas, layer 5", + "color_hex_triplet": "15B0B3", + "graph_order": 364, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 729, + "atlas_id": 1081, + "ontology_id": 1, + "acronym": "TEa6a", + "name": "Temporal association areas, layer 6a", + "color_hex_triplet": "15B0B3", + "graph_order": 365, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 786, + "atlas_id": 1088, + "ontology_id": 1, + "acronym": "TEa6b", + "name": "Temporal association areas, layer 6b", + "color_hex_triplet": "15B0B3", + "graph_order": 366, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + } + ] + }, + { + "id": 922, + "atlas_id": 256, + "ontology_id": 1, + "acronym": "PERI", + "name": "Perirhinal area", + "color_hex_triplet": "0E9684", + "graph_order": 367, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 540, + "atlas_id": 1057, + "ontology_id": 1, + "acronym": "PERI1", + "name": "Perirhinal area, layer 1", + "color_hex_triplet": "0E9684", + "graph_order": 368, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 888, + "atlas_id": 959, + "ontology_id": 1, + "acronym": "PERI2/3", + "name": "Perirhinal area, layer 2/3", + "color_hex_triplet": "0E9684", + "graph_order": 369, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 692, + "atlas_id": 1076, + "ontology_id": 1, + "acronym": "PERI5", + "name": "Perirhinal area, layer 5", + "color_hex_triplet": "0E9684", + "graph_order": 370, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 335, + "atlas_id": 890, + "ontology_id": 1, + "acronym": "PERI6a", + "name": "Perirhinal area, layer 6a", + "color_hex_triplet": "0E9684", + "graph_order": 371, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 368, + "atlas_id": 894, + "ontology_id": 1, + "acronym": "PERI6b", + "name": "Perirhinal area, layer 6b", + "color_hex_triplet": "0E9684", + "graph_order": 372, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + } + ] + }, + { + "id": 895, + "atlas_id": 111, + "ontology_id": 1, + "acronym": "ECT", + "name": "Ectorhinal area", + "color_hex_triplet": "0D9F91", + "graph_order": 373, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 836, + "atlas_id": 1094, + "ontology_id": 1, + "acronym": "ECT1", + "name": "Ectorhinal area/Layer 1", + "color_hex_triplet": "0D9F91", + "graph_order": 374, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 427, + "atlas_id": 1043, + "ontology_id": 1, + "acronym": "ECT2/3", + "name": "Ectorhinal area/Layer 2/3", + "color_hex_triplet": "0D9F91", + "graph_order": 375, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 988, + "atlas_id": 1113, + "ontology_id": 1, + "acronym": "ECT5", + "name": "Ectorhinal area/Layer 5", + "color_hex_triplet": "0D9F91", + "graph_order": 376, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 977, + "atlas_id": 1112, + "ontology_id": 1, + "acronym": "ECT6a", + "name": "Ectorhinal area/Layer 6a", + "color_hex_triplet": "0D9F91", + "graph_order": 377, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 1045, + "atlas_id": 1120, + "ontology_id": 1, + "acronym": "ECT6b", + "name": "Ectorhinal area/Layer 6b", + "color_hex_triplet": "0D9F91", + "graph_order": 378, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + } + ] + } + ] + }, + { + "id": 698, + "atlas_id": 228, + "ontology_id": 1, + "acronym": "OLF", + "name": "Olfactory areas", + "color_hex_triplet": "9AD2BD", + "graph_order": 379, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 507, + "atlas_id": 204, + "ontology_id": 1, + "acronym": "MOB", + "name": "Main olfactory bulb", + "color_hex_triplet": "9AD2BD", + "graph_order": 380, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 212, + "atlas_id": 733, + "ontology_id": 1, + "acronym": "MOBgl", + "name": "Main olfactory bulb, glomerular layer", + "color_hex_triplet": "82C7AE", + "graph_order": 381, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 220, + "atlas_id": 734, + "ontology_id": 1, + "acronym": "MOBgr", + "name": "Main olfactory bulb, granule layer", + "color_hex_triplet": "82C7AE", + "graph_order": 382, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 228, + "atlas_id": 735, + "ontology_id": 1, + "acronym": "MOBipl", + "name": "Main olfactory bulb, inner plexiform layer", + "color_hex_triplet": "9AD2BD", + "graph_order": 383, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 236, + "atlas_id": 736, + "ontology_id": 1, + "acronym": "MOBmi", + "name": "Main olfactory bulb, mitral layer", + "color_hex_triplet": "82C7AE", + "graph_order": 384, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 244, + "atlas_id": 737, + "ontology_id": 1, + "acronym": "MOBopl", + "name": "Main olfactory bulb, outer plexiform layer", + "color_hex_triplet": "9AD2BD", + "graph_order": 385, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + } + ] + }, + { + "id": 151, + "atlas_id": 18, + "ontology_id": 1, + "acronym": "AOB", + "name": "Accessory olfactory bulb", + "color_hex_triplet": "9DF0D2", + "graph_order": 386, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 188, + "atlas_id": 730, + "ontology_id": 1, + "acronym": "AOBgl", + "name": "Accessory olfactory bulb, glomerular layer", + "color_hex_triplet": "9DF0D2", + "graph_order": 387, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + }, + { + "id": 196, + "atlas_id": 731, + "ontology_id": 1, + "acronym": "AOBgr", + "name": "Accessory olfactory bulb, granular layer", + "color_hex_triplet": "95E4C8", + "graph_order": 388, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + }, + { + "id": 204, + "atlas_id": 732, + "ontology_id": 1, + "acronym": "AOBmi", + "name": "Accessory olfactory bulb, mitral layer", + "color_hex_triplet": "9DF0D2", + "graph_order": 389, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + } + ] + }, + { + "id": 159, + "atlas_id": 19, + "ontology_id": 1, + "acronym": "AON", + "name": "Anterior olfactory nucleus", + "color_hex_triplet": "54BF94", + "graph_order": 390, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 167, + "atlas_id": 20, + "ontology_id": 1, + "acronym": "AONd", + "name": "Anterior olfactory nucleus, dorsal part", + "color_hex_triplet": "54BF94", + "graph_order": 391, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 175, + "atlas_id": 21, + "ontology_id": 1, + "acronym": "AONe", + "name": "Anterior olfactory nucleus, external part", + "color_hex_triplet": "54BF94", + "graph_order": 392, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 183, + "atlas_id": 22, + "ontology_id": 1, + "acronym": "AONl", + "name": "Anterior olfactory nucleus, lateral part", + "color_hex_triplet": "54BF94", + "graph_order": 393, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 191, + "atlas_id": 23, + "ontology_id": 1, + "acronym": "AONm", + "name": "Anterior olfactory nucleus, medial part", + "color_hex_triplet": "54BF94", + "graph_order": 394, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 199, + "atlas_id": 24, + "ontology_id": 1, + "acronym": "AONpv", + "name": "Anterior olfactory nucleus, posteroventral part", + "color_hex_triplet": "54BF94", + "graph_order": 395, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 160, + "atlas_id": 868, + "ontology_id": 1, + "acronym": "AON1", + "name": "Anterior olfactory nucleus, layer 1", + "color_hex_triplet": "54BF94", + "graph_order": 396, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 168, + "atlas_id": 869, + "ontology_id": 1, + "acronym": "AON2", + "name": "Anterior olfactory nucleus, layer 2", + "color_hex_triplet": "54BF94", + "graph_order": 397, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + } + ] + }, + { + "id": 589, + "atlas_id": 356, + "ontology_id": 1, + "acronym": "TT", + "name": "Taenia tecta", + "color_hex_triplet": "62D09F", + "graph_order": 398, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 597, + "atlas_id": 357, + "ontology_id": 1, + "acronym": "TTd", + "name": "Taenia tecta, dorsal part", + "color_hex_triplet": "62D09F", + "graph_order": 399, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 589, + "children": [ + { + "id": 297, + "atlas_id": 744, + "ontology_id": 1, + "acronym": "TTd1-4", + "name": "Taenia tecta, dorsal part, layers 1-4", + "color_hex_triplet": "62D09F", + "graph_order": 400, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1034, + "atlas_id": 836, + "ontology_id": 1, + "acronym": "TTd1", + "name": "Taenia tecta, dorsal part, layer 1", + "color_hex_triplet": "62D09F", + "graph_order": 401, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1042, + "atlas_id": 837, + "ontology_id": 1, + "acronym": "TTd2", + "name": "Taenia tecta, dorsal part, layer 2", + "color_hex_triplet": "62D09F", + "graph_order": 402, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1050, + "atlas_id": 838, + "ontology_id": 1, + "acronym": "TTd3", + "name": "Taenia tecta, dorsal part, layer 3", + "color_hex_triplet": "62D09F", + "graph_order": 403, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1059, + "atlas_id": 839, + "ontology_id": 1, + "acronym": "TTd4", + "name": "Taenia tecta, dorsal part, layer 4", + "color_hex_triplet": "62D09F", + "graph_order": 404, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + } + ] + }, + { + "id": 605, + "atlas_id": 358, + "ontology_id": 1, + "acronym": "TTv", + "name": "Taenia tecta, ventral part", + "color_hex_triplet": "62D09F", + "graph_order": 405, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 589, + "children": [ + { + "id": 306, + "atlas_id": 745, + "ontology_id": 1, + "acronym": "TTv1-3", + "name": "Taenia tecta, ventral part, layers 1-3", + "color_hex_triplet": "62D09F", + "graph_order": 406, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1067, + "atlas_id": 840, + "ontology_id": 1, + "acronym": "TTv1", + "name": "Taenia tecta, ventral part, layer 1", + "color_hex_triplet": "62D09F", + "graph_order": 407, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1075, + "atlas_id": 841, + "ontology_id": 1, + "acronym": "TTv2", + "name": "Taenia tecta, ventral part, layer 2", + "color_hex_triplet": "62D09F", + "graph_order": 408, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1082, + "atlas_id": 842, + "ontology_id": 1, + "acronym": "TTv3", + "name": "Taenia tecta, ventral part, layer 3", + "color_hex_triplet": "62D09F", + "graph_order": 409, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + } + ] + } + ] + }, + { + "id": 814, + "atlas_id": 384, + "ontology_id": 1, + "acronym": "DP", + "name": "Dorsal peduncular area", + "color_hex_triplet": "A4DAA4", + "graph_order": 410, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 496, + "atlas_id": 627, + "ontology_id": 1, + "acronym": "DP1", + "name": "Dorsal peduncular area, layer 1", + "color_hex_triplet": "A4DAA4", + "graph_order": 411, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 535, + "atlas_id": 632, + "ontology_id": 1, + "acronym": "DP2", + "name": "Dorsal peduncular area, layer 2", + "color_hex_triplet": "A4DAA4", + "graph_order": 412, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 360, + "atlas_id": 893, + "ontology_id": 1, + "acronym": "DP2/3", + "name": "Dorsal peduncular area, layer 2/3", + "color_hex_triplet": "A4DAA4", + "graph_order": 413, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 646, + "atlas_id": 646, + "ontology_id": 1, + "acronym": "DP5", + "name": "Dorsal peduncular area, layer 5", + "color_hex_triplet": "A4DAA4", + "graph_order": 414, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 267, + "atlas_id": 1023, + "ontology_id": 1, + "acronym": "DP6a", + "name": "Dorsal peduncular area, layer 6a", + "color_hex_triplet": "A4DAA4", + "graph_order": 415, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + } + ] + }, + { + "id": 961, + "atlas_id": 261, + "ontology_id": 1, + "acronym": "PIR", + "name": "Piriform area", + "color_hex_triplet": "6ACBBA", + "graph_order": 416, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 152, + "atlas_id": 867, + "ontology_id": 1, + "acronym": "PIR1-3", + "name": "Piriform area, layers 1-3", + "color_hex_triplet": "6ACBBA", + "graph_order": 417, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 276, + "atlas_id": 741, + "ontology_id": 1, + "acronym": "PIR1", + "name": "Piriform area, molecular layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 418, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 284, + "atlas_id": 742, + "ontology_id": 1, + "acronym": "PIR2", + "name": "Piriform area, pyramidal layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 419, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 291, + "atlas_id": 743, + "ontology_id": 1, + "acronym": "PIR3", + "name": "Piriform area, polymorph layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 420, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + } + ] + }, + { + "id": 619, + "atlas_id": 218, + "ontology_id": 1, + "acronym": "NLOT", + "name": "Nucleus of the lateral olfactory tract", + "color_hex_triplet": "95E4C8", + "graph_order": 421, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 392, + "atlas_id": 897, + "ontology_id": 1, + "acronym": "NLOT1-3", + "name": "Nucleus of the lateral olfactory tract, layers 1-3", + "color_hex_triplet": "95E4C8", + "graph_order": 422, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 260, + "atlas_id": 739, + "ontology_id": 1, + "acronym": "NLOT1", + "name": "Nucleus of the lateral olfactory tract, molecular layer", + "color_hex_triplet": "95E4C8", + "graph_order": 423, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 268, + "atlas_id": 740, + "ontology_id": 1, + "acronym": "NLOT2", + "name": "Nucleus of the lateral olfactory tract, pyramidal layer", + "color_hex_triplet": "95E4C8", + "graph_order": 424, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 1139, + "atlas_id": 1137, + "ontology_id": 1, + "acronym": "NLOT3", + "name": "Nucleus of the lateral olfactory tract, layer 3", + "color_hex_triplet": "95E4C8", + "graph_order": 425, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + } + ] + }, + { + "id": 631, + "atlas_id": 78, + "ontology_id": 1, + "acronym": "COA", + "name": "Cortical amygdalar area", + "color_hex_triplet": "61E7B7", + "graph_order": 426, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 639, + "atlas_id": 79, + "ontology_id": 1, + "acronym": "COAa", + "name": "Cortical amygdalar area, anterior part", + "color_hex_triplet": "61E7B7", + "graph_order": 427, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 631, + "children": [ + { + "id": 192, + "atlas_id": 872, + "ontology_id": 1, + "acronym": "COAa1", + "name": "Cortical amygdalar area, anterior part, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 428, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + }, + { + "id": 200, + "atlas_id": 873, + "ontology_id": 1, + "acronym": "COAa2", + "name": "Cortical amygdalar area, anterior part, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 429, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + }, + { + "id": 208, + "atlas_id": 874, + "ontology_id": 1, + "acronym": "COAa3", + "name": "Cortical amygdalar area, anterior part, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 430, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + } + ] + }, + { + "id": 647, + "atlas_id": 80, + "ontology_id": 1, + "acronym": "COAp", + "name": "Cortical amygdalar area, posterior part", + "color_hex_triplet": "61E7B7", + "graph_order": 431, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 631, + "children": [ + { + "id": 655, + "atlas_id": 81, + "ontology_id": 1, + "acronym": "COApl", + "name": "Cortical amygdalar area, posterior part, lateral zone", + "color_hex_triplet": "61E7B7", + "graph_order": 432, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 647, + "children": [ + { + "id": 584, + "atlas_id": 921, + "ontology_id": 1, + "acronym": "COApl1-2", + "name": "Cortical amygdalar area, posterior part, lateral zone, layers 1-2", + "color_hex_triplet": "61E7B7", + "graph_order": 433, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 376, + "atlas_id": 895, + "ontology_id": 1, + "acronym": "COApl1-3", + "name": "Cortical amygdalar area, posterior part, lateral zone, layers 1-3", + "color_hex_triplet": "61E7B7", + "graph_order": 434, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 216, + "atlas_id": 875, + "ontology_id": 1, + "acronym": "COApl1", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 435, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 224, + "atlas_id": 876, + "ontology_id": 1, + "acronym": "COApl2", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 436, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 232, + "atlas_id": 877, + "ontology_id": 1, + "acronym": "COApl3", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 437, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + } + ] + }, + { + "id": 663, + "atlas_id": 82, + "ontology_id": 1, + "acronym": "COApm", + "name": "Cortical amygdalar area, posterior part, medial zone", + "color_hex_triplet": "61E7B7", + "graph_order": 438, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 647, + "children": [ + { + "id": 592, + "atlas_id": 922, + "ontology_id": 1, + "acronym": "COApm1-2", + "name": "Cortical amygdalar area, posterior part, medial zone, layers 1-2", + "color_hex_triplet": "61E7B7", + "graph_order": 439, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 383, + "atlas_id": 896, + "ontology_id": 1, + "acronym": "COApm1-3", + "name": "Cortical amygdalar area, posterior part, medial zone, layers 1-3", + "color_hex_triplet": "61E7B7", + "graph_order": 440, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 240, + "atlas_id": 878, + "ontology_id": 1, + "acronym": "COApm1", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 441, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 248, + "atlas_id": 879, + "ontology_id": 1, + "acronym": "COApm2", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 442, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 256, + "atlas_id": 880, + "ontology_id": 1, + "acronym": "COApm3", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 443, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 788, + "atlas_id": 239, + "ontology_id": 1, + "acronym": "PAA", + "name": "Piriform-amygdalar area", + "color_hex_triplet": "59DAAB", + "graph_order": 444, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 400, + "atlas_id": 898, + "ontology_id": 1, + "acronym": "PAA1-3", + "name": "Piriform-amygdalar area, layers 1-3", + "color_hex_triplet": "59DAAB", + "graph_order": 445, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 408, + "atlas_id": 899, + "ontology_id": 1, + "acronym": "PAA1", + "name": "Piriform-amygdalar area, molecular layer", + "color_hex_triplet": "59DAAB", + "graph_order": 446, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 416, + "atlas_id": 900, + "ontology_id": 1, + "acronym": "PAA2", + "name": "Piriform-amygdalar area, pyramidal layer", + "color_hex_triplet": "59DAAB", + "graph_order": 447, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 424, + "atlas_id": 901, + "ontology_id": 1, + "acronym": "PAA3", + "name": "Piriform-amygdalar area, polymorph layer", + "color_hex_triplet": "59DAAB", + "graph_order": 448, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + } + ] + }, + { + "id": 566, + "atlas_id": 353, + "ontology_id": 1, + "acronym": "TR", + "name": "Postpiriform transition area", + "color_hex_triplet": "A8ECD3", + "graph_order": 449, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 517, + "atlas_id": 913, + "ontology_id": 1, + "acronym": "TR1-3", + "name": "Postpiriform transition area, layers 1-3", + "color_hex_triplet": "A8ECD3", + "graph_order": 450, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1140, + "atlas_id": 1138, + "ontology_id": 1, + "acronym": "TR1", + "name": "Postpiriform transition area, layers 1", + "color_hex_triplet": "A8ECD3", + "graph_order": 451, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1141, + "atlas_id": 1139, + "ontology_id": 1, + "acronym": "TR2", + "name": "Postpiriform transition area, layers 2", + "color_hex_triplet": "A8ECD3", + "graph_order": 452, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1142, + "atlas_id": 1140, + "ontology_id": 1, + "acronym": "TR3", + "name": "Postpiriform transition area, layers 3", + "color_hex_triplet": "A8ECD3", + "graph_order": 453, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + } + ] + } + ] + }, + { + "id": 1089, + "atlas_id": 135, + "ontology_id": 1, + "acronym": "HPF", + "name": "Hippocampal formation", + "color_hex_triplet": "7ED04B", + "graph_order": 454, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 1080, + "atlas_id": 134, + "ontology_id": 1, + "acronym": "HIP", + "name": "Hippocampal region", + "color_hex_triplet": "7ED04B", + "graph_order": 455, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1089, + "children": [ + { + "id": 375, + "atlas_id": 46, + "ontology_id": 1, + "acronym": "CA", + "name": "Ammon's horn", + "color_hex_triplet": "7ED04B", + "graph_order": 456, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [ + { + "id": 382, + "atlas_id": 47, + "ontology_id": 1, + "acronym": "CA1", + "name": "Field CA1", + "color_hex_triplet": "7ED04B", + "graph_order": 457, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 391, + "atlas_id": 48, + "ontology_id": 1, + "acronym": "CA1slm", + "name": "Field CA1, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 458, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 399, + "atlas_id": 49, + "ontology_id": 1, + "acronym": "CA1so", + "name": "Field CA1, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 459, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 407, + "atlas_id": 50, + "ontology_id": 1, + "acronym": "CA1sp", + "name": "Field CA1, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 460, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 415, + "atlas_id": 51, + "ontology_id": 1, + "acronym": "CA1sr", + "name": "Field CA1, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 461, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + } + ] + }, + { + "id": 423, + "atlas_id": 52, + "ontology_id": 1, + "acronym": "CA2", + "name": "Field CA2", + "color_hex_triplet": "7ED04B", + "graph_order": 462, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 431, + "atlas_id": 53, + "ontology_id": 1, + "acronym": "CA2slm", + "name": "Field CA2, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 463, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 438, + "atlas_id": 54, + "ontology_id": 1, + "acronym": "CA2so", + "name": "Field CA2, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 464, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 446, + "atlas_id": 55, + "ontology_id": 1, + "acronym": "CA2sp", + "name": "Field CA2, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 465, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 454, + "atlas_id": 56, + "ontology_id": 1, + "acronym": "CA2sr", + "name": "Field CA2, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 466, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + } + ] + }, + { + "id": 463, + "atlas_id": 57, + "ontology_id": 1, + "acronym": "CA3", + "name": "Field CA3", + "color_hex_triplet": "7ED04B", + "graph_order": 467, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 471, + "atlas_id": 58, + "ontology_id": 1, + "acronym": "CA3slm", + "name": "Field CA3, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 468, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 479, + "atlas_id": 59, + "ontology_id": 1, + "acronym": "CA3slu", + "name": "Field CA3, stratum lucidum", + "color_hex_triplet": "7ED04B", + "graph_order": 469, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 486, + "atlas_id": 60, + "ontology_id": 1, + "acronym": "CA3so", + "name": "Field CA3, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 470, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 495, + "atlas_id": 61, + "ontology_id": 1, + "acronym": "CA3sp", + "name": "Field CA3, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 471, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 504, + "atlas_id": 62, + "ontology_id": 1, + "acronym": "CA3sr", + "name": "Field CA3, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 472, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + } + ] + } + ] + }, + { + "id": 726, + "atlas_id": 90, + "ontology_id": 1, + "acronym": "DG", + "name": "Dentate gyrus", + "color_hex_triplet": "7ED04B", + "graph_order": 473, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [ + { + "id": 10703, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-mo", + "name": "Dentate gyrus, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 474, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 10704, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-po", + "name": "Dentate gyrus, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 475, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 632, + "atlas_id": 927, + "ontology_id": 1, + "acronym": "DG-sg", + "name": "Dentate gyrus, granule cell layer", + "color_hex_triplet": "66A83D", + "graph_order": 476, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 10702, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-sgz", + "name": "Dentate gyrus, subgranular zone", + "color_hex_triplet": "7ED04B", + "graph_order": 477, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 734, + "atlas_id": 91, + "ontology_id": 1, + "acronym": "DGcr", + "name": "Dentate gyrus crest", + "color_hex_triplet": "7ED04B", + "graph_order": 478, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 742, + "atlas_id": 92, + "ontology_id": 1, + "acronym": "DGcr-mo", + "name": "Dentate gyrus crest, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 479, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + }, + { + "id": 751, + "atlas_id": 93, + "ontology_id": 1, + "acronym": "DGcr-po", + "name": "Dentate gyrus crest, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 480, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + }, + { + "id": 758, + "atlas_id": 94, + "ontology_id": 1, + "acronym": "DGcr-sg", + "name": "Dentate gyrus crest, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 481, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + } + ] + }, + { + "id": 766, + "atlas_id": 95, + "ontology_id": 1, + "acronym": "DGlb", + "name": "Dentate gyrus lateral blade", + "color_hex_triplet": "7ED04B", + "graph_order": 482, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 775, + "atlas_id": 96, + "ontology_id": 1, + "acronym": "DGlb-mo", + "name": "Dentate gyrus lateral blade, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 483, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + }, + { + "id": 782, + "atlas_id": 97, + "ontology_id": 1, + "acronym": "DGlb-po", + "name": "Dentate gyrus lateral blade, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 484, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + }, + { + "id": 790, + "atlas_id": 98, + "ontology_id": 1, + "acronym": "DGlb-sg", + "name": "Dentate gyrus lateral blade, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 485, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + } + ] + }, + { + "id": 799, + "atlas_id": 99, + "ontology_id": 1, + "acronym": "DGmb", + "name": "Dentate gyrus medial blade", + "color_hex_triplet": "7ED04B", + "graph_order": 486, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 807, + "atlas_id": 100, + "ontology_id": 1, + "acronym": "DGmb-mo", + "name": "Dentate gyrus medial blade, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 487, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + }, + { + "id": 815, + "atlas_id": 101, + "ontology_id": 1, + "acronym": "DGmb-po", + "name": "Dentate gyrus medial blade, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 488, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + }, + { + "id": 823, + "atlas_id": 102, + "ontology_id": 1, + "acronym": "DGmb-sg", + "name": "Dentate gyrus medial blade, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 489, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + } + ] + } + ] + }, + { + "id": 982, + "atlas_id": 122, + "ontology_id": 1, + "acronym": "FC", + "name": "Fasciola cinerea", + "color_hex_triplet": "7ED04B", + "graph_order": 490, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [] + }, + { + "id": 19, + "atlas_id": 143, + "ontology_id": 1, + "acronym": "IG", + "name": "Induseum griseum", + "color_hex_triplet": "7ED04B", + "graph_order": 491, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [] + } + ] + }, + { + "id": 822, + "atlas_id": 385, + "ontology_id": 1, + "acronym": "RHP", + "name": "Retrohippocampal region", + "color_hex_triplet": "32B825", + "graph_order": 492, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1089, + "children": [ + { + "id": 909, + "atlas_id": 113, + "ontology_id": 1, + "acronym": "ENT", + "name": "Entorhinal area", + "color_hex_triplet": "32B825", + "graph_order": 493, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 918, + "atlas_id": 114, + "ontology_id": 1, + "acronym": "ENTl", + "name": "Entorhinal area, lateral part", + "color_hex_triplet": "32B825", + "graph_order": 494, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 1121, + "atlas_id": 988, + "ontology_id": 1, + "acronym": "ENTl1", + "name": "Entorhinal area, lateral part, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 495, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 20, + "atlas_id": 992, + "ontology_id": 1, + "acronym": "ENTl2", + "name": "Entorhinal area, lateral part, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 496, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 999, + "atlas_id": 973, + "ontology_id": 1, + "acronym": "ENTl2/3", + "name": "Entorhinal area, lateral part, layer 2/3", + "color_hex_triplet": "32B825", + "graph_order": 497, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 715, + "atlas_id": 1079, + "ontology_id": 1, + "acronym": "ENTl2a", + "name": "Entorhinal area, lateral part, layer 2a", + "color_hex_triplet": "32B825", + "graph_order": 498, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 764, + "atlas_id": 1085, + "ontology_id": 1, + "acronym": "ENTl2b", + "name": "Entorhinal area, lateral part, layer 2b", + "color_hex_triplet": "32B825", + "graph_order": 499, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 52, + "atlas_id": 996, + "ontology_id": 1, + "acronym": "ENTl3", + "name": "Entorhinal area, lateral part, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 500, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 92, + "atlas_id": 1001, + "ontology_id": 1, + "acronym": "ENTl4", + "name": "Entorhinal area, lateral part, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 501, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 312, + "atlas_id": 887, + "ontology_id": 1, + "acronym": "ENTl4/5", + "name": "Entorhinal area, lateral part, layer 4/5", + "color_hex_triplet": "32B825", + "graph_order": 502, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 139, + "atlas_id": 1007, + "ontology_id": 1, + "acronym": "ENTl5", + "name": "Entorhinal area, lateral part, layer 5", + "color_hex_triplet": "32B825", + "graph_order": 503, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 387, + "atlas_id": 1038, + "ontology_id": 1, + "acronym": "ENTl5/6", + "name": "Entorhinal area, lateral part, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 504, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 28, + "atlas_id": 993, + "ontology_id": 1, + "acronym": "ENTl6a", + "name": "Entorhinal area, lateral part, layer 6a", + "color_hex_triplet": "32B825", + "graph_order": 505, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 60, + "atlas_id": 997, + "ontology_id": 1, + "acronym": "ENTl6b", + "name": "Entorhinal area, lateral part, layer 6b", + "color_hex_triplet": "32B825", + "graph_order": 506, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + } + ] + }, + { + "id": 926, + "atlas_id": 115, + "ontology_id": 1, + "acronym": "ENTm", + "name": "Entorhinal area, medial part, dorsal zone", + "color_hex_triplet": "32B825", + "graph_order": 507, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 526, + "atlas_id": 914, + "ontology_id": 1, + "acronym": "ENTm1", + "name": "Entorhinal area, medial part, dorsal zone, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 508, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 543, + "atlas_id": 916, + "ontology_id": 1, + "acronym": "ENTm2", + "name": "Entorhinal area, medial part, dorsal zone, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 509, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 468, + "atlas_id": 1048, + "ontology_id": 1, + "acronym": "ENTm2a", + "name": "Entorhinal area, medial part, dorsal zone, layer 2a", + "color_hex_triplet": "32B825", + "graph_order": 510, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 508, + "atlas_id": 1053, + "ontology_id": 1, + "acronym": "ENTm2b", + "name": "Entorhinal area, medial part, dorsal zone, layer 2b", + "color_hex_triplet": "32B825", + "graph_order": 511, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 664, + "atlas_id": 931, + "ontology_id": 1, + "acronym": "ENTm3", + "name": "Entorhinal area, medial part, dorsal zone, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 512, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 712, + "atlas_id": 937, + "ontology_id": 1, + "acronym": "ENTm4", + "name": "Entorhinal area, medial part, dorsal zone, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 513, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 727, + "atlas_id": 939, + "ontology_id": 1, + "acronym": "ENTm5", + "name": "Entorhinal area, medial part, dorsal zone, layer 5", + "color_hex_triplet": "32B825", + "graph_order": 514, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 550, + "atlas_id": 634, + "ontology_id": 1, + "acronym": "ENTm5/6", + "name": "Entorhinal area, medial part, dorsal zone, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 515, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 743, + "atlas_id": 941, + "ontology_id": 1, + "acronym": "ENTm6", + "name": "Entorhinal area, medial part, dorsal zone, layer 6", + "color_hex_triplet": "32B825", + "graph_order": 516, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + } + ] + }, + { + "id": 934, + "atlas_id": 116, + "ontology_id": 1, + "acronym": "ENTmv", + "name": "Entorhinal area, medial part, ventral zone", + "color_hex_triplet": "32B825", + "graph_order": 517, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 259, + "atlas_id": 1022, + "ontology_id": 1, + "acronym": "ENTmv1", + "name": "Entorhinal area, medial part, ventral zone, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 518, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 324, + "atlas_id": 1030, + "ontology_id": 1, + "acronym": "ENTmv2", + "name": "Entorhinal area, medial part, ventral zone, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 519, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 371, + "atlas_id": 1036, + "ontology_id": 1, + "acronym": "ENTmv3", + "name": "Entorhinal area, medial part, ventral zone, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 520, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 419, + "atlas_id": 1042, + "ontology_id": 1, + "acronym": "ENTmv4", + "name": "Entorhinal area, medial part, ventral zone, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 521, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 1133, + "atlas_id": 1131, + "ontology_id": 1, + "acronym": "ENTmv5/6", + "name": "Entorhinal area, medial part, ventral zone, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 522, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + } + ] + } + ] + }, + { + "id": 843, + "atlas_id": 246, + "ontology_id": 1, + "acronym": "PAR", + "name": "Parasubiculum", + "color_hex_triplet": "72D569", + "graph_order": 523, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10693, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR1", + "name": "Parasubiculum, layer 1", + "color_hex_triplet": "72D569", + "graph_order": 524, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + }, + { + "id": 10694, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR2", + "name": "Parasubiculum, layer 2", + "color_hex_triplet": "72D569", + "graph_order": 525, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + }, + { + "id": 10695, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR3", + "name": "Parasubiculum, layer 3", + "color_hex_triplet": "72D569", + "graph_order": 526, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + } + ] + }, + { + "id": 1037, + "atlas_id": 270, + "ontology_id": 1, + "acronym": "POST", + "name": "Postsubiculum", + "color_hex_triplet": "48C83C", + "graph_order": 527, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10696, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST1", + "name": "Postsubiculum, layer 1", + "color_hex_triplet": "48C83C", + "graph_order": 528, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + }, + { + "id": 10697, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST2", + "name": "Postsubiculum, layer 2", + "color_hex_triplet": "48C83C", + "graph_order": 529, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + }, + { + "id": 10698, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST3", + "name": "Postsubiculum, layer 3", + "color_hex_triplet": "48C83C", + "graph_order": 530, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + } + ] + }, + { + "id": 1084, + "atlas_id": 276, + "ontology_id": 1, + "acronym": "PRE", + "name": "Presubiculum", + "color_hex_triplet": "59B947", + "graph_order": 531, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10699, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE1", + "name": "Presubiculum, layer 1", + "color_hex_triplet": "59B947", + "graph_order": 532, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + }, + { + "id": 10700, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE2", + "name": "Presubiculum, layer 2", + "color_hex_triplet": "59B947", + "graph_order": 533, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + }, + { + "id": 10701, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE3", + "name": "Presubiculum, layer 3", + "color_hex_triplet": "59B947", + "graph_order": 534, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + } + ] + }, + { + "id": 502, + "atlas_id": 345, + "ontology_id": 1, + "acronym": "SUB", + "name": "Subiculum", + "color_hex_triplet": "4FC244", + "graph_order": 535, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 509, + "atlas_id": 346, + "ontology_id": 1, + "acronym": "SUBd", + "name": "Subiculum, dorsal part", + "color_hex_triplet": "4FC244", + "graph_order": 536, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 502, + "children": [ + { + "id": 829, + "atlas_id": 386, + "ontology_id": 1, + "acronym": "SUBd-m", + "name": "Subiculum, dorsal part, molecular layer", + "color_hex_triplet": "4FC244", + "graph_order": 537, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + }, + { + "id": 845, + "atlas_id": 388, + "ontology_id": 1, + "acronym": "SUBd-sp", + "name": "Subiculum, dorsal part, pyramidal layer", + "color_hex_triplet": "4BB547", + "graph_order": 538, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + }, + { + "id": 837, + "atlas_id": 387, + "ontology_id": 1, + "acronym": "SUBd-sr", + "name": "Subiculum, dorsal part, stratum radiatum", + "color_hex_triplet": "4FC244", + "graph_order": 539, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + } + ] + }, + { + "id": 518, + "atlas_id": 347, + "ontology_id": 1, + "acronym": "SUBv", + "name": "Subiculum, ventral part", + "color_hex_triplet": "4FC244", + "graph_order": 540, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 502, + "children": [ + { + "id": 853, + "atlas_id": 389, + "ontology_id": 1, + "acronym": "SUBv-m", + "name": "Subiculum, ventral part, molecular layer", + "color_hex_triplet": "4FC244", + "graph_order": 541, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + }, + { + "id": 870, + "atlas_id": 391, + "ontology_id": 1, + "acronym": "SUBv-sp", + "name": "Subiculum, ventral part, pyramidal layer", + "color_hex_triplet": "4BB547", + "graph_order": 542, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + }, + { + "id": 861, + "atlas_id": 390, + "ontology_id": 1, + "acronym": "SUBv-sr", + "name": "Subiculum, ventral part, stratum radiatum", + "color_hex_triplet": "4FC244", + "graph_order": 543, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + } + ] + } + ] + }, + { + "id": 484682470, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProS", + "name": "Prosubiculum", + "color_hex_triplet": "58BA48", + "graph_order": 544, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 484682475, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd", + "name": "Prosubiculum, dorsal part", + "color_hex_triplet": "58BA48", + "graph_order": 545, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 484682470, + "children": [ + { + "id": 484682479, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-m", + "name": "Prosubiculum, dorsal part, molecular layer", + "color_hex_triplet": "58BA48", + "graph_order": 546, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + }, + { + "id": 484682483, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-sp", + "name": "Prosubiculum, dorsal part, pyramidal layer", + "color_hex_triplet": "56B84B", + "graph_order": 547, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + }, + { + "id": 484682487, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-sr", + "name": "Prosubiculum, dorsal part, stratum radiatum", + "color_hex_triplet": "58BA48", + "graph_order": 548, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + } + ] + }, + { + "id": 484682492, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv", + "name": "Prosubiculum, ventral part", + "color_hex_triplet": "58BA48", + "graph_order": 549, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 484682470, + "children": [ + { + "id": 484682496, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv-m", + "name": "Prosubiculum, ventral part, molecular layer", + "color_hex_triplet": "58BA48", + "graph_order": 550, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + }, + { + "id": 484682500, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv-sp", + "name": "Prosubiculum, ventral part, pyramidal layer", + "color_hex_triplet": "56B84B", + "graph_order": 551, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + }, + { + "id": 484682504, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Prosv-sr", + "name": "Prosubiculum, ventral part, stratum radiatum", + "color_hex_triplet": "58BA48", + "graph_order": 552, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + } + ] + } + ] + }, + { + "id": 589508447, + "atlas_id": null, + "ontology_id": 1, + "acronym": "HATA", + "name": "Hippocampo-amygdalar transition area", + "color_hex_triplet": "33B932", + "graph_order": 553, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [] + }, + { + "id": 484682508, + "atlas_id": null, + "ontology_id": 1, + "acronym": "APr", + "name": "Area prostriata", + "color_hex_triplet": "33B932", + "graph_order": 554, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 703, + "atlas_id": 87, + "ontology_id": 1, + "acronym": "CTXsp", + "name": "Cortical subplate", + "color_hex_triplet": "8ADA87", + "graph_order": 555, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 688, + "children": [ + { + "id": 16, + "atlas_id": 1, + "ontology_id": 1, + "acronym": "6b", + "name": "Layer 6b, isocortex", + "color_hex_triplet": "8ADA87", + "graph_order": 556, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 583, + "atlas_id": 72, + "ontology_id": 1, + "acronym": "CLA", + "name": "Claustrum", + "color_hex_triplet": "8ADA87", + "graph_order": 557, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 942, + "atlas_id": 117, + "ontology_id": 1, + "acronym": "EP", + "name": "Endopiriform nucleus", + "color_hex_triplet": "A0EE9D", + "graph_order": 558, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 952, + "atlas_id": 118, + "ontology_id": 1, + "acronym": "EPd", + "name": "Endopiriform nucleus, dorsal part", + "color_hex_triplet": "A0EE9D", + "graph_order": 559, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 942, + "children": [] + }, + { + "id": 966, + "atlas_id": 120, + "ontology_id": 1, + "acronym": "EPv", + "name": "Endopiriform nucleus, ventral part", + "color_hex_triplet": "A0EE9D", + "graph_order": 560, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 942, + "children": [] + } + ] + }, + { + "id": 131, + "atlas_id": 157, + "ontology_id": 1, + "acronym": "LA", + "name": "Lateral amygdalar nucleus", + "color_hex_triplet": "90EB8D", + "graph_order": 561, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 295, + "atlas_id": 36, + "ontology_id": 1, + "acronym": "BLA", + "name": "Basolateral amygdalar nucleus", + "color_hex_triplet": "9DE79C", + "graph_order": 562, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 303, + "atlas_id": 37, + "ontology_id": 1, + "acronym": "BLAa", + "name": "Basolateral amygdalar nucleus, anterior part", + "color_hex_triplet": "9DE79C", + "graph_order": 563, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + }, + { + "id": 311, + "atlas_id": 38, + "ontology_id": 1, + "acronym": "BLAp", + "name": "Basolateral amygdalar nucleus, posterior part", + "color_hex_triplet": "9DE79C", + "graph_order": 564, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + }, + { + "id": 451, + "atlas_id": 763, + "ontology_id": 1, + "acronym": "BLAv", + "name": "Basolateral amygdalar nucleus, ventral part", + "color_hex_triplet": "9DE79C", + "graph_order": 565, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + } + ] + }, + { + "id": 319, + "atlas_id": 39, + "ontology_id": 1, + "acronym": "BMA", + "name": "Basomedial amygdalar nucleus", + "color_hex_triplet": "84EA81", + "graph_order": 566, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 327, + "atlas_id": 40, + "ontology_id": 1, + "acronym": "BMAa", + "name": "Basomedial amygdalar nucleus, anterior part", + "color_hex_triplet": "84EA81", + "graph_order": 567, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 319, + "children": [] + }, + { + "id": 334, + "atlas_id": 41, + "ontology_id": 1, + "acronym": "BMAp", + "name": "Basomedial amygdalar nucleus, posterior part", + "color_hex_triplet": "84EA81", + "graph_order": 568, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 319, + "children": [] + } + ] + }, + { + "id": 780, + "atlas_id": 238, + "ontology_id": 1, + "acronym": "PA", + "name": "Posterior amygdalar nucleus", + "color_hex_triplet": "97EC93", + "graph_order": 569, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + } + ] + } + ] + }, + { + "id": 623, + "atlas_id": 77, + "ontology_id": 1, + "acronym": "CNU", + "name": "Cerebral nuclei", + "color_hex_triplet": "98D6F9", + "graph_order": 570, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 567, + "children": [ + { + "id": 477, + "atlas_id": 342, + "ontology_id": 1, + "acronym": "STR", + "name": "Striatum", + "color_hex_triplet": "98D6F9", + "graph_order": 571, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 623, + "children": [ + { + "id": 485, + "atlas_id": 343, + "ontology_id": 1, + "acronym": "STRd", + "name": "Striatum dorsal region", + "color_hex_triplet": "98D6F9", + "graph_order": 572, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 672, + "atlas_id": 83, + "ontology_id": 1, + "acronym": "CP", + "name": "Caudoputamen", + "color_hex_triplet": "98D6F9", + "graph_order": 573, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 485, + "children": [] + } + ] + }, + { + "id": 493, + "atlas_id": 344, + "ontology_id": 1, + "acronym": "STRv", + "name": "Striatum ventral region", + "color_hex_triplet": "80CDF8", + "graph_order": 574, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 56, + "atlas_id": 6, + "ontology_id": 1, + "acronym": "ACB", + "name": "Nucleus accumbens", + "color_hex_triplet": "80CDF8", + "graph_order": 575, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + }, + { + "id": 998, + "atlas_id": 124, + "ontology_id": 1, + "acronym": "FS", + "name": "Fundus of striatum", + "color_hex_triplet": "80CDF8", + "graph_order": 576, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + }, + { + "id": 754, + "atlas_id": 235, + "ontology_id": 1, + "acronym": "OT", + "name": "Olfactory tubercle", + "color_hex_triplet": "80CDF8", + "graph_order": 577, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [ + { + "id": 481, + "atlas_id": 767, + "ontology_id": 1, + "acronym": "isl", + "name": "Islands of Calleja", + "color_hex_triplet": "80CDF8", + "graph_order": 578, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 489, + "atlas_id": 768, + "ontology_id": 1, + "acronym": "islm", + "name": "Major island of Calleja", + "color_hex_triplet": "80CDF8", + "graph_order": 579, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 144, + "atlas_id": 866, + "ontology_id": 1, + "acronym": "OT1-3", + "name": "Olfactory tubercle, layers 1-3", + "color_hex_triplet": "80CDF8", + "graph_order": 580, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 458, + "atlas_id": 764, + "ontology_id": 1, + "acronym": "OT1", + "name": "Olfactory tubercle, molecular layer", + "color_hex_triplet": "80CDF8", + "graph_order": 581, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 465, + "atlas_id": 765, + "ontology_id": 1, + "acronym": "OT2", + "name": "Olfactory tubercle, pyramidal layer", + "color_hex_triplet": "80CDF8", + "graph_order": 582, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 473, + "atlas_id": 766, + "ontology_id": 1, + "acronym": "OT3", + "name": "Olfactory tubercle, polymorph layer", + "color_hex_triplet": "80CDF8", + "graph_order": 583, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + } + ] + }, + { + "id": 549009199, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LSS", + "name": "Lateral strip of striatum", + "color_hex_triplet": "80CDF8", + "graph_order": 584, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + } + ] + }, + { + "id": 275, + "atlas_id": 175, + "ontology_id": 1, + "acronym": "LSX", + "name": "Lateral septal complex", + "color_hex_triplet": "90CBED", + "graph_order": 585, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 242, + "atlas_id": 171, + "ontology_id": 1, + "acronym": "LS", + "name": "Lateral septal nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 586, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [ + { + "id": 250, + "atlas_id": 172, + "ontology_id": 1, + "acronym": "LSc", + "name": "Lateral septal nucleus, caudal (caudodorsal) part", + "color_hex_triplet": "90CBED", + "graph_order": 587, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + }, + { + "id": 258, + "atlas_id": 173, + "ontology_id": 1, + "acronym": "LSr", + "name": "Lateral septal nucleus, rostral (rostroventral) part", + "color_hex_triplet": "90CBED", + "graph_order": 588, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + }, + { + "id": 266, + "atlas_id": 174, + "ontology_id": 1, + "acronym": "LSv", + "name": "Lateral septal nucleus, ventral part", + "color_hex_triplet": "90CBED", + "graph_order": 589, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + } + ] + }, + { + "id": 310, + "atlas_id": 321, + "ontology_id": 1, + "acronym": "SF", + "name": "Septofimbrial nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 590, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [] + }, + { + "id": 333, + "atlas_id": 324, + "ontology_id": 1, + "acronym": "SH", + "name": "Septohippocampal nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 591, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [] + } + ] + }, + { + "id": 278, + "atlas_id": 317, + "ontology_id": 1, + "acronym": "sAMY", + "name": "Striatum-like amygdalar nuclei", + "color_hex_triplet": "80C0E2", + "graph_order": 592, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 23, + "atlas_id": 2, + "ontology_id": 1, + "acronym": "AAA", + "name": "Anterior amygdalar area", + "color_hex_triplet": "80C0E2", + "graph_order": 593, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 292, + "atlas_id": 460, + "ontology_id": 1, + "acronym": "BA", + "name": "Bed nucleus of the accessory olfactory tract", + "color_hex_triplet": "80C0E2", + "graph_order": 594, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 536, + "atlas_id": 66, + "ontology_id": 1, + "acronym": "CEA", + "name": "Central amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 595, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [ + { + "id": 544, + "atlas_id": 67, + "ontology_id": 1, + "acronym": "CEAc", + "name": "Central amygdalar nucleus, capsular part", + "color_hex_triplet": "80C0E2", + "graph_order": 596, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + }, + { + "id": 551, + "atlas_id": 68, + "ontology_id": 1, + "acronym": "CEAl", + "name": "Central amygdalar nucleus, lateral part", + "color_hex_triplet": "80C0E2", + "graph_order": 597, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + }, + { + "id": 559, + "atlas_id": 69, + "ontology_id": 1, + "acronym": "CEAm", + "name": "Central amygdalar nucleus, medial part", + "color_hex_triplet": "80C0E2", + "graph_order": 598, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + } + ] + }, + { + "id": 1105, + "atlas_id": 137, + "ontology_id": 1, + "acronym": "IA", + "name": "Intercalated amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 599, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 403, + "atlas_id": 191, + "ontology_id": 1, + "acronym": "MEA", + "name": "Medial amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 600, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [ + { + "id": 411, + "atlas_id": 192, + "ontology_id": 1, + "acronym": "MEAad", + "name": "Medial amygdalar nucleus, anterodorsal part", + "color_hex_triplet": "80C0E2", + "graph_order": 601, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + }, + { + "id": 418, + "atlas_id": 193, + "ontology_id": 1, + "acronym": "MEAav", + "name": "Medial amygdalar nucleus, anteroventral part", + "color_hex_triplet": "80C0E2", + "graph_order": 602, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + }, + { + "id": 426, + "atlas_id": 194, + "ontology_id": 1, + "acronym": "MEApd", + "name": "Medial amygdalar nucleus, posterodorsal part", + "color_hex_triplet": "80C0E2", + "graph_order": 603, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [ + { + "id": 472, + "atlas_id": 907, + "ontology_id": 1, + "acronym": "MEApd-a", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer a", + "color_hex_triplet": "80C0E2", + "graph_order": 604, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + }, + { + "id": 480, + "atlas_id": 908, + "ontology_id": 1, + "acronym": "MEApd-b", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer b", + "color_hex_triplet": "80C0E2", + "graph_order": 605, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + }, + { + "id": 487, + "atlas_id": 909, + "ontology_id": 1, + "acronym": "MEApd-c", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer c", + "color_hex_triplet": "80C0E2", + "graph_order": 606, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + } + ] + }, + { + "id": 435, + "atlas_id": 195, + "ontology_id": 1, + "acronym": "MEApv", + "name": "Medial amygdalar nucleus, posteroventral part", + "color_hex_triplet": "80C0E2", + "graph_order": 607, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 803, + "atlas_id": 241, + "ontology_id": 1, + "acronym": "PAL", + "name": "Pallidum", + "color_hex_triplet": "8599CC", + "graph_order": 608, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 623, + "children": [ + { + "id": 818, + "atlas_id": 243, + "ontology_id": 1, + "acronym": "PALd", + "name": "Pallidum, dorsal region", + "color_hex_triplet": "8599CC", + "graph_order": 609, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 1022, + "atlas_id": 127, + "ontology_id": 1, + "acronym": "GPe", + "name": "Globus pallidus, external segment", + "color_hex_triplet": "8599CC", + "graph_order": 610, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 818, + "children": [] + }, + { + "id": 1031, + "atlas_id": 128, + "ontology_id": 1, + "acronym": "GPi", + "name": "Globus pallidus, internal segment", + "color_hex_triplet": "8599CC", + "graph_order": 611, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 818, + "children": [] + } + ] + }, + { + "id": 835, + "atlas_id": 245, + "ontology_id": 1, + "acronym": "PALv", + "name": "Pallidum, ventral region", + "color_hex_triplet": "A2B1D8", + "graph_order": 612, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 342, + "atlas_id": 325, + "ontology_id": 1, + "acronym": "SI", + "name": "Substantia innominata", + "color_hex_triplet": "A2B1D8", + "graph_order": 613, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 835, + "children": [] + }, + { + "id": 298, + "atlas_id": 178, + "ontology_id": 1, + "acronym": "MA", + "name": "Magnocellular nucleus", + "color_hex_triplet": "A2B1D8", + "graph_order": 614, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 835, + "children": [] + } + ] + }, + { + "id": 826, + "atlas_id": 244, + "ontology_id": 1, + "acronym": "PALm", + "name": "Pallidum, medial region", + "color_hex_triplet": "96A7D3", + "graph_order": 615, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 904, + "atlas_id": 395, + "ontology_id": 1, + "acronym": "MSC", + "name": "Medial septal complex", + "color_hex_triplet": "96A7D3", + "graph_order": 616, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 826, + "children": [ + { + "id": 564, + "atlas_id": 211, + "ontology_id": 1, + "acronym": "MS", + "name": "Medial septal nucleus", + "color_hex_triplet": "96A7D3", + "graph_order": 617, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 904, + "children": [] + }, + { + "id": 596, + "atlas_id": 215, + "ontology_id": 1, + "acronym": "NDB", + "name": "Diagonal band nucleus", + "color_hex_triplet": "96A7D3", + "graph_order": 618, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 904, + "children": [] + } + ] + }, + { + "id": 581, + "atlas_id": 355, + "ontology_id": 1, + "acronym": "TRS", + "name": "Triangular nucleus of septum", + "color_hex_triplet": "96A7D3", + "graph_order": 619, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 826, + "children": [] + } + ] + }, + { + "id": 809, + "atlas_id": 242, + "ontology_id": 1, + "acronym": "PALc", + "name": "Pallidum, caudal region", + "color_hex_triplet": "B3C0DF", + "graph_order": 620, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 351, + "atlas_id": 43, + "ontology_id": 1, + "acronym": "BST", + "name": "Bed nuclei of the stria terminalis", + "color_hex_triplet": "B3C0DF", + "graph_order": 621, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 809, + "children": [ + { + "id": 359, + "atlas_id": 44, + "ontology_id": 1, + "acronym": "BSTa", + "name": "Bed nuclei of the stria terminalis, anterior division", + "color_hex_triplet": "B3C0DF", + "graph_order": 622, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 351, + "children": [ + { + "id": 537, + "atlas_id": 774, + "ontology_id": 1, + "acronym": "BSTal", + "name": "Bed nuclei of the stria terminalis, anterior division, anterolateral area", + "color_hex_triplet": "B3C0DF", + "graph_order": 623, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 498, + "atlas_id": 769, + "ontology_id": 1, + "acronym": "BSTam", + "name": "Bed nuclei of the stria terminalis, anterior division, anteromedial area", + "color_hex_triplet": "B3C0DF", + "graph_order": 624, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 505, + "atlas_id": 770, + "ontology_id": 1, + "acronym": "BSTdm", + "name": "Bed nuclei of the stria terminalis, anterior division, dorsomedial nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 625, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 513, + "atlas_id": 771, + "ontology_id": 1, + "acronym": "BSTfu", + "name": "Bed nuclei of the stria terminalis, anterior division, fusiform nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 626, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 546, + "atlas_id": 775, + "ontology_id": 1, + "acronym": "BSTju", + "name": "Bed nuclei of the stria terminalis, anterior division, juxtacapsular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 627, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 521, + "atlas_id": 772, + "ontology_id": 1, + "acronym": "BSTmg", + "name": "Bed nuclei of the stria terminalis, anterior division, magnocellular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 628, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 554, + "atlas_id": 776, + "ontology_id": 1, + "acronym": "BSTov", + "name": "Bed nuclei of the stria terminalis, anterior division, oval nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 629, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 562, + "atlas_id": 777, + "ontology_id": 1, + "acronym": "BSTrh", + "name": "Bed nuclei of the stria terminalis, anterior division, rhomboid nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 630, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 529, + "atlas_id": 773, + "ontology_id": 1, + "acronym": "BSTv", + "name": "Bed nuclei of the stria terminalis, anterior division, ventral nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 631, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + } + ] + }, + { + "id": 367, + "atlas_id": 45, + "ontology_id": 1, + "acronym": "BSTp", + "name": "Bed nuclei of the stria terminalis, posterior division", + "color_hex_triplet": "B3C0DF", + "graph_order": 632, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 351, + "children": [ + { + "id": 569, + "atlas_id": 778, + "ontology_id": 1, + "acronym": "BSTd", + "name": "Bed nuclei of the stria terminalis, posterior division, dorsal nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 633, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 578, + "atlas_id": 779, + "ontology_id": 1, + "acronym": "BSTpr", + "name": "Bed nuclei of the stria terminalis, posterior division, principal nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 634, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 585, + "atlas_id": 780, + "ontology_id": 1, + "acronym": "BSTif", + "name": "Bed nuclei of the stria terminalis, posterior division, interfascicular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 635, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 594, + "atlas_id": 781, + "ontology_id": 1, + "acronym": "BSTtr", + "name": "Bed nuclei of the stria terminalis, posterior division, transverse nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 636, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 602, + "atlas_id": 782, + "ontology_id": 1, + "acronym": "BSTse", + "name": "Bed nuclei of the stria terminalis, posterior division, strial extension", + "color_hex_triplet": "B3C0DF", + "graph_order": 637, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + } + ] + } + ] + }, + { + "id": 287, + "atlas_id": 35, + "ontology_id": 1, + "acronym": "BAC", + "name": "Bed nucleus of the anterior commissure", + "color_hex_triplet": "B3C0DF", + "graph_order": 638, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 809, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 343, + "atlas_id": 42, + "ontology_id": 1, + "acronym": "BS", + "name": "Brain stem", + "color_hex_triplet": "FF7080", + "graph_order": 639, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 1129, + "atlas_id": 140, + "ontology_id": 1, + "acronym": "IB", + "name": "Interbrain", + "color_hex_triplet": "FF7080", + "graph_order": 640, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 549, + "atlas_id": 351, + "ontology_id": 1, + "acronym": "TH", + "name": "Thalamus", + "color_hex_triplet": "FF7080", + "graph_order": 641, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1129, + "children": [ + { + "id": 864, + "atlas_id": 107, + "ontology_id": 1, + "acronym": "DORsm", + "name": "Thalamus, sensory-motor cortex related", + "color_hex_triplet": "FF8084", + "graph_order": 642, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 549, + "children": [ + { + "id": 637, + "atlas_id": 362, + "ontology_id": 1, + "acronym": "VENT", + "name": "Ventral group of the dorsal thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 643, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 629, + "atlas_id": 361, + "ontology_id": 1, + "acronym": "VAL", + "name": "Ventral anterior-lateral complex of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 644, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + }, + { + "id": 685, + "atlas_id": 368, + "ontology_id": 1, + "acronym": "VM", + "name": "Ventral medial nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 645, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + }, + { + "id": 709, + "atlas_id": 371, + "ontology_id": 1, + "acronym": "VP", + "name": "Ventral posterior complex of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 646, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [ + { + "id": 718, + "atlas_id": 372, + "ontology_id": 1, + "acronym": "VPL", + "name": "Ventral posterolateral nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 647, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 725, + "atlas_id": 373, + "ontology_id": 1, + "acronym": "VPLpc", + "name": "Ventral posterolateral nucleus of the thalamus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 648, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 733, + "atlas_id": 374, + "ontology_id": 1, + "acronym": "VPM", + "name": "Ventral posteromedial nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 649, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 741, + "atlas_id": 375, + "ontology_id": 1, + "acronym": "VPMpc", + "name": "Ventral posteromedial nucleus of the thalamus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 650, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + } + ] + }, + { + "id": 563807435, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PoT", + "name": "Posterior triangular thalamic nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 651, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + } + ] + }, + { + "id": 406, + "atlas_id": 333, + "ontology_id": 1, + "acronym": "SPF", + "name": "Subparafascicular nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 652, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 414, + "atlas_id": 334, + "ontology_id": 1, + "acronym": "SPFm", + "name": "Subparafascicular nucleus, magnocellular part", + "color_hex_triplet": "FF8084", + "graph_order": 653, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 406, + "children": [] + }, + { + "id": 422, + "atlas_id": 335, + "ontology_id": 1, + "acronym": "SPFp", + "name": "Subparafascicular nucleus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 654, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 406, + "children": [] + } + ] + }, + { + "id": 609, + "atlas_id": 783, + "ontology_id": 1, + "acronym": "SPA", + "name": "Subparafascicular area", + "color_hex_triplet": "FF8084", + "graph_order": 655, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [] + }, + { + "id": 1044, + "atlas_id": 271, + "ontology_id": 1, + "acronym": "PP", + "name": "Peripeduncular nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 656, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [] + }, + { + "id": 1008, + "atlas_id": 125, + "ontology_id": 1, + "acronym": "GENd", + "name": "Geniculate group, dorsal thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 657, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 475, + "atlas_id": 200, + "ontology_id": 1, + "acronym": "MG", + "name": "Medial geniculate complex", + "color_hex_triplet": "FF8084", + "graph_order": 658, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1008, + "children": [ + { + "id": 1072, + "atlas_id": 416, + "ontology_id": 1, + "acronym": "MGd", + "name": "Medial geniculate complex, dorsal part", + "color_hex_triplet": "FF8084", + "graph_order": 659, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + }, + { + "id": 1079, + "atlas_id": 417, + "ontology_id": 1, + "acronym": "MGv", + "name": "Medial geniculate complex, ventral part", + "color_hex_triplet": "FF8084", + "graph_order": 660, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + }, + { + "id": 1088, + "atlas_id": 418, + "ontology_id": 1, + "acronym": "MGm", + "name": "Medial geniculate complex, medial part", + "color_hex_triplet": "FF8084", + "graph_order": 661, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + } + ] + }, + { + "id": 170, + "atlas_id": 162, + "ontology_id": 1, + "acronym": "LGd", + "name": "Dorsal part of the lateral geniculate complex", + "color_hex_triplet": "FF8084", + "graph_order": 662, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1008, + "children": [ + { + "id": 496345664, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-sh", + "name": "Dorsal part of the lateral geniculate complex, shell", + "color_hex_triplet": "FF8084", + "graph_order": 663, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + }, + { + "id": 496345668, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-co", + "name": "Dorsal part of the lateral geniculate complex, core", + "color_hex_triplet": "FF8084", + "graph_order": 664, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + }, + { + "id": 496345672, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-ip", + "name": "Dorsal part of the lateral geniculate complex, ipsilateral zone", + "color_hex_triplet": "FF8084", + "graph_order": 665, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 856, + "atlas_id": 106, + "ontology_id": 1, + "acronym": "DORpm", + "name": "Thalamus, polymodal association cortex related", + "color_hex_triplet": "FF909F", + "graph_order": 666, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 549, + "children": [ + { + "id": 138, + "atlas_id": 158, + "ontology_id": 1, + "acronym": "LAT", + "name": "Lateral group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 667, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 218, + "atlas_id": 168, + "ontology_id": 1, + "acronym": "LP", + "name": "Lateral posterior nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 668, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 1020, + "atlas_id": 268, + "ontology_id": 1, + "acronym": "PO", + "name": "Posterior complex of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 669, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 1029, + "atlas_id": 269, + "ontology_id": 1, + "acronym": "POL", + "name": "Posterior limiting nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 670, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 325, + "atlas_id": 323, + "ontology_id": 1, + "acronym": "SGN", + "name": "Suprageniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 671, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 560581551, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Eth", + "name": "Ethmoid nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 672, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 560581555, + "atlas_id": null, + "ontology_id": 1, + "acronym": "REth", + "name": "Retroethmoid nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 673, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + } + ] + }, + { + "id": 239, + "atlas_id": 29, + "ontology_id": 1, + "acronym": "ATN", + "name": "Anterior group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 674, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 255, + "atlas_id": 31, + "ontology_id": 1, + "acronym": "AV", + "name": "Anteroventral nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 675, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 127, + "atlas_id": 15, + "ontology_id": 1, + "acronym": "AM", + "name": "Anteromedial nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 676, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [ + { + "id": 1096, + "atlas_id": 419, + "ontology_id": 1, + "acronym": "AMd", + "name": "Anteromedial nucleus, dorsal part", + "color_hex_triplet": "FF909F", + "graph_order": 677, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 127, + "children": [] + }, + { + "id": 1104, + "atlas_id": 420, + "ontology_id": 1, + "acronym": "AMv", + "name": "Anteromedial nucleus, ventral part", + "color_hex_triplet": "FF909F", + "graph_order": 678, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 127, + "children": [] + } + ] + }, + { + "id": 64, + "atlas_id": 7, + "ontology_id": 1, + "acronym": "AD", + "name": "Anterodorsal nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 679, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 1120, + "atlas_id": 139, + "ontology_id": 1, + "acronym": "IAM", + "name": "Interanteromedial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 680, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 1113, + "atlas_id": 138, + "ontology_id": 1, + "acronym": "IAD", + "name": "Interanterodorsal nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 681, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 155, + "atlas_id": 160, + "ontology_id": 1, + "acronym": "LD", + "name": "Lateral dorsal nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 682, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + } + ] + }, + { + "id": 444, + "atlas_id": 196, + "ontology_id": 1, + "acronym": "MED", + "name": "Medial group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 683, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 59, + "atlas_id": 148, + "ontology_id": 1, + "acronym": "IMD", + "name": "Intermediodorsal nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 684, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + }, + { + "id": 362, + "atlas_id": 186, + "ontology_id": 1, + "acronym": "MD", + "name": "Mediodorsal nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 685, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [ + { + "id": 617, + "atlas_id": 784, + "ontology_id": 1, + "acronym": "MDc", + "name": "Mediodorsal nucleus of the thalamus, central part", + "color_hex_triplet": "FF909F", + "graph_order": 686, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + }, + { + "id": 626, + "atlas_id": 785, + "ontology_id": 1, + "acronym": "MDl", + "name": "Mediodorsal nucleus of the thalamus, lateral part", + "color_hex_triplet": "FF909F", + "graph_order": 687, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + }, + { + "id": 636, + "atlas_id": 786, + "ontology_id": 1, + "acronym": "MDm", + "name": "Mediodorsal nucleus of the thalamus, medial part", + "color_hex_triplet": "FF909F", + "graph_order": 688, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + } + ] + }, + { + "id": 366, + "atlas_id": 328, + "ontology_id": 1, + "acronym": "SMT", + "name": "Submedial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 689, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + }, + { + "id": 1077, + "atlas_id": 275, + "ontology_id": 1, + "acronym": "PR", + "name": "Perireunensis nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 690, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + } + ] + }, + { + "id": 571, + "atlas_id": 212, + "ontology_id": 1, + "acronym": "MTN", + "name": "Midline group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 691, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 149, + "atlas_id": 301, + "ontology_id": 1, + "acronym": "PVT", + "name": "Paraventricular nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 692, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 15, + "atlas_id": 284, + "ontology_id": 1, + "acronym": "PT", + "name": "Parataenial nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 693, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 181, + "atlas_id": 305, + "ontology_id": 1, + "acronym": "RE", + "name": "Nucleus of reuniens", + "color_hex_triplet": "FF909F", + "graph_order": 694, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 560581559, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Xi", + "name": "Xiphoid thalamic nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 695, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + } + ] + }, + { + "id": 51, + "atlas_id": 147, + "ontology_id": 1, + "acronym": "ILM", + "name": "Intralaminar nuclei of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 696, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 189, + "atlas_id": 306, + "ontology_id": 1, + "acronym": "RH", + "name": "Rhomboid nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 697, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 599, + "atlas_id": 74, + "ontology_id": 1, + "acronym": "CM", + "name": "Central medial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 698, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 907, + "atlas_id": 254, + "ontology_id": 1, + "acronym": "PCN", + "name": "Paracentral nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 699, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 575, + "atlas_id": 71, + "ontology_id": 1, + "acronym": "CL", + "name": "Central lateral nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 700, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 930, + "atlas_id": 257, + "ontology_id": 1, + "acronym": "PF", + "name": "Parafascicular nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 701, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 560581563, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PIL", + "name": "Posterior intralaminar thalamic nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 702, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + } + ] + }, + { + "id": 262, + "atlas_id": 315, + "ontology_id": 1, + "acronym": "RT", + "name": "Reticular nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 703, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [] + }, + { + "id": 1014, + "atlas_id": 126, + "ontology_id": 1, + "acronym": "GENv", + "name": "Geniculate group, ventral thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 704, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 27, + "atlas_id": 144, + "ontology_id": 1, + "acronym": "IGL", + "name": "Intergeniculate leaflet of the lateral geniculate complex", + "color_hex_triplet": "FF909F", + "graph_order": 705, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + }, + { + "id": 563807439, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IntG", + "name": "Intermediate geniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 706, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + }, + { + "id": 178, + "atlas_id": 163, + "ontology_id": 1, + "acronym": "LGv", + "name": "Ventral part of the lateral geniculate complex", + "color_hex_triplet": "FF909F", + "graph_order": 707, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [ + { + "id": 300, + "atlas_id": 461, + "ontology_id": 1, + "acronym": "LGvl", + "name": "Ventral part of the lateral geniculate complex, lateral zone", + "color_hex_triplet": "FF909F", + "graph_order": 708, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 178, + "children": [] + }, + { + "id": 316, + "atlas_id": 463, + "ontology_id": 1, + "acronym": "LGvm", + "name": "Ventral part of the lateral geniculate complex, medial zone", + "color_hex_triplet": "FF909F", + "graph_order": 709, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 178, + "children": [] + } + ] + }, + { + "id": 321, + "atlas_id": 464, + "ontology_id": 1, + "acronym": "SubG", + "name": "Subgeniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 710, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + } + ] + }, + { + "id": 958, + "atlas_id": 119, + "ontology_id": 1, + "acronym": "EPI", + "name": "Epithalamus", + "color_hex_triplet": "FF909F", + "graph_order": 711, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 483, + "atlas_id": 201, + "ontology_id": 1, + "acronym": "MH", + "name": "Medial habenula", + "color_hex_triplet": "FF909F", + "graph_order": 712, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + }, + { + "id": 186, + "atlas_id": 164, + "ontology_id": 1, + "acronym": "LH", + "name": "Lateral habenula", + "color_hex_triplet": "FF909F", + "graph_order": 713, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + }, + { + "id": 953, + "atlas_id": 260, + "ontology_id": 1, + "acronym": "PIN", + "name": "Pineal body", + "color_hex_triplet": "FF909F", + "graph_order": 714, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 1097, + "atlas_id": 136, + "ontology_id": 1, + "acronym": "HY", + "name": "Hypothalamus", + "color_hex_triplet": "E64438", + "graph_order": 715, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1129, + "children": [ + { + "id": 157, + "atlas_id": 302, + "ontology_id": 1, + "acronym": "PVZ", + "name": "Periventricular zone", + "color_hex_triplet": "FF5D50", + "graph_order": 716, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 390, + "atlas_id": 331, + "ontology_id": 1, + "acronym": "SO", + "name": "Supraoptic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 717, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 332, + "atlas_id": 465, + "ontology_id": 1, + "acronym": "ASO", + "name": "Accessory supraoptic group", + "color_hex_triplet": "FF5D50", + "graph_order": 718, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [ + { + "id": 432, + "atlas_id": 902, + "ontology_id": 1, + "acronym": "NC", + "name": "Nucleus circularis", + "color_hex_triplet": "FF5D50", + "graph_order": 719, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 332, + "children": [] + } + ] + }, + { + "id": 38, + "atlas_id": 287, + "ontology_id": 1, + "acronym": "PVH", + "name": "Paraventricular hypothalamic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 720, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [ + { + "id": 71, + "atlas_id": 291, + "ontology_id": 1, + "acronym": "PVHm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division", + "color_hex_triplet": "FF5D50", + "graph_order": 721, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 38, + "children": [ + { + "id": 47, + "atlas_id": 288, + "ontology_id": 1, + "acronym": "PVHam", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, anterior magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 722, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [] + }, + { + "id": 79, + "atlas_id": 292, + "ontology_id": 1, + "acronym": "PVHmm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, medial magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 723, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [] + }, + { + "id": 103, + "atlas_id": 295, + "ontology_id": 1, + "acronym": "PVHpm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 724, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [ + { + "id": 652, + "atlas_id": 788, + "ontology_id": 1, + "acronym": "PVHpml", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, lateral zone", + "color_hex_triplet": "FF5D50", + "graph_order": 725, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 103, + "children": [] + }, + { + "id": 660, + "atlas_id": 789, + "ontology_id": 1, + "acronym": "PVHpmm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, medial zone", + "color_hex_triplet": "FF5D50", + "graph_order": 726, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 103, + "children": [] + } + ] + } + ] + }, + { + "id": 94, + "atlas_id": 294, + "ontology_id": 1, + "acronym": "PVHp", + "name": "Paraventricular hypothalamic nucleus, parvicellular division", + "color_hex_triplet": "FF5D50", + "graph_order": 727, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 38, + "children": [ + { + "id": 55, + "atlas_id": 289, + "ontology_id": 1, + "acronym": "PVHap", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, anterior parvicellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 728, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + }, + { + "id": 87, + "atlas_id": 293, + "ontology_id": 1, + "acronym": "PVHmpd", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, medial parvicellular part, dorsal zone", + "color_hex_triplet": "FF5D50", + "graph_order": 729, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + }, + { + "id": 110, + "atlas_id": 296, + "ontology_id": 1, + "acronym": "PVHpv", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, periventricular part", + "color_hex_triplet": "FF5D50", + "graph_order": 730, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + } + ] + } + ] + }, + { + "id": 30, + "atlas_id": 286, + "ontology_id": 1, + "acronym": "PVa", + "name": "Periventricular hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF5D50", + "graph_order": 731, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 118, + "atlas_id": 297, + "ontology_id": 1, + "acronym": "PVi", + "name": "Periventricular hypothalamic nucleus, intermediate part", + "color_hex_triplet": "FF5D50", + "graph_order": 732, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 223, + "atlas_id": 27, + "ontology_id": 1, + "acronym": "ARH", + "name": "Arcuate hypothalamic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 733, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + } + ] + }, + { + "id": 141, + "atlas_id": 300, + "ontology_id": 1, + "acronym": "PVR", + "name": "Periventricular region", + "color_hex_triplet": "FF5547", + "graph_order": 734, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 72, + "atlas_id": 8, + "ontology_id": 1, + "acronym": "ADP", + "name": "Anterodorsal preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 735, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 80, + "atlas_id": 9, + "ontology_id": 1, + "acronym": "AHA", + "name": "Anterior hypothalamic area", + "color_hex_triplet": "FF5547", + "graph_order": 736, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 263, + "atlas_id": 32, + "ontology_id": 1, + "acronym": "AVP", + "name": "Anteroventral preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 737, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 272, + "atlas_id": 33, + "ontology_id": 1, + "acronym": "AVPV", + "name": "Anteroventral periventricular nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 738, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 830, + "atlas_id": 103, + "ontology_id": 1, + "acronym": "DMH", + "name": "Dorsomedial nucleus of the hypothalamus", + "color_hex_triplet": "FF5547", + "graph_order": 739, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [ + { + "id": 668, + "atlas_id": 790, + "ontology_id": 1, + "acronym": "DMHa", + "name": "Dorsomedial nucleus of the hypothalamus, anterior part", + "color_hex_triplet": "FF5547", + "graph_order": 740, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + }, + { + "id": 676, + "atlas_id": 791, + "ontology_id": 1, + "acronym": "DMHp", + "name": "Dorsomedial nucleus of the hypothalamus, posterior part", + "color_hex_triplet": "FF5547", + "graph_order": 741, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + }, + { + "id": 684, + "atlas_id": 792, + "ontology_id": 1, + "acronym": "DMHv", + "name": "Dorsomedial nucleus of the hypothalamus, ventral part", + "color_hex_triplet": "FF5547", + "graph_order": 742, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + } + ] + }, + { + "id": 452, + "atlas_id": 197, + "ontology_id": 1, + "acronym": "MEPO", + "name": "Median preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 743, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 523, + "atlas_id": 206, + "ontology_id": 1, + "acronym": "MPO", + "name": "Medial preoptic area", + "color_hex_triplet": "FF5547", + "graph_order": 744, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 763, + "atlas_id": 236, + "ontology_id": 1, + "acronym": "OV", + "name": "Vascular organ of the lamina terminalis", + "color_hex_triplet": "FF5547", + "graph_order": 745, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 914, + "atlas_id": 255, + "ontology_id": 1, + "acronym": "PD", + "name": "Posterodorsal preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 746, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 1109, + "atlas_id": 279, + "ontology_id": 1, + "acronym": "PS", + "name": "Parastrial nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 747, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 1124, + "atlas_id": 281, + "ontology_id": 1, + "acronym": "PSCH", + "name": "Suprachiasmatic preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 748, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 126, + "atlas_id": 298, + "ontology_id": 1, + "acronym": "PVp", + "name": "Periventricular hypothalamic nucleus, posterior part", + "color_hex_triplet": "FF5547", + "graph_order": 749, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 133, + "atlas_id": 299, + "ontology_id": 1, + "acronym": "PVpo", + "name": "Periventricular hypothalamic nucleus, preoptic part", + "color_hex_triplet": "FF5547", + "graph_order": 750, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 347, + "atlas_id": 467, + "ontology_id": 1, + "acronym": "SBPV", + "name": "Subparaventricular zone", + "color_hex_triplet": "FF5547", + "graph_order": 751, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 286, + "atlas_id": 318, + "ontology_id": 1, + "acronym": "SCH", + "name": "Suprachiasmatic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 752, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 338, + "atlas_id": 466, + "ontology_id": 1, + "acronym": "SFO", + "name": "Subfornical organ", + "color_hex_triplet": "FF5547", + "graph_order": 753, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 576073699, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VMPO", + "name": "Ventromedial preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 754, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 689, + "atlas_id": 793, + "ontology_id": 1, + "acronym": "VLPO", + "name": "Ventrolateral preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 755, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + } + ] + }, + { + "id": 467, + "atlas_id": 199, + "ontology_id": 1, + "acronym": "MEZ", + "name": "Hypothalamic medial zone", + "color_hex_triplet": "FF4C3E", + "graph_order": 756, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 88, + "atlas_id": 10, + "ontology_id": 1, + "acronym": "AHN", + "name": "Anterior hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 757, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 700, + "atlas_id": 794, + "ontology_id": 1, + "acronym": "AHNa", + "name": "Anterior hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 758, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 708, + "atlas_id": 795, + "ontology_id": 1, + "acronym": "AHNc", + "name": "Anterior hypothalamic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 759, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 716, + "atlas_id": 796, + "ontology_id": 1, + "acronym": "AHNd", + "name": "Anterior hypothalamic nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 760, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 724, + "atlas_id": 797, + "ontology_id": 1, + "acronym": "AHNp", + "name": "Anterior hypothalamic nucleus, posterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 761, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + } + ] + }, + { + "id": 331, + "atlas_id": 182, + "ontology_id": 1, + "acronym": "MBO", + "name": "Mammillary body", + "color_hex_triplet": "FF4C3E", + "graph_order": 762, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 210, + "atlas_id": 167, + "ontology_id": 1, + "acronym": "LM", + "name": "Lateral mammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 763, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [] + }, + { + "id": 491, + "atlas_id": 202, + "ontology_id": 1, + "acronym": "MM", + "name": "Medial mammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 764, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 732, + "atlas_id": 798, + "ontology_id": 1, + "acronym": "MMme", + "name": "Medial mammillary nucleus, median part", + "color_hex_triplet": "FF4C3E", + "graph_order": 765, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826647, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMl", + "name": "Medial mammillary nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 766, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826651, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMm", + "name": "Medial mammillary nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 767, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826655, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMp", + "name": "Medial mammillary nucleus, posterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 768, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826659, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMd", + "name": "Medial mammillary nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 769, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + } + ] + }, + { + "id": 525, + "atlas_id": 348, + "ontology_id": 1, + "acronym": "SUM", + "name": "Supramammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 770, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 1110, + "atlas_id": 421, + "ontology_id": 1, + "acronym": "SUMl", + "name": "Supramammillary nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 771, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 525, + "children": [] + }, + { + "id": 1118, + "atlas_id": 422, + "ontology_id": 1, + "acronym": "SUMm", + "name": "Supramammillary nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 772, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 525, + "children": [] + } + ] + }, + { + "id": 557, + "atlas_id": 352, + "ontology_id": 1, + "acronym": "TM", + "name": "Tuberomammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 773, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 1126, + "atlas_id": 423, + "ontology_id": 1, + "acronym": "TMd", + "name": "Tuberomammillary nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 774, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 557, + "children": [] + }, + { + "id": 1, + "atlas_id": 424, + "ontology_id": 1, + "acronym": "TMv", + "name": "Tuberomammillary nucleus, ventral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 775, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 557, + "children": [] + } + ] + } + ] + }, + { + "id": 515, + "atlas_id": 205, + "ontology_id": 1, + "acronym": "MPN", + "name": "Medial preoptic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 776, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 740, + "atlas_id": 799, + "ontology_id": 1, + "acronym": "MPNc", + "name": "Medial preoptic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 777, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + }, + { + "id": 748, + "atlas_id": 800, + "ontology_id": 1, + "acronym": "MPNl", + "name": "Medial preoptic nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 778, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + }, + { + "id": 756, + "atlas_id": 801, + "ontology_id": 1, + "acronym": "MPNm", + "name": "Medial preoptic nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 779, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + } + ] + }, + { + "id": 980, + "atlas_id": 263, + "ontology_id": 1, + "acronym": "PMd", + "name": "Dorsal premammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 780, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + }, + { + "id": 1004, + "atlas_id": 266, + "ontology_id": 1, + "acronym": "PMv", + "name": "Ventral premammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 781, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + }, + { + "id": 63, + "atlas_id": 290, + "ontology_id": 1, + "acronym": "PVHd", + "name": "Paraventricular hypothalamic nucleus, descending division", + "color_hex_triplet": "FF4C3E", + "graph_order": 782, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 439, + "atlas_id": 903, + "ontology_id": 1, + "acronym": "PVHdp", + "name": "Paraventricular hypothalamic nucleus, descending division, dorsal parvicellular part", + "color_hex_triplet": "FF4C3E", + "graph_order": 783, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 447, + "atlas_id": 904, + "ontology_id": 1, + "acronym": "PVHf", + "name": "Paraventricular hypothalamic nucleus, descending division, forniceal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 784, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 455, + "atlas_id": 905, + "ontology_id": 1, + "acronym": "PVHlp", + "name": "Paraventricular hypothalamic nucleus, descending division, lateral parvicellular part", + "color_hex_triplet": "FF4C3E", + "graph_order": 785, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 464, + "atlas_id": 906, + "ontology_id": 1, + "acronym": "PVHmpv", + "name": "Paraventricular hypothalamic nucleus, descending division, medial parvicellular part, ventral zone", + "color_hex_triplet": "FF4C3E", + "graph_order": 786, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + } + ] + }, + { + "id": 693, + "atlas_id": 369, + "ontology_id": 1, + "acronym": "VMH", + "name": "Ventromedial hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 787, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 761, + "atlas_id": 802, + "ontology_id": 1, + "acronym": "VMHa", + "name": "Ventromedial hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 788, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 769, + "atlas_id": 803, + "ontology_id": 1, + "acronym": "VMHc", + "name": "Ventromedial hypothalamic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 789, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 777, + "atlas_id": 804, + "ontology_id": 1, + "acronym": "VMHdm", + "name": "Ventromedial hypothalamic nucleus, dorsomedial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 790, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 785, + "atlas_id": 805, + "ontology_id": 1, + "acronym": "VMHvl", + "name": "Ventromedial hypothalamic nucleus, ventrolateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 791, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + } + ] + }, + { + "id": 946, + "atlas_id": 259, + "ontology_id": 1, + "acronym": "PH", + "name": "Posterior hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 792, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + } + ] + }, + { + "id": 290, + "atlas_id": 177, + "ontology_id": 1, + "acronym": "LZ", + "name": "Hypothalamic lateral zone", + "color_hex_triplet": "F2483B", + "graph_order": 793, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 194, + "atlas_id": 165, + "ontology_id": 1, + "acronym": "LHA", + "name": "Lateral hypothalamic area", + "color_hex_triplet": "F2483B", + "graph_order": 794, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 226, + "atlas_id": 169, + "ontology_id": 1, + "acronym": "LPO", + "name": "Lateral preoptic area", + "color_hex_triplet": "F2483B", + "graph_order": 795, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 356, + "atlas_id": 468, + "ontology_id": 1, + "acronym": "PST", + "name": "Preparasubthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 796, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 364, + "atlas_id": 469, + "ontology_id": 1, + "acronym": "PSTN", + "name": "Parasubthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 797, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 576073704, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PeF", + "name": "Perifornical nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 798, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 173, + "atlas_id": 304, + "ontology_id": 1, + "acronym": "RCH", + "name": "Retrochiasmatic area", + "color_hex_triplet": "F2483B", + "graph_order": 799, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 470, + "atlas_id": 341, + "ontology_id": 1, + "acronym": "STN", + "name": "Subthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 800, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 614, + "atlas_id": 359, + "ontology_id": 1, + "acronym": "TU", + "name": "Tuberal nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 801, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 797, + "atlas_id": 382, + "ontology_id": 1, + "acronym": "ZI", + "name": "Zona incerta", + "color_hex_triplet": "F2483B", + "graph_order": 802, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [ + { + "id": 796, + "atlas_id": 806, + "ontology_id": 1, + "acronym": "A13", + "name": "Dopaminergic A13 group", + "color_hex_triplet": "F2483B", + "graph_order": 803, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 797, + "children": [] + }, + { + "id": 804, + "atlas_id": 807, + "ontology_id": 1, + "acronym": "FF", + "name": "Fields of Forel", + "color_hex_triplet": "F2483B", + "graph_order": 804, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 797, + "children": [] + } + ] + } + ] + }, + { + "id": 10671, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ME", + "name": "Median eminence", + "color_hex_triplet": "F2483B", + "graph_order": 805, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [] + } + ] + } + ] + }, + { + "id": 313, + "atlas_id": 180, + "ontology_id": 1, + "acronym": "MB", + "name": "Midbrain", + "color_hex_triplet": "FF64FF", + "graph_order": 806, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 339, + "atlas_id": 183, + "ontology_id": 1, + "acronym": "MBsen", + "name": "Midbrain, sensory related", + "color_hex_triplet": "FF7AFF", + "graph_order": 807, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 302, + "atlas_id": 320, + "ontology_id": 1, + "acronym": "SCs", + "name": "Superior colliculus, sensory related", + "color_hex_triplet": "FF7AFF", + "graph_order": 808, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [ + { + "id": 851, + "atlas_id": 813, + "ontology_id": 1, + "acronym": "SCop", + "name": "Superior colliculus, optic layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 809, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + }, + { + "id": 842, + "atlas_id": 812, + "ontology_id": 1, + "acronym": "SCsg", + "name": "Superior colliculus, superficial gray layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 810, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + }, + { + "id": 834, + "atlas_id": 811, + "ontology_id": 1, + "acronym": "SCzo", + "name": "Superior colliculus, zonal layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 811, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + } + ] + }, + { + "id": 4, + "atlas_id": 141, + "ontology_id": 1, + "acronym": "IC", + "name": "Inferior colliculus", + "color_hex_triplet": "FF7AFF", + "graph_order": 812, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [ + { + "id": 811, + "atlas_id": 808, + "ontology_id": 1, + "acronym": "ICc", + "name": "Inferior colliculus, central nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 813, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + }, + { + "id": 820, + "atlas_id": 809, + "ontology_id": 1, + "acronym": "ICd", + "name": "Inferior colliculus, dorsal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 814, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + }, + { + "id": 828, + "atlas_id": 810, + "ontology_id": 1, + "acronym": "ICe", + "name": "Inferior colliculus, external nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 815, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + } + ] + }, + { + "id": 580, + "atlas_id": 213, + "ontology_id": 1, + "acronym": "NB", + "name": "Nucleus of the brachium of the inferior colliculus", + "color_hex_triplet": "FF7AFF", + "graph_order": 816, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 271, + "atlas_id": 316, + "ontology_id": 1, + "acronym": "SAG", + "name": "Nucleus sagulum", + "color_hex_triplet": "FF7AFF", + "graph_order": 817, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 874, + "atlas_id": 250, + "ontology_id": 1, + "acronym": "PBG", + "name": "Parabigeminal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 818, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 460, + "atlas_id": 198, + "ontology_id": 1, + "acronym": "MEV", + "name": "Midbrain trigeminal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 819, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 599626923, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SCO", + "name": "Subcommissural organ", + "color_hex_triplet": "FF7AFF", + "graph_order": 820, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + } + ] + }, + { + "id": 323, + "atlas_id": 181, + "ontology_id": 1, + "acronym": "MBmot", + "name": "Midbrain, motor related", + "color_hex_triplet": "FF90FF", + "graph_order": 821, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 381, + "atlas_id": 330, + "ontology_id": 1, + "acronym": "SNr", + "name": "Substantia nigra, reticular part", + "color_hex_triplet": "FF90FF", + "graph_order": 822, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 749, + "atlas_id": 376, + "ontology_id": 1, + "acronym": "VTA", + "name": "Ventral tegmental area", + "color_hex_triplet": "FF90FF", + "graph_order": 823, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 607344830, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PN", + "name": "Paranigral nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 824, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 246, + "atlas_id": 313, + "ontology_id": 1, + "acronym": "RR", + "name": "Midbrain reticular nucleus, retrorubral area", + "color_hex_triplet": "FF90FF", + "graph_order": 825, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 128, + "atlas_id": 864, + "ontology_id": 1, + "acronym": "MRN", + "name": "Midbrain reticular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 826, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 539, + "atlas_id": 208, + "ontology_id": 1, + "acronym": "MRNm", + "name": "Midbrain reticular nucleus, magnocellular part", + "color_hex_triplet": "FF90FF", + "graph_order": 827, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + }, + { + "id": 548, + "atlas_id": 209, + "ontology_id": 1, + "acronym": "MRNmg", + "name": "Midbrain reticular nucleus, magnocellular part, general", + "color_hex_triplet": "FF90FF", + "graph_order": 828, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + }, + { + "id": 555, + "atlas_id": 210, + "ontology_id": 1, + "acronym": "MRNp", + "name": "Midbrain reticular nucleus, parvicellular part", + "color_hex_triplet": "FF90FF", + "graph_order": 829, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + } + ] + }, + { + "id": 294, + "atlas_id": 319, + "ontology_id": 1, + "acronym": "SCm", + "name": "Superior colliculus, motor related", + "color_hex_triplet": "FF90FF", + "graph_order": 830, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 26, + "atlas_id": 427, + "ontology_id": 1, + "acronym": "SCdg", + "name": "Superior colliculus, motor related, deep gray layer", + "color_hex_triplet": "FF90FF", + "graph_order": 831, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 42, + "atlas_id": 429, + "ontology_id": 1, + "acronym": "SCdw", + "name": "Superior colliculus, motor related, deep white layer", + "color_hex_triplet": "FF90FF", + "graph_order": 832, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 17, + "atlas_id": 426, + "ontology_id": 1, + "acronym": "SCiw", + "name": "Superior colliculus, motor related, intermediate white layer", + "color_hex_triplet": "FF90FF", + "graph_order": 833, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 10, + "atlas_id": 425, + "ontology_id": 1, + "acronym": "SCig", + "name": "Superior colliculus, motor related, intermediate gray layer", + "color_hex_triplet": "FF90FF", + "graph_order": 834, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [ + { + "id": 494, + "atlas_id": 910, + "ontology_id": 1, + "acronym": "SCig-a", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer a", + "color_hex_triplet": "FF90FF", + "graph_order": 835, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + }, + { + "id": 503, + "atlas_id": 911, + "ontology_id": 1, + "acronym": "SCig-b", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer b", + "color_hex_triplet": "FF90FF", + "graph_order": 836, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + }, + { + "id": 511, + "atlas_id": 912, + "ontology_id": 1, + "acronym": "SCig-c", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer c", + "color_hex_triplet": "FF90FF", + "graph_order": 837, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + } + ] + } + ] + }, + { + "id": 795, + "atlas_id": 240, + "ontology_id": 1, + "acronym": "PAG", + "name": "Periaqueductal gray", + "color_hex_triplet": "FF90FF", + "graph_order": 838, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 50, + "atlas_id": 430, + "ontology_id": 1, + "acronym": "PRC", + "name": "Precommissural nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 839, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 67, + "atlas_id": 149, + "ontology_id": 1, + "acronym": "INC", + "name": "Interstitial nucleus of Cajal", + "color_hex_triplet": "FF90FF", + "graph_order": 840, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 587, + "atlas_id": 214, + "ontology_id": 1, + "acronym": "ND", + "name": "Nucleus of Darkschewitsch", + "color_hex_triplet": "FF90FF", + "graph_order": 841, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 614454277, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Su3", + "name": "Supraoculomotor periaqueductal gray", + "color_hex_triplet": "FF90FF", + "graph_order": 842, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + } + ] + }, + { + "id": 1100, + "atlas_id": 278, + "ontology_id": 1, + "acronym": "PRT", + "name": "Pretectal region", + "color_hex_triplet": "FF90FF", + "graph_order": 843, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 215, + "atlas_id": 26, + "ontology_id": 1, + "acronym": "APN", + "name": "Anterior pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 844, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 531, + "atlas_id": 207, + "ontology_id": 1, + "acronym": "MPT", + "name": "Medial pretectal area", + "color_hex_triplet": "FF90FF", + "graph_order": 845, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 628, + "atlas_id": 219, + "ontology_id": 1, + "acronym": "NOT", + "name": "Nucleus of the optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 846, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 634, + "atlas_id": 220, + "ontology_id": 1, + "acronym": "NPC", + "name": "Nucleus of the posterior commissure", + "color_hex_triplet": "FF90FF", + "graph_order": 847, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 706, + "atlas_id": 229, + "ontology_id": 1, + "acronym": "OP", + "name": "Olivary pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 848, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 1061, + "atlas_id": 273, + "ontology_id": 1, + "acronym": "PPT", + "name": "Posterior pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 849, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 549009203, + "atlas_id": null, + "ontology_id": 1, + "acronym": "RPF", + "name": "Retroparafascicular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 850, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + } + ] + }, + { + "id": 549009207, + "atlas_id": null, + "ontology_id": 1, + "acronym": "InCo", + "name": "Intercollicular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 851, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 616, + "atlas_id": 76, + "ontology_id": 1, + "acronym": "CUN", + "name": "Cuneiform nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 852, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 214, + "atlas_id": 309, + "ontology_id": 1, + "acronym": "RN", + "name": "Red nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 853, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 35, + "atlas_id": 145, + "ontology_id": 1, + "acronym": "III", + "name": "Oculomotor nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 854, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 549009211, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MA3", + "name": "Medial accesory oculomotor nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 855, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 975, + "atlas_id": 121, + "ontology_id": 1, + "acronym": "EW", + "name": "Edinger-Westphal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 856, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 115, + "atlas_id": 155, + "ontology_id": 1, + "acronym": "IV", + "name": "Trochlear nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 857, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 606826663, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Pa4", + "name": "Paratrochlear nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 858, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 757, + "atlas_id": 377, + "ontology_id": 1, + "acronym": "VTN", + "name": "Ventral tegmental nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 859, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 231, + "atlas_id": 28, + "ontology_id": 1, + "acronym": "AT", + "name": "Anterior tegmental nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 860, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 66, + "atlas_id": 432, + "ontology_id": 1, + "acronym": "LT", + "name": "Lateral terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 861, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 75, + "atlas_id": 433, + "ontology_id": 1, + "acronym": "DT", + "name": "Dorsal terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 862, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 58, + "atlas_id": 431, + "ontology_id": 1, + "acronym": "MT", + "name": "Medial terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 863, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 615, + "atlas_id": 925, + "ontology_id": 1, + "acronym": "SNl", + "name": "Substantia nigra, lateral part", + "color_hex_triplet": "FF90FF", + "graph_order": 864, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + } + ] + }, + { + "id": 348, + "atlas_id": 184, + "ontology_id": 1, + "acronym": "MBsta", + "name": "Midbrain, behavioral state related", + "color_hex_triplet": "FF90FF", + "graph_order": 865, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 374, + "atlas_id": 329, + "ontology_id": 1, + "acronym": "SNc", + "name": "Substantia nigra, compact part", + "color_hex_triplet": "FFA6FF", + "graph_order": 866, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [] + }, + { + "id": 1052, + "atlas_id": 272, + "ontology_id": 1, + "acronym": "PPN", + "name": "Pedunculopontine nucleus", + "color_hex_triplet": "FFA6FF", + "graph_order": 867, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [] + }, + { + "id": 165, + "atlas_id": 303, + "ontology_id": 1, + "acronym": "RAmb", + "name": "Midbrain raphe nuclei", + "color_hex_triplet": "FFA6FF", + "graph_order": 868, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [ + { + "id": 12, + "atlas_id": 142, + "ontology_id": 1, + "acronym": "IF", + "name": "Interfascicular nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 869, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 100, + "atlas_id": 153, + "ontology_id": 1, + "acronym": "IPN", + "name": "Interpeduncular nucleus", + "color_hex_triplet": "FFA6FF", + "graph_order": 870, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [ + { + "id": 607344834, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPR", + "name": "Interpeduncular nucleus, rostral", + "color_hex_triplet": "FFA6FF", + "graph_order": 871, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344838, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPC", + "name": "Interpeduncular nucleus, caudal", + "color_hex_triplet": "FFA6FF", + "graph_order": 872, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344842, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPA", + "name": "Interpeduncular nucleus, apical", + "color_hex_triplet": "FFA6FF", + "graph_order": 873, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344846, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPL", + "name": "Interpeduncular nucleus, lateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 874, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344850, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPI", + "name": "Interpeduncular nucleus, intermediate", + "color_hex_triplet": "FFA6FF", + "graph_order": 875, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344854, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPDM", + "name": "Interpeduncular nucleus, dorsomedial", + "color_hex_triplet": "FFA6FF", + "graph_order": 876, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344858, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPDL", + "name": "Interpeduncular nucleus, dorsolateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 877, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344862, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPRL", + "name": "Interpeduncular nucleus, rostrolateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 878, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + } + ] + }, + { + "id": 197, + "atlas_id": 307, + "ontology_id": 1, + "acronym": "RL", + "name": "Rostral linear nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 879, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 591, + "atlas_id": 73, + "ontology_id": 1, + "acronym": "CLI", + "name": "Central linear nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 880, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 872, + "atlas_id": 108, + "ontology_id": 1, + "acronym": "DR", + "name": "Dorsal nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 881, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 1065, + "atlas_id": 132, + "ontology_id": 1, + "acronym": "HB", + "name": "Hindbrain", + "color_hex_triplet": "FF9B88", + "graph_order": 882, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 771, + "atlas_id": 237, + "ontology_id": 1, + "acronym": "P", + "name": "Pons", + "color_hex_triplet": "FF9B88", + "graph_order": 883, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1065, + "children": [ + { + "id": 1132, + "atlas_id": 282, + "ontology_id": 1, + "acronym": "P-sen", + "name": "Pons, sensory related", + "color_hex_triplet": "FFAE6F", + "graph_order": 884, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 612, + "atlas_id": 217, + "ontology_id": 1, + "acronym": "NLL", + "name": "Nucleus of the lateral lemniscus", + "color_hex_triplet": "FFAE6F", + "graph_order": 885, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 82, + "atlas_id": 434, + "ontology_id": 1, + "acronym": "NLLd", + "name": "Nucleus of the lateral lemniscus, dorsal part", + "color_hex_triplet": "FFAE6F", + "graph_order": 886, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + }, + { + "id": 90, + "atlas_id": 435, + "ontology_id": 1, + "acronym": "NLLh", + "name": "Nucleus of the lateral lemniscus, horizontal part", + "color_hex_triplet": "FFAE6F", + "graph_order": 887, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + }, + { + "id": 99, + "atlas_id": 436, + "ontology_id": 1, + "acronym": "NLLv", + "name": "Nucleus of the lateral lemniscus, ventral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 888, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + } + ] + }, + { + "id": 7, + "atlas_id": 283, + "ontology_id": 1, + "acronym": "PSV", + "name": "Principal sensory nucleus of the trigeminal", + "color_hex_triplet": "FFAE6F", + "graph_order": 889, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [] + }, + { + "id": 867, + "atlas_id": 249, + "ontology_id": 1, + "acronym": "PB", + "name": "Parabrachial nucleus", + "color_hex_triplet": "FFAE6F", + "graph_order": 890, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 123, + "atlas_id": 156, + "ontology_id": 1, + "acronym": "KF", + "name": "Koelliker-Fuse subnucleus", + "color_hex_triplet": "FFAE6F", + "graph_order": 891, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [] + }, + { + "id": 881, + "atlas_id": 251, + "ontology_id": 1, + "acronym": "PBl", + "name": "Parabrachial nucleus, lateral division", + "color_hex_triplet": "FFAE6F", + "graph_order": 892, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [ + { + "id": 860, + "atlas_id": 814, + "ontology_id": 1, + "acronym": "PBlc", + "name": "Parabrachial nucleus, lateral division, central lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 893, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 868, + "atlas_id": 815, + "ontology_id": 1, + "acronym": "PBld", + "name": "Parabrachial nucleus, lateral division, dorsal lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 894, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 875, + "atlas_id": 816, + "ontology_id": 1, + "acronym": "PBle", + "name": "Parabrachial nucleus, lateral division, external lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 895, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 883, + "atlas_id": 817, + "ontology_id": 1, + "acronym": "PBls", + "name": "Parabrachial nucleus, lateral division, superior lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 896, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 891, + "atlas_id": 818, + "ontology_id": 1, + "acronym": "PBlv", + "name": "Parabrachial nucleus, lateral division, ventral lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 897, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + } + ] + }, + { + "id": 890, + "atlas_id": 252, + "ontology_id": 1, + "acronym": "PBm", + "name": "Parabrachial nucleus, medial division", + "color_hex_triplet": "FFAE6F", + "graph_order": 898, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [ + { + "id": 899, + "atlas_id": 819, + "ontology_id": 1, + "acronym": "PBme", + "name": "Parabrachial nucleus, medial division, external medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 899, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + }, + { + "id": 915, + "atlas_id": 821, + "ontology_id": 1, + "acronym": "PBmm", + "name": "Parabrachial nucleus, medial division, medial medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 900, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + }, + { + "id": 923, + "atlas_id": 822, + "ontology_id": 1, + "acronym": "PBmv", + "name": "Parabrachial nucleus, medial division, ventral medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 901, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + } + ] + } + ] + }, + { + "id": 398, + "atlas_id": 332, + "ontology_id": 1, + "acronym": "SOC", + "name": "Superior olivary complex", + "color_hex_triplet": "FFAE6F", + "graph_order": 902, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 122, + "atlas_id": 439, + "ontology_id": 1, + "acronym": "POR", + "name": "Superior olivary complex, periolivary region", + "color_hex_triplet": "FFAE6F", + "graph_order": 903, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + }, + { + "id": 105, + "atlas_id": 437, + "ontology_id": 1, + "acronym": "SOCm", + "name": "Superior olivary complex, medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 904, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + }, + { + "id": 114, + "atlas_id": 438, + "ontology_id": 1, + "acronym": "SOCl", + "name": "Superior olivary complex, lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 905, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + } + ] + } + ] + }, + { + "id": 987, + "atlas_id": 264, + "ontology_id": 1, + "acronym": "P-mot", + "name": "Pons, motor related", + "color_hex_triplet": "FFBA86", + "graph_order": 906, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 280, + "atlas_id": 34, + "ontology_id": 1, + "acronym": "B", + "name": "Barrington's nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 907, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 880, + "atlas_id": 109, + "ontology_id": 1, + "acronym": "DTN", + "name": "Dorsal tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 908, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 283, + "atlas_id": 176, + "ontology_id": 1, + "acronym": "LTN", + "name": "Lateral tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 909, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 599626927, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PDTg", + "name": "Posterodorsal tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 910, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 898, + "atlas_id": 253, + "ontology_id": 1, + "acronym": "PCG", + "name": "Pontine central gray", + "color_hex_triplet": "FFBA86", + "graph_order": 911, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 931, + "atlas_id": 823, + "ontology_id": 1, + "acronym": "PG", + "name": "Pontine gray", + "color_hex_triplet": "FFBA86", + "graph_order": 912, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 1093, + "atlas_id": 277, + "ontology_id": 1, + "acronym": "PRNc", + "name": "Pontine reticular nucleus, caudal part", + "color_hex_triplet": "FFBA86", + "graph_order": 913, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 552, + "atlas_id": 917, + "ontology_id": 1, + "acronym": "PRNv", + "name": "Pontine reticular nucleus, ventral part", + "color_hex_triplet": "FFBA86", + "graph_order": 914, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 318, + "atlas_id": 322, + "ontology_id": 1, + "acronym": "SG", + "name": "Supragenual nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 915, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 462, + "atlas_id": 340, + "ontology_id": 1, + "acronym": "SSN", + "name": "Superior salivatory nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 916, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 534, + "atlas_id": 349, + "ontology_id": 1, + "acronym": "SUT", + "name": "Supratrigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 917, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 574, + "atlas_id": 354, + "ontology_id": 1, + "acronym": "TRN", + "name": "Tegmental reticular nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 918, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 621, + "atlas_id": 360, + "ontology_id": 1, + "acronym": "V", + "name": "Motor nucleus of trigeminal", + "color_hex_triplet": "FFBA86", + "graph_order": 919, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009215, + "atlas_id": null, + "ontology_id": 1, + "acronym": "P5", + "name": "Peritrigeminal zone", + "color_hex_triplet": "FFBA86", + "graph_order": 920, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009219, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Acs5", + "name": "Accessory trigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 921, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009223, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PC5", + "name": "Parvicellular motor 5 nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 922, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009227, + "atlas_id": null, + "ontology_id": 1, + "acronym": "I5", + "name": "Intertrigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 923, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + } + ] + }, + { + "id": 1117, + "atlas_id": 280, + "ontology_id": 1, + "acronym": "P-sat", + "name": "Pons, behavioral state related", + "color_hex_triplet": "FFC395", + "graph_order": 924, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 679, + "atlas_id": 84, + "ontology_id": 1, + "acronym": "CS", + "name": "Superior central nucleus raphe", + "color_hex_triplet": "FFC395", + "graph_order": 925, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [ + { + "id": 137, + "atlas_id": 441, + "ontology_id": 1, + "acronym": "CSl", + "name": "Superior central nucleus raphe, lateral part", + "color_hex_triplet": "FFC395", + "graph_order": 926, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 679, + "children": [] + }, + { + "id": 130, + "atlas_id": 440, + "ontology_id": 1, + "acronym": "CSm", + "name": "Superior central nucleus raphe, medial part", + "color_hex_triplet": "FFC395", + "graph_order": 927, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 679, + "children": [] + } + ] + }, + { + "id": 147, + "atlas_id": 159, + "ontology_id": 1, + "acronym": "LC", + "name": "Locus ceruleus", + "color_hex_triplet": "FFC395", + "graph_order": 928, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 162, + "atlas_id": 161, + "ontology_id": 1, + "acronym": "LDT", + "name": "Laterodorsal tegmental nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 929, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 604, + "atlas_id": 216, + "ontology_id": 1, + "acronym": "NI", + "name": "Nucleus incertus", + "color_hex_triplet": "FFC395", + "graph_order": 930, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 146, + "atlas_id": 442, + "ontology_id": 1, + "acronym": "PRNr", + "name": "Pontine reticular nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 931, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 238, + "atlas_id": 312, + "ontology_id": 1, + "acronym": "RPO", + "name": "Nucleus raphe pontis", + "color_hex_triplet": "FFC395", + "graph_order": 932, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 350, + "atlas_id": 326, + "ontology_id": 1, + "acronym": "SLC", + "name": "Subceruleus nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 933, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 358, + "atlas_id": 327, + "ontology_id": 1, + "acronym": "SLD", + "name": "Sublaterodorsal nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 934, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + } + ] + } + ] + }, + { + "id": 354, + "atlas_id": 185, + "ontology_id": 1, + "acronym": "MY", + "name": "Medulla", + "color_hex_triplet": "FF9BCD", + "graph_order": 935, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1065, + "children": [ + { + "id": 386, + "atlas_id": 189, + "ontology_id": 1, + "acronym": "MY-sen", + "name": "Medulla, sensory related", + "color_hex_triplet": "FFA5D2", + "graph_order": 936, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 207, + "atlas_id": 25, + "ontology_id": 1, + "acronym": "AP", + "name": "Area postrema", + "color_hex_triplet": "FFA5D2", + "graph_order": 937, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 607, + "atlas_id": 75, + "ontology_id": 1, + "acronym": "CN", + "name": "Cochlear nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 938, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 112, + "atlas_id": 862, + "ontology_id": 1, + "acronym": "CNlam", + "name": "Granular lamina of the cochlear nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 939, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 560, + "atlas_id": 918, + "ontology_id": 1, + "acronym": "CNspg", + "name": "Cochlear nucleus, subpedunclular granular region", + "color_hex_triplet": "FFA5D2", + "graph_order": 940, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 96, + "atlas_id": 860, + "ontology_id": 1, + "acronym": "DCO", + "name": "Dorsal cochlear nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 941, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 101, + "atlas_id": 861, + "ontology_id": 1, + "acronym": "VCO", + "name": "Ventral cochlear nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 942, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + } + ] + }, + { + "id": 720, + "atlas_id": 89, + "ontology_id": 1, + "acronym": "DCN", + "name": "Dorsal column nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 943, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 711, + "atlas_id": 88, + "ontology_id": 1, + "acronym": "CU", + "name": "Cuneate nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 944, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 720, + "children": [] + }, + { + "id": 1039, + "atlas_id": 129, + "ontology_id": 1, + "acronym": "GR", + "name": "Gracile nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 945, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 720, + "children": [] + } + ] + }, + { + "id": 903, + "atlas_id": 112, + "ontology_id": 1, + "acronym": "ECU", + "name": "External cuneate nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 946, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 642, + "atlas_id": 221, + "ontology_id": 1, + "acronym": "NTB", + "name": "Nucleus of the trapezoid body", + "color_hex_triplet": "FFA5D2", + "graph_order": 947, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 651, + "atlas_id": 222, + "ontology_id": 1, + "acronym": "NTS", + "name": "Nucleus of the solitary tract", + "color_hex_triplet": "FFA5D2", + "graph_order": 948, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 659, + "atlas_id": 223, + "ontology_id": 1, + "acronym": "NTSce", + "name": "Nucleus of the solitary tract, central part", + "color_hex_triplet": "FFA5D2", + "graph_order": 949, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 666, + "atlas_id": 224, + "ontology_id": 1, + "acronym": "NTSco", + "name": "Nucleus of the solitary tract, commissural part", + "color_hex_triplet": "FFA5D2", + "graph_order": 950, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 674, + "atlas_id": 225, + "ontology_id": 1, + "acronym": "NTSge", + "name": "Nucleus of the solitary tract, gelatinous part", + "color_hex_triplet": "FFA5D2", + "graph_order": 951, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 682, + "atlas_id": 226, + "ontology_id": 1, + "acronym": "NTSl", + "name": "Nucleus of the solitary tract, lateral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 952, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 691, + "atlas_id": 227, + "ontology_id": 1, + "acronym": "NTSm", + "name": "Nucleus of the solitary tract, medial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 953, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + } + ] + }, + { + "id": 429, + "atlas_id": 336, + "ontology_id": 1, + "acronym": "SPVC", + "name": "Spinal nucleus of the trigeminal, caudal part", + "color_hex_triplet": "FFA5D2", + "graph_order": 954, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 437, + "atlas_id": 337, + "ontology_id": 1, + "acronym": "SPVI", + "name": "Spinal nucleus of the trigeminal, interpolar part", + "color_hex_triplet": "FFA5D2", + "graph_order": 955, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 445, + "atlas_id": 338, + "ontology_id": 1, + "acronym": "SPVO", + "name": "Spinal nucleus of the trigeminal, oral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 956, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 77, + "atlas_id": 858, + "ontology_id": 1, + "acronym": "SPVOcdm", + "name": "Spinal nucleus of the trigeminal, oral part, caudal dorsomedial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 957, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 53, + "atlas_id": 855, + "ontology_id": 1, + "acronym": "SPVOmdmd", + "name": "Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, dorsal zone", + "color_hex_triplet": "FFA5D2", + "graph_order": 958, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 61, + "atlas_id": 856, + "ontology_id": 1, + "acronym": "SPVOmdmv", + "name": "Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, ventral zone", + "color_hex_triplet": "FFA5D2", + "graph_order": 959, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 45, + "atlas_id": 854, + "ontology_id": 1, + "acronym": "SPVOrdm", + "name": "Spinal nucleus of the trigeminal, oral part, rostral dorsomedial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 960, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 69, + "atlas_id": 857, + "ontology_id": 1, + "acronym": "SPVOvl", + "name": "Spinal nucleus of the trigeminal, oral part, ventrolateral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 961, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + } + ] + }, + { + "id": 589508451, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Pa5", + "name": "Paratrigeminal nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 962, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 789, + "atlas_id": 381, + "ontology_id": 1, + "acronym": "z", + "name": "Nucleus z", + "color_hex_triplet": "FFA5D2", + "graph_order": 963, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + } + ] + }, + { + "id": 370, + "atlas_id": 187, + "ontology_id": 1, + "acronym": "MY-mot", + "name": "Medulla, motor related", + "color_hex_triplet": "FFB3D9", + "graph_order": 964, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 653, + "atlas_id": 364, + "ontology_id": 1, + "acronym": "VI", + "name": "Abducens nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 965, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 568, + "atlas_id": 919, + "ontology_id": 1, + "acronym": "ACVI", + "name": "Accessory abducens nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 966, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 661, + "atlas_id": 365, + "ontology_id": 1, + "acronym": "VII", + "name": "Facial motor nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 967, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 576, + "atlas_id": 920, + "ontology_id": 1, + "acronym": "ACVII", + "name": "Accessory facial motor nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 968, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 640, + "atlas_id": 928, + "ontology_id": 1, + "acronym": "EV", + "name": "Efferent vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 969, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 135, + "atlas_id": 16, + "ontology_id": 1, + "acronym": "AMB", + "name": "Nucleus ambiguus", + "color_hex_triplet": "FFB3D9", + "graph_order": 970, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 939, + "atlas_id": 824, + "ontology_id": 1, + "acronym": "AMBd", + "name": "Nucleus ambiguus, dorsal division", + "color_hex_triplet": "FFB3D9", + "graph_order": 971, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 135, + "children": [] + }, + { + "id": 143, + "atlas_id": 17, + "ontology_id": 1, + "acronym": "AMBv", + "name": "Nucleus ambiguus, ventral division", + "color_hex_triplet": "FFB3D9", + "graph_order": 972, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 135, + "children": [] + } + ] + }, + { + "id": 839, + "atlas_id": 104, + "ontology_id": 1, + "acronym": "DMX", + "name": "Dorsal motor nucleus of the vagus nerve", + "color_hex_triplet": "FFB3D9", + "graph_order": 973, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 887, + "atlas_id": 110, + "ontology_id": 1, + "acronym": "ECO", + "name": "Efferent cochlear group", + "color_hex_triplet": "FFB3D9", + "graph_order": 974, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 1048, + "atlas_id": 130, + "ontology_id": 1, + "acronym": "GRN", + "name": "Gigantocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 975, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 372, + "atlas_id": 470, + "ontology_id": 1, + "acronym": "ICB", + "name": "Infracerebellar nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 976, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 83, + "atlas_id": 151, + "ontology_id": 1, + "acronym": "IO", + "name": "Inferior olivary complex", + "color_hex_triplet": "FFB3D9", + "graph_order": 977, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 136, + "atlas_id": 865, + "ontology_id": 1, + "acronym": "IRN", + "name": "Intermediate reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 978, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 106, + "atlas_id": 154, + "ontology_id": 1, + "acronym": "ISN", + "name": "Inferior salivatory nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 979, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 203, + "atlas_id": 166, + "ontology_id": 1, + "acronym": "LIN", + "name": "Linear nucleus of the medulla", + "color_hex_triplet": "FFB3D9", + "graph_order": 980, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 235, + "atlas_id": 170, + "ontology_id": 1, + "acronym": "LRN", + "name": "Lateral reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 981, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 955, + "atlas_id": 826, + "ontology_id": 1, + "acronym": "LRNm", + "name": "Lateral reticular nucleus, magnocellular part", + "color_hex_triplet": "FFB3D9", + "graph_order": 982, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 235, + "children": [] + }, + { + "id": 963, + "atlas_id": 827, + "ontology_id": 1, + "acronym": "LRNp", + "name": "Lateral reticular nucleus, parvicellular part", + "color_hex_triplet": "FFB3D9", + "graph_order": 983, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 235, + "children": [] + } + ] + }, + { + "id": 307, + "atlas_id": 179, + "ontology_id": 1, + "acronym": "MARN", + "name": "Magnocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 984, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 395, + "atlas_id": 190, + "ontology_id": 1, + "acronym": "MDRN", + "name": "Medullary reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 985, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 1098, + "atlas_id": 844, + "ontology_id": 1, + "acronym": "MDRNd", + "name": "Medullary reticular nucleus, dorsal part", + "color_hex_triplet": "FFB3D9", + "graph_order": 986, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 395, + "children": [] + }, + { + "id": 1107, + "atlas_id": 845, + "ontology_id": 1, + "acronym": "MDRNv", + "name": "Medullary reticular nucleus, ventral part", + "color_hex_triplet": "FFB3D9", + "graph_order": 987, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 395, + "children": [] + } + ] + }, + { + "id": 852, + "atlas_id": 247, + "ontology_id": 1, + "acronym": "PARN", + "name": "Parvicellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 988, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 859, + "atlas_id": 248, + "ontology_id": 1, + "acronym": "PAS", + "name": "Parasolitary nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 989, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 938, + "atlas_id": 258, + "ontology_id": 1, + "acronym": "PGRN", + "name": "Paragigantocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 990, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 970, + "atlas_id": 828, + "ontology_id": 1, + "acronym": "PGRNd", + "name": "Paragigantocellular reticular nucleus, dorsal part", + "color_hex_triplet": "FFB3D9", + "graph_order": 991, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 938, + "children": [] + }, + { + "id": 978, + "atlas_id": 829, + "ontology_id": 1, + "acronym": "PGRNl", + "name": "Paragigantocellular reticular nucleus, lateral part", + "color_hex_triplet": "FFB3D9", + "graph_order": 992, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 938, + "children": [] + } + ] + }, + { + "id": 154, + "atlas_id": 443, + "ontology_id": 1, + "acronym": "PHY", + "name": "Perihypoglossal nuclei", + "color_hex_triplet": "FFB3D9", + "graph_order": 993, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 161, + "atlas_id": 444, + "ontology_id": 1, + "acronym": "NIS", + "name": "Nucleus intercalatus", + "color_hex_triplet": "FFB3D9", + "graph_order": 994, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + }, + { + "id": 177, + "atlas_id": 446, + "ontology_id": 1, + "acronym": "NR", + "name": "Nucleus of Roller", + "color_hex_triplet": "FFB3D9", + "graph_order": 995, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + }, + { + "id": 169, + "atlas_id": 445, + "ontology_id": 1, + "acronym": "PRP", + "name": "Nucleus prepositus", + "color_hex_triplet": "FFB3D9", + "graph_order": 996, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + } + ] + }, + { + "id": 995, + "atlas_id": 265, + "ontology_id": 1, + "acronym": "PMR", + "name": "Paramedian reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 997, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 1069, + "atlas_id": 274, + "ontology_id": 1, + "acronym": "PPY", + "name": "Parapyramidal nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 998, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 185, + "atlas_id": 447, + "ontology_id": 1, + "acronym": "PPYd", + "name": "Parapyramidal nucleus, deep part", + "color_hex_triplet": "FFB3D9", + "graph_order": 999, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1069, + "children": [] + }, + { + "id": 193, + "atlas_id": 448, + "ontology_id": 1, + "acronym": "PPYs", + "name": "Parapyramidal nucleus, superficial part", + "color_hex_triplet": "FFB3D9", + "graph_order": 1000, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1069, + "children": [] + } + ] + }, + { + "id": 701, + "atlas_id": 370, + "ontology_id": 1, + "acronym": "VNC", + "name": "Vestibular nuclei", + "color_hex_triplet": "FFB3D9", + "graph_order": 1001, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 209, + "atlas_id": 450, + "ontology_id": 1, + "acronym": "LAV", + "name": "Lateral vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1002, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 202, + "atlas_id": 449, + "ontology_id": 1, + "acronym": "MV", + "name": "Medial vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1003, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 225, + "atlas_id": 452, + "ontology_id": 1, + "acronym": "SPIV", + "name": "Spinal vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1004, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 217, + "atlas_id": 451, + "ontology_id": 1, + "acronym": "SUV", + "name": "Superior vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1005, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + } + ] + }, + { + "id": 765, + "atlas_id": 378, + "ontology_id": 1, + "acronym": "x", + "name": "Nucleus x", + "color_hex_triplet": "FFB3D9", + "graph_order": 1006, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 773, + "atlas_id": 379, + "ontology_id": 1, + "acronym": "XII", + "name": "Hypoglossal nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1007, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 781, + "atlas_id": 380, + "ontology_id": 1, + "acronym": "y", + "name": "Nucleus y", + "color_hex_triplet": "FFB3D9", + "graph_order": 1008, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 76, + "atlas_id": 150, + "ontology_id": 1, + "acronym": "INV", + "name": "Interstitial nucleus of the vestibular nerve", + "color_hex_triplet": "FFB3D9", + "graph_order": 1009, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + } + ] + }, + { + "id": 379, + "atlas_id": 188, + "ontology_id": 1, + "acronym": "MY-sat", + "name": "Medulla, behavioral state related", + "color_hex_triplet": "FFC6E2", + "graph_order": 1010, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 206, + "atlas_id": 308, + "ontology_id": 1, + "acronym": "RM", + "name": "Nucleus raphe magnus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1011, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + }, + { + "id": 230, + "atlas_id": 311, + "ontology_id": 1, + "acronym": "RPA", + "name": "Nucleus raphe pallidus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1012, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + }, + { + "id": 222, + "atlas_id": 310, + "ontology_id": 1, + "acronym": "RO", + "name": "Nucleus raphe obscurus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1013, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 512, + "atlas_id": 63, + "ontology_id": 1, + "acronym": "CB", + "name": "Cerebellum", + "color_hex_triplet": "F0F080", + "graph_order": 1014, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 528, + "atlas_id": 65, + "ontology_id": 1, + "acronym": "CBX", + "name": "Cerebellar cortex", + "color_hex_triplet": "F0F080", + "graph_order": 1015, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 512, + "children": [ + { + "id": 1144, + "atlas_id": 1142, + "ontology_id": 1, + "acronym": "CBXmo", + "name": "Cerebellar cortex, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1016, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 1145, + "atlas_id": 1143, + "ontology_id": 1, + "acronym": "CBXpu", + "name": "Cerebellar cortex, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1017, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 1143, + "atlas_id": 1141, + "ontology_id": 1, + "acronym": "CBXgr", + "name": "Cerebellar cortex, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1018, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 645, + "atlas_id": 363, + "ontology_id": 1, + "acronym": "VERM", + "name": "Vermal regions", + "color_hex_triplet": "FFFC91", + "graph_order": 1019, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [ + { + "id": 912, + "atlas_id": 396, + "ontology_id": 1, + "acronym": "LING", + "name": "Lingula (I)", + "color_hex_triplet": "FFFC91", + "graph_order": 1020, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10707, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGmo", + "name": "Lingula (I), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1021, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + }, + { + "id": 10706, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGpu", + "name": "Lingula (I), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1022, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + }, + { + "id": 10705, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGgr", + "name": "Lingula (I), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1023, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + } + ] + }, + { + "id": 920, + "atlas_id": 397, + "ontology_id": 1, + "acronym": "CENT", + "name": "Central lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1024, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 976, + "atlas_id": 404, + "ontology_id": 1, + "acronym": "CENT2", + "name": "Lobule II", + "color_hex_triplet": "FFFC91", + "graph_order": 1025, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 920, + "children": [ + { + "id": 10710, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2mo", + "name": "Lobule II, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1026, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + }, + { + "id": 10709, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2pu", + "name": "Lobule II, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1027, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + }, + { + "id": 10708, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2gr", + "name": "Lobule II, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1028, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + } + ] + }, + { + "id": 984, + "atlas_id": 405, + "ontology_id": 1, + "acronym": "CENT3", + "name": "Lobule III", + "color_hex_triplet": "FFFC91", + "graph_order": 1029, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 920, + "children": [ + { + "id": 10713, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3mo", + "name": "Lobule III, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1030, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + }, + { + "id": 10712, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3pu", + "name": "Lobule III, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1031, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + }, + { + "id": 10711, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3gr", + "name": "Lobule III, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1032, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + } + ] + } + ] + }, + { + "id": 928, + "atlas_id": 398, + "ontology_id": 1, + "acronym": "CUL", + "name": "Culmen", + "color_hex_triplet": "FFFC91", + "graph_order": 1033, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 992, + "atlas_id": 406, + "ontology_id": 1, + "acronym": "CUL4", + "name": "Lobule IV", + "color_hex_triplet": "FFFC91", + "graph_order": 1034, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10716, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4mo", + "name": "Lobule IV, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1035, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + }, + { + "id": 10715, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4pu", + "name": "Lobule IV, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1036, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + }, + { + "id": 10714, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4gr", + "name": "Lobule IV, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1037, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + } + ] + }, + { + "id": 1001, + "atlas_id": 407, + "ontology_id": 1, + "acronym": "CUL5", + "name": "Lobule V", + "color_hex_triplet": "FFFC91", + "graph_order": 1038, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10719, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5mo", + "name": "Lobule V, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1039, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + }, + { + "id": 10718, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5pu", + "name": "Lobule V, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1040, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + }, + { + "id": 10717, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5gr", + "name": "Lobule V, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1041, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + } + ] + }, + { + "id": 1091, + "atlas_id": 843, + "ontology_id": 1, + "acronym": "CUL4, 5", + "name": "Lobules IV-V", + "color_hex_triplet": "FFFC91", + "graph_order": 1042, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10722, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5mo", + "name": "Lobules IV-V, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1043, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + }, + { + "id": 10721, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5pu", + "name": "Lobules IV-V, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1044, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + }, + { + "id": 10720, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5gr", + "name": "Lobules IV-V, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1045, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + } + ] + } + ] + }, + { + "id": 936, + "atlas_id": 399, + "ontology_id": 1, + "acronym": "DEC", + "name": "Declive (VI)", + "color_hex_triplet": "FFFC91", + "graph_order": 1046, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10725, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECmo", + "name": "Declive (VI), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1047, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + }, + { + "id": 10724, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECpu", + "name": "Declive (VI), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1048, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + }, + { + "id": 10723, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECgr", + "name": "Declive (VI), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1049, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + } + ] + }, + { + "id": 944, + "atlas_id": 400, + "ontology_id": 1, + "acronym": "FOTU", + "name": "Folium-tuber vermis (VII)", + "color_hex_triplet": "FFFC91", + "graph_order": 1050, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10728, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUmo", + "name": "Folium-tuber vermis (VII), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1051, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + }, + { + "id": 10727, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUpu", + "name": "Folium-tuber vermis (VII), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1052, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + }, + { + "id": 10726, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUgr", + "name": "Folium-tuber vermis (VII), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1053, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + } + ] + }, + { + "id": 951, + "atlas_id": 401, + "ontology_id": 1, + "acronym": "PYR", + "name": "Pyramus (VIII)", + "color_hex_triplet": "FFFC91", + "graph_order": 1054, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10731, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRmo", + "name": "Pyramus (VIII), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1055, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + }, + { + "id": 10730, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRpu", + "name": "Pyramus (VIII), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1056, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + }, + { + "id": 10729, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRgr", + "name": "Pyramus (VIII), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1057, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + } + ] + }, + { + "id": 957, + "atlas_id": 402, + "ontology_id": 1, + "acronym": "UVU", + "name": "Uvula (IX)", + "color_hex_triplet": "FFFC91", + "graph_order": 1058, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10734, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUmo", + "name": "Uvula (IX), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1059, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + }, + { + "id": 10733, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUpu", + "name": "Uvula (IX), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1060, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + }, + { + "id": 10732, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUgr", + "name": "Uvula (IX), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1061, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + } + ] + }, + { + "id": 968, + "atlas_id": 403, + "ontology_id": 1, + "acronym": "NOD", + "name": "Nodulus (X)", + "color_hex_triplet": "FFFC91", + "graph_order": 1062, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10737, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODmo", + "name": "Nodulus (X), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1063, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + }, + { + "id": 10736, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODpu", + "name": "Nodulus (X), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1064, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + }, + { + "id": 10735, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODgr", + "name": "Nodulus (X), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1065, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + } + ] + } + ] + }, + { + "id": 1073, + "atlas_id": 133, + "ontology_id": 1, + "acronym": "HEM", + "name": "Hemispheric regions", + "color_hex_triplet": "FFFC91", + "graph_order": 1066, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [ + { + "id": 1007, + "atlas_id": 408, + "ontology_id": 1, + "acronym": "SIM", + "name": "Simple lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1067, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10674, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMmo", + "name": "Simple lobule, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1068, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + }, + { + "id": 10673, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMpu", + "name": "Simple lobule, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1069, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + }, + { + "id": 10672, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMgr", + "name": "Simple lobule, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1070, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + } + ] + }, + { + "id": 1017, + "atlas_id": 409, + "ontology_id": 1, + "acronym": "AN", + "name": "Ansiform lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1071, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 1056, + "atlas_id": 414, + "ontology_id": 1, + "acronym": "ANcr1", + "name": "Crus 1", + "color_hex_triplet": "FFFC91", + "graph_order": 1072, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1017, + "children": [ + { + "id": 10677, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1mo", + "name": "Crus 1, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1073, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + }, + { + "id": 10676, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1pu", + "name": "Crus 1, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1074, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + }, + { + "id": 10675, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1gr", + "name": "Crus 1, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1075, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + } + ] + }, + { + "id": 1064, + "atlas_id": 415, + "ontology_id": 1, + "acronym": "ANcr2", + "name": "Crus 2", + "color_hex_triplet": "FFFC91", + "graph_order": 1076, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1017, + "children": [ + { + "id": 10680, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2mo", + "name": "Crus 2, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1077, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + }, + { + "id": 10679, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2pu", + "name": "Crus 2, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1078, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + }, + { + "id": 10678, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2gr", + "name": "Crus 2, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1079, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + } + ] + } + ] + }, + { + "id": 1025, + "atlas_id": 410, + "ontology_id": 1, + "acronym": "PRM", + "name": "Paramedian lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1080, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10683, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMmo", + "name": "Paramedian lobule, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1081, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + }, + { + "id": 10682, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMpu", + "name": "Paramedian lobule, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1082, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + }, + { + "id": 10681, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMgr", + "name": "Paramedian lobule, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1083, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + } + ] + }, + { + "id": 1033, + "atlas_id": 411, + "ontology_id": 1, + "acronym": "COPY", + "name": "Copula pyramidis", + "color_hex_triplet": "FFFC91", + "graph_order": 1084, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10686, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYmo", + "name": "Copula pyramidis, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1085, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + }, + { + "id": 10685, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYpu", + "name": "Copula pyramidis, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1086, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + }, + { + "id": 10684, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYgr", + "name": "Copula pyramidis, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1087, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + } + ] + }, + { + "id": 1041, + "atlas_id": 412, + "ontology_id": 1, + "acronym": "PFL", + "name": "Paraflocculus", + "color_hex_triplet": "FFFC91", + "graph_order": 1088, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10689, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLmo", + "name": "Paraflocculus, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1089, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + }, + { + "id": 10688, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLpu", + "name": "Paraflocculus, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1090, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + }, + { + "id": 10687, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLgr", + "name": "Paraflocculus, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1091, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + } + ] + }, + { + "id": 1049, + "atlas_id": 413, + "ontology_id": 1, + "acronym": "FL", + "name": "Flocculus", + "color_hex_triplet": "FFFC91", + "graph_order": 1092, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10692, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLmo", + "name": "Flocculus, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1093, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + }, + { + "id": 10691, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLpu", + "name": "Flocculus, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1094, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + }, + { + "id": 10690, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLgr", + "name": "Flocculus, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1095, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 519, + "atlas_id": 64, + "ontology_id": 1, + "acronym": "CBN", + "name": "Cerebellar nuclei", + "color_hex_triplet": "F0F080", + "graph_order": 1096, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 512, + "children": [ + { + "id": 989, + "atlas_id": 123, + "ontology_id": 1, + "acronym": "FN", + "name": "Fastigial nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1097, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 91, + "atlas_id": 152, + "ontology_id": 1, + "acronym": "IP", + "name": "Interposed nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1098, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 846, + "atlas_id": 105, + "ontology_id": 1, + "acronym": "DN", + "name": "Dentate nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1099, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 589508455, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VeCB", + "name": "Vestibulocerebellar nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1100, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 1009, + "atlas_id": 691, + "ontology_id": 1, + "acronym": "fiber tracts", + "name": "fiber tracts", + "color_hex_triplet": "CCCCCC", + "graph_order": 1101, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 967, + "atlas_id": 686, + "ontology_id": 1, + "acronym": "cm", + "name": "cranial nerves", + "color_hex_triplet": "CCCCCC", + "graph_order": 1102, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 885, + "atlas_id": 676, + "ontology_id": 1, + "acronym": "tn", + "name": "terminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1103, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 949, + "atlas_id": 684, + "ontology_id": 1, + "acronym": "von", + "name": "vomeronasal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1104, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 840, + "atlas_id": 670, + "ontology_id": 1, + "acronym": "In", + "name": "olfactory nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1105, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1016, + "atlas_id": 692, + "ontology_id": 1, + "acronym": "onl", + "name": "olfactory nerve layer of main olfactory bulb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1106, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [] + }, + { + "id": 21, + "atlas_id": 568, + "ontology_id": 1, + "acronym": "lotg", + "name": "lateral olfactory tract, general", + "color_hex_triplet": "CCCCCC", + "graph_order": 1107, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [ + { + "id": 665, + "atlas_id": 507, + "ontology_id": 1, + "acronym": "lot", + "name": "lateral olfactory tract, body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1108, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + }, + { + "id": 538, + "atlas_id": 491, + "ontology_id": 1, + "acronym": "lotd", + "name": "dorsal limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1109, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + }, + { + "id": 459, + "atlas_id": 481, + "ontology_id": 1, + "acronym": "aolt", + "name": "accessory olfactory tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1110, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + } + ] + }, + { + "id": 900, + "atlas_id": 536, + "ontology_id": 1, + "acronym": "aco", + "name": "anterior commissure, olfactory limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1111, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [] + } + ] + }, + { + "id": 848, + "atlas_id": 671, + "ontology_id": 1, + "acronym": "IIn", + "name": "optic nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1112, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 876, + "atlas_id": 533, + "ontology_id": 1, + "acronym": "aot", + "name": "accessory optic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1113, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 916, + "atlas_id": 538, + "ontology_id": 1, + "acronym": "bsc", + "name": "brachium of the superior colliculus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1114, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 336, + "atlas_id": 607, + "ontology_id": 1, + "acronym": "csc", + "name": "superior colliculus commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1115, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 117, + "atlas_id": 580, + "ontology_id": 1, + "acronym": "och", + "name": "optic chiasm", + "color_hex_triplet": "CCCCCC", + "graph_order": 1116, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 125, + "atlas_id": 581, + "ontology_id": 1, + "acronym": "opt", + "name": "optic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1117, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 357, + "atlas_id": 610, + "ontology_id": 1, + "acronym": "ttp", + "name": "tectothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1118, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + } + ] + }, + { + "id": 832, + "atlas_id": 669, + "ontology_id": 1, + "acronym": "IIIn", + "name": "oculomotor nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1119, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 62, + "atlas_id": 573, + "ontology_id": 1, + "acronym": "mlf", + "name": "medial longitudinal fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1120, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 832, + "children": [] + }, + { + "id": 158, + "atlas_id": 585, + "ontology_id": 1, + "acronym": "pc", + "name": "posterior commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1121, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 832, + "children": [] + } + ] + }, + { + "id": 911, + "atlas_id": 679, + "ontology_id": 1, + "acronym": "IVn", + "name": "trochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1122, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 384, + "atlas_id": 613, + "ontology_id": 1, + "acronym": "IVd", + "name": "trochlear nerve decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1123, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 911, + "children": [] + } + ] + }, + { + "id": 710, + "atlas_id": 654, + "ontology_id": 1, + "acronym": "VIn", + "name": "abducens nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1124, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 901, + "atlas_id": 678, + "ontology_id": 1, + "acronym": "Vn", + "name": "trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1125, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 93, + "atlas_id": 577, + "ontology_id": 1, + "acronym": "moV", + "name": "motor root of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1126, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 901, + "children": [] + }, + { + "id": 229, + "atlas_id": 594, + "ontology_id": 1, + "acronym": "sV", + "name": "sensory root of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1127, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 901, + "children": [ + { + "id": 705, + "atlas_id": 512, + "ontology_id": 1, + "acronym": "mtV", + "name": "midbrain tract of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1128, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 229, + "children": [] + }, + { + "id": 794, + "atlas_id": 523, + "ontology_id": 1, + "acronym": "sptV", + "name": "spinal tract of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1129, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 229, + "children": [] + } + ] + } + ] + }, + { + "id": 798, + "atlas_id": 665, + "ontology_id": 1, + "acronym": "VIIn", + "name": "facial nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1130, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1131, + "atlas_id": 565, + "ontology_id": 1, + "acronym": "iVIIn", + "name": "intermediate nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1131, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 798, + "children": [] + }, + { + "id": 1116, + "atlas_id": 563, + "ontology_id": 1, + "acronym": "gVIIn", + "name": "genu of the facial nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1132, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 798, + "children": [] + } + ] + }, + { + "id": 933, + "atlas_id": 682, + "ontology_id": 1, + "acronym": "VIIIn", + "name": "vestibulocochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1133, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1076, + "atlas_id": 558, + "ontology_id": 1, + "acronym": "cvb", + "name": "efferent cochleovestibular bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1134, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [] + }, + { + "id": 413, + "atlas_id": 617, + "ontology_id": 1, + "acronym": "vVIIIn", + "name": "vestibular nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1135, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [] + }, + { + "id": 948, + "atlas_id": 542, + "ontology_id": 1, + "acronym": "cVIIIn", + "name": "cochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1136, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [ + { + "id": 841, + "atlas_id": 529, + "ontology_id": 1, + "acronym": "tb", + "name": "trapezoid body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1137, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 641, + "atlas_id": 504, + "ontology_id": 1, + "acronym": "ias", + "name": "intermediate acoustic stria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1138, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 506, + "atlas_id": 487, + "ontology_id": 1, + "acronym": "das", + "name": "dorsal acoustic stria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1139, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 658, + "atlas_id": 506, + "ontology_id": 1, + "acronym": "ll", + "name": "lateral lemniscus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1140, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 633, + "atlas_id": 503, + "ontology_id": 1, + "acronym": "cic", + "name": "inferior colliculus commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1141, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 482, + "atlas_id": 484, + "ontology_id": 1, + "acronym": "bic", + "name": "brachium of the inferior colliculus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1142, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + } + ] + } + ] + }, + { + "id": 808, + "atlas_id": 666, + "ontology_id": 1, + "acronym": "IXn", + "name": "glossopharyngeal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1143, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 917, + "atlas_id": 680, + "ontology_id": 1, + "acronym": "Xn", + "name": "vagus nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1144, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 237, + "atlas_id": 595, + "ontology_id": 1, + "acronym": "ts", + "name": "solitary tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1145, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 917, + "children": [] + } + ] + }, + { + "id": 717, + "atlas_id": 655, + "ontology_id": 1, + "acronym": "XIn", + "name": "accessory spinal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1146, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 813, + "atlas_id": 667, + "ontology_id": 1, + "acronym": "XIIn", + "name": "hypoglossal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1147, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 925, + "atlas_id": 681, + "ontology_id": 1, + "acronym": "vrt", + "name": "ventral roots", + "color_hex_triplet": "CCCCCC", + "graph_order": 1148, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 792, + "atlas_id": 664, + "ontology_id": 1, + "acronym": "drt", + "name": "dorsal roots", + "color_hex_triplet": "CCCCCC", + "graph_order": 1149, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 932, + "atlas_id": 540, + "ontology_id": 1, + "acronym": "cett", + "name": "cervicothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1150, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 792, + "children": [ + { + "id": 570, + "atlas_id": 495, + "ontology_id": 1, + "acronym": "dl", + "name": "dorsolateral fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1151, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 522, + "atlas_id": 489, + "ontology_id": 1, + "acronym": "dcm", + "name": "dorsal commissure of the spinal cord", + "color_hex_triplet": "CCCCCC", + "graph_order": 1152, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 858, + "atlas_id": 531, + "ontology_id": 1, + "acronym": "vc", + "name": "ventral commissure of the spinal cord", + "color_hex_triplet": "CCCCCC", + "graph_order": 1153, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 586, + "atlas_id": 497, + "ontology_id": 1, + "acronym": "fpr", + "name": "fasciculus proprius", + "color_hex_triplet": "CCCCCC", + "graph_order": 1154, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 514, + "atlas_id": 488, + "ontology_id": 1, + "acronym": "dc", + "name": "dorsal column", + "color_hex_triplet": "CCCCCC", + "graph_order": 1155, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [ + { + "id": 380, + "atlas_id": 471, + "ontology_id": 1, + "acronym": "cuf", + "name": "cuneate fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1156, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + }, + { + "id": 388, + "atlas_id": 472, + "ontology_id": 1, + "acronym": "grf", + "name": "gracile fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1157, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + }, + { + "id": 396, + "atlas_id": 473, + "ontology_id": 1, + "acronym": "iaf", + "name": "internal arcuate fibers", + "color_hex_triplet": "CCCCCC", + "graph_order": 1158, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + } + ] + }, + { + "id": 697, + "atlas_id": 511, + "ontology_id": 1, + "acronym": "ml", + "name": "medial lemniscus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1159, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + } + ] + } + ] + }, + { + "id": 871, + "atlas_id": 674, + "ontology_id": 1, + "acronym": "sst", + "name": "spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1160, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 29, + "atlas_id": 569, + "ontology_id": 1, + "acronym": "sttl", + "name": "lateral spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1161, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 389, + "atlas_id": 614, + "ontology_id": 1, + "acronym": "sttv", + "name": "ventral spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1162, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 245, + "atlas_id": 596, + "ontology_id": 1, + "acronym": "scrt", + "name": "spinocervical tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1163, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 261, + "atlas_id": 598, + "ontology_id": 1, + "acronym": "sop", + "name": "spino-olivary pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1164, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 270, + "atlas_id": 599, + "ontology_id": 1, + "acronym": "srp", + "name": "spinoreticular pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1165, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 293, + "atlas_id": 602, + "ontology_id": 1, + "acronym": "svp", + "name": "spinovestibular pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1166, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 277, + "atlas_id": 600, + "ontology_id": 1, + "acronym": "stp", + "name": "spinotectal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1167, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 253, + "atlas_id": 597, + "ontology_id": 1, + "acronym": "shp", + "name": "spinohypothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1168, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 285, + "atlas_id": 601, + "ontology_id": 1, + "acronym": "step", + "name": "spinotelenchephalic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1169, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [ + { + "id": 627, + "atlas_id": 502, + "ontology_id": 1, + "acronym": "hht", + "name": "hypothalamohypophysial tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1170, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 285, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 960, + "atlas_id": 685, + "ontology_id": 1, + "acronym": "cbf", + "name": "cerebellum related fiber tracts", + "color_hex_triplet": "CCCCCC", + "graph_order": 1171, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 744, + "atlas_id": 658, + "ontology_id": 1, + "acronym": "cbc", + "name": "cerebellar commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1172, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [] + }, + { + "id": 752, + "atlas_id": 659, + "ontology_id": 1, + "acronym": "cbp", + "name": "cerebellar peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1173, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [ + { + "id": 326, + "atlas_id": 606, + "ontology_id": 1, + "acronym": "scp", + "name": "superior cerebelar peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1174, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [ + { + "id": 812, + "atlas_id": 525, + "ontology_id": 1, + "acronym": "dscp", + "name": "superior cerebellar peduncle decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1175, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [ + { + "id": 85, + "atlas_id": 859, + "ontology_id": 1, + "acronym": "sct", + "name": "spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1176, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 812, + "children": [] + } + ] + }, + { + "id": 850, + "atlas_id": 530, + "ontology_id": 1, + "acronym": "uf", + "name": "uncinate fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1177, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [] + }, + { + "id": 866, + "atlas_id": 532, + "ontology_id": 1, + "acronym": "sctv", + "name": "ventral spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1178, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [] + } + ] + }, + { + "id": 78, + "atlas_id": 575, + "ontology_id": 1, + "acronym": "mcp", + "name": "middle cerebellar peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1179, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [] + }, + { + "id": 1123, + "atlas_id": 564, + "ontology_id": 1, + "acronym": "icp", + "name": "inferior cerebellar peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1180, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [ + { + "id": 553, + "atlas_id": 493, + "ontology_id": 1, + "acronym": "sctd", + "name": "dorsal spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1181, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 499, + "atlas_id": 486, + "ontology_id": 1, + "acronym": "cct", + "name": "cuneocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1182, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 650, + "atlas_id": 505, + "ontology_id": 1, + "acronym": "jrb", + "name": "juxtarestiform body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1183, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 490, + "atlas_id": 485, + "ontology_id": 1, + "acronym": "bct", + "name": "bulbocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1184, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [ + { + "id": 404, + "atlas_id": 474, + "ontology_id": 1, + "acronym": "oct", + "name": "olivocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1185, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 490, + "children": [] + }, + { + "id": 410, + "atlas_id": 475, + "ontology_id": 1, + "acronym": "rct", + "name": "reticulocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1186, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 490, + "children": [] + } + ] + } + ] + }, + { + "id": 373, + "atlas_id": 612, + "ontology_id": 1, + "acronym": "tct", + "name": "trigeminocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1187, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [] + } + ] + }, + { + "id": 728, + "atlas_id": 656, + "ontology_id": 1, + "acronym": "arb", + "name": "arbor vitae", + "color_hex_triplet": "CCCCCC", + "graph_order": 1188, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [] + } + ] + }, + { + "id": 484682512, + "atlas_id": null, + "ontology_id": 1, + "acronym": "scwm", + "name": "supra-callosal cerebral white matter", + "color_hex_triplet": "CCCCCC", + "graph_order": 1189, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [] + }, + { + "id": 983, + "atlas_id": 688, + "ontology_id": 1, + "acronym": "lfbs", + "name": "lateral forebrain bundle system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1190, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 776, + "atlas_id": 662, + "ontology_id": 1, + "acronym": "cc", + "name": "corpus callosum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1191, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 956, + "atlas_id": 543, + "ontology_id": 1, + "acronym": "fa", + "name": "corpus callosum, anterior forceps", + "color_hex_triplet": "CCCCCC", + "graph_order": 1192, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [ + { + "id": 579, + "atlas_id": 496, + "ontology_id": 1, + "acronym": "ec", + "name": "external capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1193, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 956, + "children": [] + } + ] + }, + { + "id": 964, + "atlas_id": 544, + "ontology_id": 1, + "acronym": "ee", + "name": "corpus callosum, extreme capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1194, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 1108, + "atlas_id": 562, + "ontology_id": 1, + "acronym": "ccg", + "name": "genu of corpus callosum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1195, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 971, + "atlas_id": 545, + "ontology_id": 1, + "acronym": "fp", + "name": "corpus callosum, posterior forceps", + "color_hex_triplet": "CCCCCC", + "graph_order": 1196, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 979, + "atlas_id": 546, + "ontology_id": 1, + "acronym": "ccr", + "name": "corpus callosum, rostrum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1197, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 484682516, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ccb", + "name": "corpus callosum, body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1198, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 986, + "atlas_id": 547, + "ontology_id": 1, + "acronym": "ccs", + "name": "corpus callosum, splenium", + "color_hex_triplet": "CCCCCC", + "graph_order": 1199, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + } + ] + }, + { + "id": 784, + "atlas_id": 663, + "ontology_id": 1, + "acronym": "cst", + "name": "corticospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1200, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 6, + "atlas_id": 566, + "ontology_id": 1, + "acronym": "int", + "name": "internal capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1201, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 924, + "atlas_id": 539, + "ontology_id": 1, + "acronym": "cpd", + "name": "cerebal peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1202, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1036, + "atlas_id": 553, + "ontology_id": 1, + "acronym": "cte", + "name": "corticotectal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1203, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1012, + "atlas_id": 550, + "ontology_id": 1, + "acronym": "crt", + "name": "corticorubral tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1204, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1003, + "atlas_id": 549, + "ontology_id": 1, + "acronym": "cpt", + "name": "corticopontine tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1205, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 994, + "atlas_id": 548, + "ontology_id": 1, + "acronym": "cbt", + "name": "corticobulbar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1206, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 190, + "atlas_id": 589, + "ontology_id": 1, + "acronym": "py", + "name": "pyramid", + "color_hex_triplet": "CCCCCC", + "graph_order": 1207, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 198, + "atlas_id": 590, + "ontology_id": 1, + "acronym": "pyd", + "name": "pyramidal decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1208, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1019, + "atlas_id": 551, + "ontology_id": 1, + "acronym": "cstc", + "name": "corticospinal tract, crossed", + "color_hex_triplet": "CCCCCC", + "graph_order": 1209, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1028, + "atlas_id": 552, + "ontology_id": 1, + "acronym": "cstu", + "name": "corticospinal tract, uncrossed", + "color_hex_triplet": "CCCCCC", + "graph_order": 1210, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + } + ] + }, + { + "id": 896, + "atlas_id": 677, + "ontology_id": 1, + "acronym": "lfbst", + "name": "thalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1211, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 1092, + "atlas_id": 560, + "ontology_id": 1, + "acronym": "em", + "name": "external medullary lamina of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1212, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 14, + "atlas_id": 567, + "ontology_id": 1, + "acronym": "im", + "name": "internal medullary lamina of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1213, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 86, + "atlas_id": 576, + "ontology_id": 1, + "acronym": "mtc", + "name": "middle thalamic commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1214, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 365, + "atlas_id": 611, + "ontology_id": 1, + "acronym": "tp", + "name": "thalamic peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1215, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 484682520, + "atlas_id": null, + "ontology_id": 1, + "acronym": "or", + "name": "optic radiation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1216, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 484682524, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ar", + "name": "auditory radiation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1217, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + } + ] + } + ] + }, + { + "id": 1000, + "atlas_id": 690, + "ontology_id": 1, + "acronym": "eps", + "name": "extrapyramidal fiber systems", + "color_hex_triplet": "CCCCCC", + "graph_order": 1218, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 760, + "atlas_id": 660, + "ontology_id": 1, + "acronym": "epsc", + "name": "cerebral nuclei related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1219, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 142, + "atlas_id": 583, + "ontology_id": 1, + "acronym": "pap", + "name": "pallidothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1220, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 102, + "atlas_id": 578, + "ontology_id": 1, + "acronym": "nst", + "name": "nigrostriatal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1221, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 109, + "atlas_id": 579, + "ontology_id": 1, + "acronym": "ntt", + "name": "nigrothalamic fibers", + "color_hex_triplet": "CCCCCC", + "graph_order": 1222, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 134, + "atlas_id": 582, + "ontology_id": 1, + "acronym": "ptf", + "name": "pallidotegmental fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1223, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 309, + "atlas_id": 604, + "ontology_id": 1, + "acronym": "snp", + "name": "striatonigral pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1224, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 317, + "atlas_id": 605, + "ontology_id": 1, + "acronym": "stf", + "name": "subthalamic fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1225, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + } + ] + }, + { + "id": 877, + "atlas_id": 675, + "ontology_id": 1, + "acronym": "tsp", + "name": "tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1226, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 1051, + "atlas_id": 555, + "ontology_id": 1, + "acronym": "tspd", + "name": "direct tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1227, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + }, + { + "id": 1060, + "atlas_id": 556, + "ontology_id": 1, + "acronym": "dtd", + "name": "doral tegmental decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1228, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + }, + { + "id": 1043, + "atlas_id": 554, + "ontology_id": 1, + "acronym": "tspc", + "name": "crossed tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1229, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + } + ] + }, + { + "id": 863, + "atlas_id": 673, + "ontology_id": 1, + "acronym": "rust", + "name": "rubrospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1230, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 397, + "atlas_id": 615, + "ontology_id": 1, + "acronym": "vtd", + "name": "ventral tegmental decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1231, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 863, + "children": [] + }, + { + "id": 221, + "atlas_id": 593, + "ontology_id": 1, + "acronym": "rrt", + "name": "rubroreticular tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1232, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 863, + "children": [] + } + ] + }, + { + "id": 736, + "atlas_id": 657, + "ontology_id": 1, + "acronym": "ctb", + "name": "central tegmental bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1233, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [] + }, + { + "id": 855, + "atlas_id": 672, + "ontology_id": 1, + "acronym": "rst", + "name": "retriculospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1234, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 205, + "atlas_id": 591, + "ontology_id": 1, + "acronym": "rstl", + "name": "retriculospinal tract, lateral part", + "color_hex_triplet": "CCCCCC", + "graph_order": 1235, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 855, + "children": [] + }, + { + "id": 213, + "atlas_id": 592, + "ontology_id": 1, + "acronym": "rstm", + "name": "retriculospinal tract, medial part", + "color_hex_triplet": "CCCCCC", + "graph_order": 1236, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 855, + "children": [] + } + ] + }, + { + "id": 941, + "atlas_id": 683, + "ontology_id": 1, + "acronym": "vsp", + "name": "vestibulospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1237, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [] + } + ] + }, + { + "id": 991, + "atlas_id": 689, + "ontology_id": 1, + "acronym": "mfbs", + "name": "medial forebrain bundle system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1238, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 768, + "atlas_id": 661, + "ontology_id": 1, + "acronym": "mfbc", + "name": "cerebrum related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1239, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 991, + "children": [ + { + "id": 884, + "atlas_id": 534, + "ontology_id": 1, + "acronym": "amc", + "name": "amygdalar capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1240, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 892, + "atlas_id": 535, + "ontology_id": 1, + "acronym": "apd", + "name": "ansa peduncularis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1241, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 908, + "atlas_id": 537, + "ontology_id": 1, + "acronym": "act", + "name": "anterior commissure, temporal limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1242, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 940, + "atlas_id": 541, + "ontology_id": 1, + "acronym": "cing", + "name": "cingulum bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1243, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 1099, + "atlas_id": 561, + "ontology_id": 1, + "acronym": "fxs", + "name": "fornix system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1244, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [ + { + "id": 466, + "atlas_id": 482, + "ontology_id": 1, + "acronym": "alv", + "name": "alveus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1245, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 530, + "atlas_id": 490, + "ontology_id": 1, + "acronym": "df", + "name": "dorsal fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1246, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 603, + "atlas_id": 499, + "ontology_id": 1, + "acronym": "fi", + "name": "fimbria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1247, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 745, + "atlas_id": 517, + "ontology_id": 1, + "acronym": "fxprg", + "name": "precommissural fornix, general", + "color_hex_triplet": "CCCCCC", + "graph_order": 1248, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 420, + "atlas_id": 476, + "ontology_id": 1, + "acronym": "db", + "name": "precommissural fornix diagonal band", + "color_hex_triplet": "CCCCCC", + "graph_order": 1249, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 745, + "children": [] + } + ] + }, + { + "id": 737, + "atlas_id": 516, + "ontology_id": 1, + "acronym": "fxpo", + "name": "postcommissural fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1250, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 428, + "atlas_id": 477, + "ontology_id": 1, + "acronym": "mct", + "name": "medial corticohypothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1251, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 737, + "children": [] + }, + { + "id": 436, + "atlas_id": 478, + "ontology_id": 1, + "acronym": "fx", + "name": "columns of the fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1252, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 737, + "children": [] + } + ] + }, + { + "id": 618, + "atlas_id": 501, + "ontology_id": 1, + "acronym": "hc", + "name": "hippocampal commissures", + "color_hex_triplet": "CCCCCC", + "graph_order": 1253, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 443, + "atlas_id": 479, + "ontology_id": 1, + "acronym": "dhc", + "name": "dorsal hippocampal commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1254, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 618, + "children": [] + }, + { + "id": 449, + "atlas_id": 480, + "ontology_id": 1, + "acronym": "vhc", + "name": "ventral hippocampal commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1255, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 618, + "children": [] + } + ] + }, + { + "id": 713, + "atlas_id": 513, + "ontology_id": 1, + "acronym": "per", + "name": "perforant path", + "color_hex_triplet": "CCCCCC", + "graph_order": 1256, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 474, + "atlas_id": 483, + "ontology_id": 1, + "acronym": "ab", + "name": "angular path", + "color_hex_triplet": "CCCCCC", + "graph_order": 1257, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + } + ] + }, + { + "id": 37, + "atlas_id": 570, + "ontology_id": 1, + "acronym": "lab", + "name": "longitudinal association bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1258, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 301, + "atlas_id": 603, + "ontology_id": 1, + "acronym": "st", + "name": "stria terminalis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1259, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [ + { + "id": 484682528, + "atlas_id": null, + "ontology_id": 1, + "acronym": "stc", + "name": "commissural branch of stria terminalis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1260, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 301, + "children": [] + } + ] + } + ] + }, + { + "id": 824, + "atlas_id": 668, + "ontology_id": 1, + "acronym": "mfsbshy", + "name": "hypothalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1261, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 991, + "children": [ + { + "id": 54, + "atlas_id": 572, + "ontology_id": 1, + "acronym": "mfb", + "name": "medial forebrain bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1262, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 405, + "atlas_id": 616, + "ontology_id": 1, + "acronym": "vlt", + "name": "ventrolateral hypothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1263, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 174, + "atlas_id": 587, + "ontology_id": 1, + "acronym": "poc", + "name": "preoptic commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1264, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 349, + "atlas_id": 609, + "ontology_id": 1, + "acronym": "sup", + "name": "supraoptic commissures", + "color_hex_triplet": "CCCCCC", + "graph_order": 1265, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 817, + "atlas_id": 526, + "ontology_id": 1, + "acronym": "supa", + "name": "supraoptic commissures, anterior", + "color_hex_triplet": "CCCCCC", + "graph_order": 1266, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + }, + { + "id": 825, + "atlas_id": 527, + "ontology_id": 1, + "acronym": "supd", + "name": "supraoptic commissures, dorsal", + "color_hex_triplet": "CCCCCC", + "graph_order": 1267, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + }, + { + "id": 833, + "atlas_id": 528, + "ontology_id": 1, + "acronym": "supv", + "name": "supraoptic commissures, ventral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1268, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + } + ] + }, + { + "id": 166, + "atlas_id": 586, + "ontology_id": 1, + "acronym": "pmx", + "name": "premammillary commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1269, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 341, + "atlas_id": 608, + "ontology_id": 1, + "acronym": "smd", + "name": "supramammillary decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1270, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 182, + "atlas_id": 588, + "ontology_id": 1, + "acronym": "php", + "name": "propriohypothalamic pathways", + "color_hex_triplet": "CCCCCC", + "graph_order": 1271, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 762, + "atlas_id": 519, + "ontology_id": 1, + "acronym": "phpd", + "name": "propriohypothalamic pathways, dorsal", + "color_hex_triplet": "CCCCCC", + "graph_order": 1272, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 770, + "atlas_id": 520, + "ontology_id": 1, + "acronym": "phpl", + "name": "propriohypothalamic pathways, lateral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1273, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 779, + "atlas_id": 521, + "ontology_id": 1, + "acronym": "phpm", + "name": "propriohypothalamic pathways, medial", + "color_hex_triplet": "CCCCCC", + "graph_order": 1274, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 787, + "atlas_id": 522, + "ontology_id": 1, + "acronym": "phpv", + "name": "propriohypothalamic pathways, ventral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1275, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + } + ] + }, + { + "id": 150, + "atlas_id": 584, + "ontology_id": 1, + "acronym": "pvbh", + "name": "periventricular bundle of the hypothalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1276, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 46, + "atlas_id": 571, + "ontology_id": 1, + "acronym": "mfbsma", + "name": "mammillary related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1277, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 753, + "atlas_id": 518, + "ontology_id": 1, + "acronym": "pm", + "name": "principal mammillary tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1278, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 690, + "atlas_id": 510, + "ontology_id": 1, + "acronym": "mtt", + "name": "mammillothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1279, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 681, + "atlas_id": 509, + "ontology_id": 1, + "acronym": "mtg", + "name": "mammillotegmental tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1280, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 673, + "atlas_id": 508, + "ontology_id": 1, + "acronym": "mp", + "name": "mammillary peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1281, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + } + ] + }, + { + "id": 1068, + "atlas_id": 557, + "ontology_id": 1, + "acronym": "mfbst", + "name": "dorsal thalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1282, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 722, + "atlas_id": 514, + "ontology_id": 1, + "acronym": "pvbt", + "name": "periventricular bundle of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1283, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1068, + "children": [] + } + ] + }, + { + "id": 1083, + "atlas_id": 559, + "ontology_id": 1, + "acronym": "mfbse", + "name": "epithalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1284, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 802, + "atlas_id": 524, + "ontology_id": 1, + "acronym": "sm", + "name": "stria medullaris", + "color_hex_triplet": "CCCCCC", + "graph_order": 1285, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 595, + "atlas_id": 498, + "ontology_id": 1, + "acronym": "fr", + "name": "fasciculus retroflexus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1286, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 611, + "atlas_id": 500, + "ontology_id": 1, + "acronym": "hbc", + "name": "habenular commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1287, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 730, + "atlas_id": 515, + "ontology_id": 1, + "acronym": "PIS", + "name": "pineal stalk", + "color_hex_triplet": "CCCCCC", + "graph_order": 1288, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + } + ] + }, + { + "id": 70, + "atlas_id": 574, + "ontology_id": 1, + "acronym": "mfbsm", + "name": "midbrain related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1289, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 547, + "atlas_id": 492, + "ontology_id": 1, + "acronym": "dlf", + "name": "dorsal longitudinal fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1290, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 70, + "children": [] + }, + { + "id": 563, + "atlas_id": 494, + "ontology_id": 1, + "acronym": "dtt", + "name": "dorsal tegmental tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1291, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 70, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "id": 73, + "atlas_id": 716, + "ontology_id": 1, + "acronym": "VS", + "name": "ventricular systems", + "color_hex_triplet": "AAAAAA", + "graph_order": 1292, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 81, + "atlas_id": 717, + "ontology_id": 1, + "acronym": "VL", + "name": "lateral ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1293, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [ + { + "id": 89, + "atlas_id": 718, + "ontology_id": 1, + "acronym": "RC", + "name": "rhinocele", + "color_hex_triplet": "AAAAAA", + "graph_order": 1294, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 98, + "atlas_id": 719, + "ontology_id": 1, + "acronym": "SEZ", + "name": "subependymal zone", + "color_hex_triplet": "AAAAAA", + "graph_order": 1295, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 108, + "atlas_id": 720, + "ontology_id": 1, + "acronym": "chpl", + "name": "choroid plexus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1296, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 116, + "atlas_id": 721, + "ontology_id": 1, + "acronym": "chfl", + "name": "choroid fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1297, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + } + ] + }, + { + "id": 124, + "atlas_id": 722, + "ontology_id": 1, + "acronym": "IVF", + "name": "interventricular foramen", + "color_hex_triplet": "AAAAAA", + "graph_order": 1298, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 129, + "atlas_id": 723, + "ontology_id": 1, + "acronym": "V3", + "name": "third ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1299, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 140, + "atlas_id": 724, + "ontology_id": 1, + "acronym": "AQ", + "name": "cerebral aqueduct", + "color_hex_triplet": "AAAAAA", + "graph_order": 1300, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 145, + "atlas_id": 725, + "ontology_id": 1, + "acronym": "V4", + "name": "fourth ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1301, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [ + { + "id": 153, + "atlas_id": 726, + "ontology_id": 1, + "acronym": "V4r", + "name": "lateral recess", + "color_hex_triplet": "AAAAAA", + "graph_order": 1302, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 145, + "children": [] + } + ] + }, + { + "id": 164, + "atlas_id": 727, + "ontology_id": 1, + "acronym": "c", + "name": "central canal, spinal cord/medulla", + "color_hex_triplet": "AAAAAA", + "graph_order": 1303, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + } + ] + }, + { + "id": 1024, + "atlas_id": 693, + "ontology_id": 1, + "acronym": "grv", + "name": "grooves", + "color_hex_triplet": "AAAAAA", + "graph_order": 1304, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 1032, + "atlas_id": 694, + "ontology_id": 1, + "acronym": "grv of CTX", + "name": "grooves of the cerebral cortex", + "color_hex_triplet": "AAAAAA", + "graph_order": 1305, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [ + { + "id": 1055, + "atlas_id": 697, + "ontology_id": 1, + "acronym": "eg", + "name": "endorhinal groove", + "color_hex_triplet": "AAAAAA", + "graph_order": 1306, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1063, + "atlas_id": 698, + "ontology_id": 1, + "acronym": "hf", + "name": "hippocampal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1307, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1071, + "atlas_id": 699, + "ontology_id": 1, + "acronym": "rf", + "name": "rhinal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1308, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1078, + "atlas_id": 700, + "ontology_id": 1, + "acronym": "ri", + "name": "rhinal incisure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1309, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + } + ] + }, + { + "id": 1040, + "atlas_id": 695, + "ontology_id": 1, + "acronym": "grv of CBX", + "name": "grooves of the cerebellar cortex", + "color_hex_triplet": "AAAAAA", + "graph_order": 1310, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [ + { + "id": 1087, + "atlas_id": 701, + "ontology_id": 1, + "acronym": "pce", + "name": "precentral fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1311, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1095, + "atlas_id": 702, + "ontology_id": 1, + "acronym": "pcf", + "name": "preculminate fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1312, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1103, + "atlas_id": 703, + "ontology_id": 1, + "acronym": "pri", + "name": "primary fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1313, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1112, + "atlas_id": 704, + "ontology_id": 1, + "acronym": "psf", + "name": "posterior superior fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1314, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1119, + "atlas_id": 705, + "ontology_id": 1, + "acronym": "ppf", + "name": "prepyramidal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1315, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 3, + "atlas_id": 707, + "ontology_id": 1, + "acronym": "sec", + "name": "secondary fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1316, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 11, + "atlas_id": 708, + "ontology_id": 1, + "acronym": "plf", + "name": "posterolateral fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1317, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 18, + "atlas_id": 709, + "ontology_id": 1, + "acronym": "nf", + "name": "nodular fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1318, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 25, + "atlas_id": 710, + "ontology_id": 1, + "acronym": "sif", + "name": "simple fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1319, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 34, + "atlas_id": 711, + "ontology_id": 1, + "acronym": "icf", + "name": "intercrural fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1320, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 43, + "atlas_id": 712, + "ontology_id": 1, + "acronym": "apf", + "name": "ansoparamedian fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1321, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 49, + "atlas_id": 713, + "ontology_id": 1, + "acronym": "ipf", + "name": "intraparafloccular fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1322, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 57, + "atlas_id": 714, + "ontology_id": 1, + "acronym": "pms", + "name": "paramedian sulcus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1323, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 65, + "atlas_id": 715, + "ontology_id": 1, + "acronym": "pfs", + "name": "parafloccular sulcus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1324, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + } + ] + }, + { + "id": 624, + "atlas_id": 926, + "ontology_id": 1, + "acronym": "IPF", + "name": "Interpeduncular fossa", + "color_hex_triplet": "AAAAAA", + "graph_order": 1325, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [] + } + ] + }, + { + "id": 304325711, + "atlas_id": null, + "ontology_id": 1, + "acronym": "retina", + "name": "retina", + "color_hex_triplet": "7F2E7E", + "graph_order": 1326, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [] + } + ] + } \ No newline at end of file diff --git a/py/deep_registration.py b/py/deep_registration.py new file mode 100644 index 0000000..67a0d47 --- /dev/null +++ b/py/deep_registration.py @@ -0,0 +1,504 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.utils.data import DataLoader, Dataset +from torch.utils.data.distributed import DistributedSampler +from torch.nn.parallel import DistributedDataParallel as DDP +from torchvision import transforms +from pathlib import Path +import argparse +import numpy as np +from pytorch_msssim import SSIM +import cv2 +import os +import shutil +import wandb +import matplotlib.pyplot as plt +import os +import torch.multiprocessing as mp +import torch.distributed as dist +class AttentionBlock(nn.Module): + def __init__(self, F_g, F_l, F_int): + super(AttentionBlock, self).__init__() + self.W_g = nn.Sequential( + nn.Conv2d(F_g, F_int, kernel_size=1, stride=1, padding=0, bias=True), + nn.BatchNorm2d(F_int) + ) + + self.W_x = nn.Sequential( + nn.Conv2d(F_l, F_int, kernel_size=1, stride=1, padding=0, bias=True), + nn.BatchNorm2d(F_int) + ) + + self.psi = nn.Sequential( + nn.Conv2d(F_int, 1, kernel_size=1, stride=1, padding=0, bias=True), + nn.BatchNorm2d(1), + nn.Sigmoid() + ) + + self.relu = nn.ReLU(inplace=True) + + def forward(self, g, x): + g1 = self.W_g(g) + x1 = self.W_x(x) + psi = self.relu(g1 + x1) + psi = self.psi(psi) + return x * psi + +class BrainRegUNet(nn.Module): + def __init__(self, in_channels, out_channels): + super(BrainRegUNet, self).__init__() + + self.encoder1 = self._conv_block(in_channels, 32) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.encoder2 = self._conv_block(32, 64) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.encoder3 = self._conv_block(64, 128) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.encoder4 = self._conv_block(128, 256) + self.pool4 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.bottleneck = self._conv_block(256, 512) + + self.upconv4 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2) + self.att4 = AttentionBlock(F_g=256, F_l=256, F_int=128) + self.decoder4 = self._conv_block(512, 256) + + self.upconv3 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2) + self.att3 = AttentionBlock(F_g=128, F_l=128, F_int=64) + self.decoder3 = self._conv_block(256, 128) + + self.upconv2 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2) + self.att2 = AttentionBlock(F_g=64, F_l=64, F_int=32) + self.decoder2 = self._conv_block(128, 64) + + self.upconv1 = nn.ConvTranspose2d(64, 32, kernel_size=2, stride=2) + self.att1 = AttentionBlock(F_g=32, F_l=32, F_int=16) + self.decoder1 = self._conv_block(64, 32) + + self.conv = nn.Conv2d(32, out_channels, kernel_size=1) + + def forward(self, x): + enc1 = self.encoder1(x) + enc2 = self.encoder2(self.pool1(enc1)) + enc3 = self.encoder3(self.pool2(enc2)) + enc4 = self.encoder4(self.pool3(enc3)) + bottleneck = self.bottleneck(self.pool4(enc4)) + + dec4 = self.upconv4(bottleneck) + enc4 = self.crop_and_concat(enc4, dec4) + att4 = self.att4(dec4, enc4) + dec4 = torch.cat((att4, dec4), dim=1) + dec4 = self.decoder4(dec4) + + dec3 = self.upconv3(dec4) + enc3 = self.crop_and_concat(enc3, dec3) + att3 = self.att3(dec3, enc3) + dec3 = torch.cat((att3, dec3), dim=1) + dec3 = self.decoder3(dec3) + + dec2 = self.upconv2(dec3) + enc2 = self.crop_and_concat(enc2, dec2) + att2 = self.att2(dec2, enc2) + dec2 = torch.cat((att2, dec2), dim=1) + dec2 = self.decoder2(dec2) + + dec1 = self.upconv1(dec2) + enc1 = self.crop_and_concat(enc1, dec1) + att1 = self.att1(dec1, enc1) + dec1 = torch.cat((att1, dec1), dim=1) + dec1 = self.decoder1(dec1) + + return self.conv(dec1) + + def _conv_block(self, in_channels, out_channels): + return nn.Sequential( + nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1), + nn.BatchNorm2d(out_channels), + nn.ReLU(inplace=True), + nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1), + nn.BatchNorm2d(out_channels), + nn.ReLU(inplace=True) + ) + + def crop_and_concat(self, upsampled, bypass): + crop_size = (bypass.size()[2] - upsampled.size()[2]) // 2 + bypass = F.pad(bypass, (-crop_size, -crop_size, -crop_size, -crop_size)) + return bypass + +class SSIM_Loss(SSIM): + def forward(self, img1, img2): + return 100*(1 - super(SSIM_Loss, self).forward(img1, img2)) + +def smoothness_loss(flow): + dy = torch.abs(flow[:, :, 1:, :] - flow[:, :, :-1, :]) + dx = torch.abs(flow[:, :, :, 1:] - flow[:, :, :, :-1]) + return torch.mean(dx) + torch.mean(dy) + +def create_grid(batch_size, shape): + N, H, W = batch_size, shape[0], shape[1] + tensors = [torch.linspace(-1, 1, s) for s in [H, W]] + grid = torch.stack(torch.meshgrid(*tensors), dim=-1) + grid = grid.unsqueeze(0).expand(N, -1, -1, -1) + return grid + +class PairedDataset(Dataset): + def __init__(self, originals, targets, transform=None, target_transform=None, original_transform=None): + self.originals = originals + self.targets = targets + + # Ensure the same number of images + assert len(self.originals) == len(self.targets) + + self.transform = transform + self.target_transform = target_transform + self.original_transform = original_transform + + def sobel_edge_detection(self, image): + sobelx = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5) + sobely = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5) + sobel_combined = np.sqrt(sobelx**2 + sobely**2) + sobel_combined = cv2.normalize(sobel_combined, None, 0, 255, cv2.NORM_MINMAX) + return sobel_combined.astype(np.uint8) + + def __len__(self): + return len(self.originals) + + def __getitem__(self, idx): + original = self.originals[idx] + target = self.targets[idx] + + original = cv2.imread(str(original), cv2.IMREAD_GRAYSCALE) + target = cv2.imread(str(target), cv2.IMREAD_GRAYSCALE) + + original = self.sobel_edge_detection(original) + target = self.sobel_edge_detection(target) + + if self.transform: + original = self.transform(original) + target = self.transform(target) + + if self.target_transform: + target = self.target_transform(target) + + + if self.original_transform: + original = self.original_transform(original) + + return original, target + +def display_images(original, target, warped): + original = original.squeeze().cpu().numpy() + warped = warped.squeeze().cpu().detach().numpy() + target = target.squeeze().cpu().numpy() + fig, axes = plt.subplots(1, 3, figsize=(12, 6)) + axes[0].imshow(original, cmap='gray') + axes[0].set_title('Original Image') + axes[1].imshow(warped, cmap='gray') + axes[1].set_title('Warped Image') + axes[2].imshow(target, cmap='gray') + axes[2].set_title('Target Image') + plt.show() + +def setup(rank, world_size): + os.environ['MASTER_ADDR'] = 'localhost' + os.environ['MASTER_PORT'] = '12355' + if os.name == 'nt': + backend = 'gloo' + else: + backend = 'nccl' + dist.init_process_group(backend, rank=rank, world_size=world_size) + +def cleanup(): + dist.destroy_process_group() + +def train(rank, world_size, args): + setup(rank, world_size) + + if rank == 0: + wandb.init(project="deep_registration") + + originals_path = Path(args.originals_path).expanduser() + targets_path = Path(args.targets_path).expanduser() + + originals = sorted(originals_path.glob("*.png")) + targets = sorted(targets_path.glob("*.png")) + + transform = transforms.Compose( + [ + transforms.ToTensor(), + ] + ) + + original_transform = transforms.Compose( + [ + transforms.RandomRotation(30), + ] + ) + + def get_run_count(directory): + runs = [int(x.stem.split('run')[1]) for x in Path(directory).iterdir() if x.stem.startswith('run')] + return max(runs) + 1 if runs else 0 + + def create_run_folder(directory): + run_count = get_run_count(directory) + run_path = Path(directory) / f'run{run_count}' + run_path.mkdir(parents=True, exist_ok=True) + return run_path + + if rank == 0: + if os.path.exists('/workspace'): + run_path = create_run_folder('/workspace') + + dataset = PairedDataset(originals, targets, transform=transform, original_transform=original_transform) + # limit dataset to 1000 images for quick testing on local + if world_size == 1: + dataset = torch.utils.data.Subset(dataset, range(1000)) + + sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank) + dataloader = DataLoader(dataset, batch_size=args.batch_size, sampler=sampler, num_workers=4, pin_memory=True) + + model = BrainRegUNet(in_channels=2, out_channels=2).to(rank) + model = DDP(model, device_ids=[rank], find_unused_parameters=False) + + optimizer = torch.optim.AdamW(model.parameters(), lr=args.lr) + ssim_loss = SSIM_Loss(data_range=1.0, size_average=True, channel=1).to(rank) + + best_loss = float("inf") + for epoch in range(args.epochs): + model.train() + train_loss = 0.0 + num_samples = 0 + sampler.set_epoch(epoch) + for batch, (original, target) in enumerate(dataloader): + original = original.to(rank) + target = target.to(rank) + + input_pair = torch.cat([original, target], dim=1) # Concatenate along channel dimension + deformation_field = model(input_pair) + batch_size = original.size(0) + num_samples += batch_size + grid = create_grid(batch_size, original.shape[2:]).to(rank) + warped_grid = grid + deformation_field.permute(0, 2, 3, 1) + warped_original = F.grid_sample(original, warped_grid, align_corners=True) + + # Compute loss + similarity_loss = ssim_loss(warped_original, target) + smooth_loss = smoothness_loss(deformation_field) + loss = similarity_loss + smooth_loss + + optimizer.zero_grad() + loss.backward() + optimizer.step() + + train_loss += loss.item() * batch_size + if rank == 0: + print(f"Epoch: {epoch}, Batch: {batch + 1} / {len(dataloader)}, Loss: {train_loss / num_samples:.4f}") + + epoch_loss = train_loss / num_samples + # save current model + if rank == 0: + torch.save(model.state_dict(), 'last_brain_reg_net.pt') + if os.path.exists('/workspace'): + shutil.copy('last_brain_reg_net.pt', run_path / 'last_brain_reg_net.pt') + + if epoch_loss < best_loss: + best_loss = epoch_loss + if rank == 0: # Only save on rank 0 to avoid overwriting + torch.save(model.module.state_dict(), 'best_brain_reg_net.pt') + if os.path.exists('/workspace'): + shutil.copy('best_brain_reg_net.pt', run_path / 'best_brain_reg_net.pt') + # display_images(original[0], target[0], warped_original[0]) + + # Log loss + if rank == 0: + wandb.log({"loss": epoch_loss}) + + cleanup() + +def remove_module_prefix(state_dict): + """Remove 'module.' prefix from state_dict keys.""" + new_state_dict = {} + for k, v in state_dict.items(): + if k.startswith("module."): + new_state_dict[k[len("module."):]] = v + else: + new_state_dict[k] = v + return new_state_dict + +def fine_tune_model(args): + originals_path = args.originals_path + targets_path = args.targets_path + batch_size = args.batch_size + lr = args.lr + epochs = args.epochs + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + model = BrainRegUNet(in_channels=2, out_channels=2).to(device) + # load state dict sensitve to module + model.load_state_dict(remove_module_prefix(torch.load('weights_brain_reg_net.pt'))) + # Load real-world data + originals_path = Path(originals_path).expanduser() + targets_path = Path(targets_path).expanduser() + + originals = sorted(originals_path.glob("*.png")) + targets = sorted(targets_path.glob("*.png")) + + transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), # Resize to match network input size + transforms.ToTensor() + ]) + + target_transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.RandomRotation(10), + transforms.ColorJitter(0.25, 0.25,), # Add color jitter to match network + transforms.ToTensor() + ]) + + # Create dataset and dataloader + full_dataset = PairedDataset(originals, targets, transform=transform, target_transform=target_transform) + # Select a subset of real-world data for fine-tuning + dataloader = DataLoader(full_dataset, batch_size=batch_size, shuffle=True, num_workers=4, pin_memory=True) + + # Freeze all layers except the last few + for param in model.parameters(): + param.requires_grad = False + + unfreeze = [ + model.conv, + model.decoder1, + model.decoder2, + model.decoder3, + model.decoder4, + model.att1, + model.att2, + model.att3, + model.att4, + model.upconv1, + model.upconv2, + model.upconv3, + model.upconv4 + ] + + for layer in unfreeze: + for param in layer.parameters(): + param.requires_grad = True + + + + optimizer = torch.optim.AdamW(filter(lambda p: p.requires_grad, model.parameters()), lr=lr) + ssim_loss = SSIM_Loss(data_range=1.0, size_average=True, channel=1).to(device) + + model.train() + + best_loss = float("inf") + patience_step = 0 + last_losses = [] + for epoch in range(epochs): + running_loss = 0.0 + for original, target in dataloader: + original = original.to(device) + target = target.to(device) + input_pair = torch.cat([original, target], dim=1) + + deformation_field = model(input_pair) + grid = create_grid(original.size(0), original.shape[2:]).to(device) + warped_grid = grid + deformation_field.permute(0, 2, 3, 1) + warped_original = F.grid_sample(original, warped_grid, align_corners=True) + + similarity_loss = ssim_loss(warped_original, target) + smooth_loss = smoothness_loss(deformation_field) + loss = similarity_loss + smooth_loss + + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() * original.size(0) + + epoch_loss = running_loss / len(dataloader.dataset) + print(f'Epoch [{epoch + 1}/{epochs}], Loss: {epoch_loss:.4f}') + + if epoch_loss < best_loss: + best_loss = epoch_loss + torch.save(model.state_dict(), 'fine_tuned_brain_reg_net.pt') + + # Early stopping + last_losses.append(epoch_loss) + num_losses_to_track = 10 + if len(last_losses) > num_losses_to_track: + last_losses = last_losses[-num_losses_to_track:] + if len(last_losses) >= num_losses_to_track: + losses_decreasing = all(loss < last_losses[i] for i, loss in enumerate(last_losses[:-1])) + if losses_decreasing: + patience_step += 1 + if patience_step >= 20: + print("Early stopping!") + break + else: + patience_step = 0 + + return model + +def test(args): + originals_path = Path(args.originals_path).expanduser() + targets_path = Path(args.targets_path).expanduser() + originals = sorted(originals_path.glob("*.png")) + targets = sorted(targets_path.glob("*.png")) + + transform = transforms.Compose( + [ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.ToTensor(), + ] + ) + + dataset = PairedDataset(originals, targets, transform=transform) + dataloader = DataLoader(dataset, batch_size=args.batch_size, pin_memory=True) + + model = BrainRegUNet(in_channels=2, out_channels=2).to('cuda') + ssim_loss = SSIM_Loss(data_range=1.0, size_average=True, channel=1).to('cuda') + # load state dict sensitve to module + model.load_state_dict(remove_module_prefix(torch.load('weights_brain_reg_net.pt'))) + model.eval() + + with torch.no_grad(): + for original, target in dataloader: + original = original.to('cuda') + target = target.to('cuda') + + input_pair = torch.cat([original, target], dim=1) # Concatenate along channel dimension + deformation_field = model(input_pair) + + batch_size = original.size(0) + grid = create_grid(batch_size, original.shape[2:]).to('cuda') + warped_grid = grid + deformation_field.permute(0, 2, 3, 1) + warped_original = F.grid_sample(original, warped_grid, align_corners=True) + + for i in range(batch_size): + # get the ssim loss + similarity_loss = ssim_loss(warped_original[i].unsqueeze(0), target[i].unsqueeze(0)) + print(f"SSIM Loss: {similarity_loss:.4f}") + display_images(original[i], target[i], warped_original[i]) + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--epochs", type=int, default=100) + parser.add_argument("--batch_size", type=int, default=64) + parser.add_argument("--lr", type=float, default=0.01) + parser.add_argument("--weight_decay", type=float, default=0.0001) + parser.add_argument("originals_path", type=str) + parser.add_argument("targets_path", type=str) + parser.add_argument("--world_size", type=int, default=1) + args = parser.parse_args() + + # fine_tune_model(args) + # test(args) + world_size = args.world_size + mp.spawn(train, args=(world_size, args), nprocs=world_size, join=True) diff --git a/py/demons.py b/py/demons.py index 1ad6622..2be0e66 100644 --- a/py/demons.py +++ b/py/demons.py @@ -3,7 +3,7 @@ import pickle import matplotlib.pyplot as plt import cv2 -from skimage.restoration import rolling_ball +from skimage.filters import sobel, gaussian, difference_of_gaussians # Check number of cores available import multiprocessing @@ -12,21 +12,21 @@ sitk.ProcessObject_SetGlobalDefaultNumberOfThreads(multiprocessing.cpu_count() - 2) -def match_histograms(fixed, moving): +def match_histograms(to_match, match_to): """ - Match the moving histogram to the fixed using sitk + Match the to_match histogram to the match_to using sitk Args: - fixed (sitk.Image): The fixed image. - moving (sitk.Image): The moving image. + to_match (sitk.Image): The image to be matched. + match_to (sitk.Image): The image to be matched to. Returns: - sitk.Image: The matched moving image. + sitk.Image: The matched image. """ # make sure fixed and moving are sitk images matcher = sitk.HistogramMatchingImageFilter() matcher.SetNumberOfHistogramLevels(1024) matcher.SetNumberOfMatchPoints(10) matcher.ThresholdAtMeanIntensityOn() - return matcher.Execute(moving, fixed) + return matcher.Execute(to_match, match_to) # DEBUG: Quiver plot, uncomment to see plots of each transformation @@ -61,58 +61,77 @@ def match_histograms(fixed, moving): # plt.axis("off") # plt.show() +def preprocess_image(image): + """ + Preprocess the image to enhance features. + """ + # Convert SimpleITK image to numpy array + image_array = sitk.GetArrayFromImage(sitk.Cast(image, sitk.sitkUInt8)) + blurred = cv2.GaussianBlur(image_array, (5, 5), 2) + edges = sobel(blurred) + # normalize + edges = (edges - np.min(edges)) / (np.max(edges) - np.min(edges)) + edges = edges.astype(np.float32) + edges = sitk.GetImageFromArray(edges) + + return edges + def multimodal_registration(fixed, moving): - # Cast - fixed = sitk.Cast(fixed, sitk.sitkFloat32) - moving = sitk.Cast(moving, sitk.sitkFloat32) + fixed = preprocess_image(fixed) + moving = preprocess_image(moving) - # Affine + # Affine transformation initialTx = sitk.CenteredTransformInitializer( fixed, moving, sitk.AffineTransform(fixed.GetDimension()) ) + # Set up the image registration method for the affine transformation R = sitk.ImageRegistrationMethod() - R.SetMetricAsMattesMutualInformation() + R.SetMetricAsMattesMutualInformation(numberOfHistogramBins=50) R.SetOptimizerAsGradientDescent( learningRate=0.01, - numberOfIterations=300, - convergenceMinimumValue=1e-8, - convergenceWindowSize=20, + numberOfIterations=200, + convergenceMinimumValue=1e-12, + convergenceWindowSize=10, ) R.SetOptimizerScalesFromPhysicalShift() - R.SetShrinkFactorsPerLevel(shrinkFactors=[4, 2, 1]) - R.SetSmoothingSigmasPerLevel(smoothingSigmas=[3, 2, 0]) + R.SetShrinkFactorsPerLevel(shrinkFactors=[6, 4, 2, 1]) + R.SetSmoothingSigmasPerLevel(smoothingSigmas=[2, 2, 1, 0]) R.SetInitialTransform(initialTx) R.SetInterpolator(sitk.sitkLinear) outTx1 = R.Execute(fixed, moving) - # Resample the moving image using the initial transformation + # Resample the moving image using the affine transformation resampled_moving = sitk.Resample( - moving, fixed, outTx1, sitk.sitkLinear, 0.0, sitk.sitkFloat32 + moving, fixed, outTx1, sitk.sitkLinear, 0.0, moving.GetPixelID() ) - # B-spline - transformDomainMeshSize = [4] * fixed.GetDimension() + + # B-spline transformation + transformDomainMeshSize = [5] * fixed.GetDimension() tx = sitk.BSplineTransformInitializer(fixed, transformDomainMeshSize) - R.SetMetricAsANTSNeighborhoodCorrelation(16) - R.SetOptimizerScalesFromPhysicalShift() R.SetInitialTransform(tx, inPlace=False) + R.SetMetricAsMattesMutualInformation(numberOfHistogramBins=100) # Metric reset for B-spline + R.SetShrinkFactorsPerLevel(shrinkFactors=[4, 2, 1]) + R.SetSmoothingSigmasPerLevel(smoothingSigmas=[2, 1, 0]) R.SetOptimizerAsGradientDescent( - learningRate=0.01, - numberOfIterations=300, - convergenceMinimumValue=1e-8, + learningRate=0.0001, + numberOfIterations=75, + convergenceMinimumValue=1e-12, convergenceWindowSize=20, ) + R.SetOptimizerScalesFromPhysicalShift() + outTx2 = R.Execute(fixed, resampled_moving) # Combine the transformations: Affine followed by B-spline. - composite_transform = sitk.CompositeTransform(outTx1) + composite_transform = sitk.CompositeTransform(fixed.GetDimension()) + composite_transform.AddTransform(outTx1) composite_transform.AddTransform(outTx2) return composite_transform - def resize_image_to_width(image, target_width): """ Resize an image to a target width while maintaining the aspect ratio. @@ -210,12 +229,14 @@ def register_to_atlas(tissue, section, label, structure_map_path): with open(structure_map_path, "rb") as f: structure_map = pickle.load(f) - fixed = sitk.GetImageFromArray(tissue, isVector=False) - moving = sitk.GetImageFromArray(section, isVector=False) + tissue_resized = cv2.resize(tissue, (360, 360)) + section_resized = cv2.resize(section, (360, 360)) + label = resize_image_nearest_neighbor(label, (360, 360)) + fixed = sitk.GetImageFromArray(tissue_resized, isVector=False) + moving = sitk.GetImageFromArray(section_resized, isVector=False) label = sitk.GetImageFromArray(label, isVector=False) - # resize fixed to match moving - moving = match_histograms(fixed, moving) + fixed = match_histograms(fixed, moving) tx = multimodal_registration(fixed, moving) resampler = sitk.ResampleImageFilter() @@ -240,8 +261,16 @@ def register_to_atlas(tissue, section, label, structure_map_path): ] except: pass - + + # conver color label to cv2 + color_label = cv2.cvtColor(color_label, cv2.COLOR_RGB2BGR) resampled_label = sitk.GetArrayFromImage(resampled_label) resampled_atlas = sitk.GetArrayFromImage(resampled_atlas) + # resize atlas back to original size + resampled_atlas = cv2.resize(resampled_atlas, tissue.shape[:2][::-1]) + color_label = cv2.resize(color_label, tissue.shape[:2][::-1]) + # convert color label back to rgb + color_label = cv2.cvtColor(color_label, cv2.COLOR_BGR2RGB) + resampled_label = resize_image_nearest_neighbor(resampled_label, tissue.shape[:2][::-1]) return resampled_label, resampled_atlas, color_label diff --git a/py/map.py b/py/map.py index 99f29d6..38fcc85 100644 --- a/py/map.py +++ b/py/map.py @@ -3,7 +3,7 @@ import cv2 import pickle from pathlib import Path -from demons import register_to_atlas, match_histograms +from demons import register_to_atlas from slice_atlas import slice_3d_volume, add_outlines, mask_slice_by_region from model import TissuePredictor import nrrd @@ -27,7 +27,7 @@ QWidget, QMainWindow, ) - +from segment_anything import SamPredictor, sam_model_registry from qtpy import QtCore, QtGui from qtpy.QtCore import QTimer from adjust import numpy_array_to_qimage @@ -201,6 +201,7 @@ def __init__( self.region = region self.hemisphere = hemisphere self.image = None + self.sam_image = None self.label = None self.mask = None self.eraser_window = None @@ -275,6 +276,7 @@ class AlignmentController: input_path (str): path to input images output_path (str): path to output alignments model_path (str): path to tissue predictor model + sam_path (str): path to SAM model spacing (int): the spacing between sections in microns structures_path (str): path to structures file """ @@ -286,6 +288,7 @@ def __init__( output_path, structures_path, model_path, + sam_path, spacing=None, is_whole=True, use_legacy=False, @@ -295,6 +298,7 @@ def __init__( self.output_path = output_path self.structures_path = structures_path self.model_path = model_path + self.sam_path = Path(sam_path).expanduser() self.spacing = spacing self.is_whole = is_whole self.use_legacy = use_legacy @@ -463,6 +467,7 @@ def __init__( ) print("Awaiting fine tuning...", flush=True) + self.start_viewer() def scan_input(self): @@ -596,6 +601,7 @@ def sobel(image): average_x = np.mean(x_angles) average_y = np.mean(y_angles) + if self.num_slices > 1: delta_pos = np.mean(np.diff(positions)) else: @@ -835,6 +841,68 @@ def previous_section(self): self.adjust_positions() self.update_display() + + def isolate_section(self, sample): + """ + Use SAM to allow the user to isolate each section in the image + Args: + sample: image to isolate (gray scale, uint8) + """ + + # Load SAM model + sam = sam_model_registry["vit_b"](checkpoint=self.sam_path) + + # Check for CUDA or MPS and move the model to the appropriate device + if torch.cuda.is_available(): + sam = sam.to(device="cuda") + elif torch.backends.mps.is_available(): + sam = sam.to(device="mps") + + # Set the image for SAM + predictor = SamPredictor(sam) + sample_image = cv2.cvtColor(sample.copy(), cv2.COLOR_GRAY2BGR) + predictor.set_image(sample_image) + + # Prepare for point selection + points = [[sample.shape[1] // 2, sample.shape[0] // 2]] + + # def get_point(event, x, y, flags, param): + # if event == cv2.EVENT_LBUTTONDOWN: + # if len(points) < 3: # Limit to 3 points + # points.append([x, y]) + # cv2.circle(sample_image, (x, y), 3, (0, 0, 255), -1) + # cv2.imshow(f"Point Selector", sample_image) + + # # Create a window to display the image and set the mouse callback + # cv2.namedWindow("Section Isolation") + # cv2.setMouseCallback("Section Isolation", get_point) + # cv2.imshow("Section Isolation", sample_image) + # cv2.waitKey(0) + # cv2.destroyWindow("Section Isolation") + + if len(points) > 0: + # Convert points to numpy array + points_np = np.array(points) + + # Generate mask using SAM + masks, _, _ = predictor.predict(points_np, np.array([1] * len(points_np))) + + # Display the generated mask for confirmation + mask = masks[0] # Assuming the first mask is the most relevant + return (sample * mask.astype(np.uint8)) + # mask_display = mask.astype(np.uint8) * 255 + # # convert to color + # mask_display = cv2.applyColorMap(mask_display, cv2.COLORMAP_JET) + # composite = cv2.addWeighted(sample_image, 0.5, mask_display, 0.5, 0) + # cv2.imshow("Generated Mask (Press 'y' to confirm 'n' to cancel)", composite) + # key = cv2.waitKey(0) + # if key == ord('y'): # User confirms the mask + # cv2.destroyAllWindows() + # return sample * mask.astype(np.uint8) + # elif key == ord('n'): # User cancels the mask + # cv2.destroyAllWindows() + # self.isolate_section(sample) + def finish(self): """Finish alignment""" # disconnect signals @@ -862,6 +930,9 @@ def finish(self): cv2.IMREAD_GRAYSCALE, ) + # isolate + sample = self.isolate_section(sample) + if current_slice.region != "A": masked_atlas, masked_annotation = mask_slice_by_region( current_slice.image, @@ -872,6 +943,8 @@ def finish(self): current_slice.image = masked_atlas current_slice.label = masked_annotation + + warped_labels, warped_atlas, color_label = current_slice.get_registered( sample, ) @@ -935,7 +1008,7 @@ def start_viewer(self): "-i", "--input", help="input directory, only use if graphical false", default="" ) parser.add_argument("-m", "--model", default="../models/predictor_encoder.pt") - parser.add_argument("-e", "--embeds", default="atlasEmbeddings.pkl") + parser.add_argument("-s", "--sam", default="~/.belljar/models/sam_vit_b.pth") parser.add_argument("-n", "--nrrd", help="path to nrrd files", default="") parser.add_argument("-w", "--whole", default=False) parser.add_argument( @@ -946,12 +1019,13 @@ def start_viewer(self): args = parser.parse_args() align_controller = AlignmentController( - args.nrrd.strip(), - args.input.strip(), - args.output.strip(), - args.map.strip(), - args.model.strip(), - args.spacing if args.spacing else None, - eval(args.whole), + nrrd_path=args.nrrd.strip(), + input_path=args.input.strip(), + output_path=args.output.strip(), + structures_path=args.map.strip(), + model_path=args.model.strip(), + sam_path=args.sam.strip(), + spacing=args.spacing if args.spacing else None, + is_whole=eval(args.whole), use_legacy=eval(args.legacy), ) diff --git a/py/requirements.txt b/py/requirements.txt index 7846aa0..b99669d 100644 --- a/py/requirements.txt +++ b/py/requirements.txt @@ -15,4 +15,8 @@ ultralytics sahi pyqt6 napari -SimpleITK \ No newline at end of file +SimpleITK +wandb +pytorch-msssim +timm +segment-anything-py \ No newline at end of file diff --git a/py/slice_atlas.py b/py/slice_atlas.py index 5906a52..f329b89 100644 --- a/py/slice_atlas.py +++ b/py/slice_atlas.py @@ -8,40 +8,9 @@ import json from uuid import uuid4 from demons import resize_image_nearest_neighbor - - -def slice_3d_volume(volume, z_position, x_angle, y_angle): - """ - Obtain a slice at a certain point in a 3D volume at an arbitrary angle. - - Args: - volume (numpy.ndarray): 3D numpy array. - z_position (int): Position along the z-axis for the slice. - x_angle (float): Angle in degrees to tilt in the x axis. - y_angle (float): Angle in degrees to tilt in the y axis. - - Returns: - numpy.ndarray: 2D sliced array. - """ - - # Convert angles to radians - x_angle_rad = np.deg2rad(x_angle) - y_angle_rad = np.deg2rad(y_angle) - - # Create a coordinate grid - x, y = np.meshgrid(np.arange(volume.shape[2]), np.arange(volume.shape[1])) - - # Adjust z-position based on tilt angles - # Ensure data type is float to handle decimal computations - z = (z_position + x * np.tan(x_angle_rad) + y * np.tan(y_angle_rad)).astype( - np.float32 - ) - coords = np.array([z, y, x]) - - # Extract slice using nearest-neighbor interpolation - slice_2d = map_coordinates(volume, coords, order=0) - - return slice_2d +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +import threading def make_angled_data(samples, atlas): @@ -100,6 +69,41 @@ def make_angled_data(samples, atlas): pickle.dump(metadata, open(output_path / "metadata.pkl", "wb")) + +def slice_3d_volume(volume, z_position, x_angle, y_angle): + """ + Obtain a slice at a certain point in a 3D volume at an arbitrary angle. + + Args: + volume (numpy.ndarray): 3D numpy array. + z_position (int): Position along the z-axis for the slice. + x_angle (float): Angle in degrees to tilt in the x axis. + y_angle (float): Angle in degrees to tilt in the y axis. + + Returns: + numpy.ndarray: 2D sliced array. + """ + + # Convert angles to radians + x_angle_rad = np.deg2rad(x_angle) + y_angle_rad = np.deg2rad(y_angle) + + # Create a coordinate grid + x, y = np.meshgrid(np.arange(volume.shape[2]), np.arange(volume.shape[1])) + + # Adjust z-position based on tilt angles + # Ensure data type is float to handle decimal computations + z = (z_position + x * np.tan(x_angle_rad) + y * np.tan(y_angle_rad)).astype( + np.float32 + ) + coords = np.array([z, y, x]) + + # Extract slice using nearest-neighbor interpolation + slice_2d = map_coordinates(volume, coords, order=0) + + return slice_2d + + def is_transform_in_bounds(image, transform_matrix): height, width = image.shape[:2] corners = np.array([[0, 0, 1], [width, 0, 1], [width, height, 1], [0, height, 1]]) @@ -113,76 +117,231 @@ def is_transform_in_bounds(image, transform_matrix): return min_x >= 0 and max_x <= width and min_y >= 0 and max_y <= height -def create_synthetic_experiment(name, num_samples, atlas, annotation): - """ - Make a synthetic experiment with a given number of samples. +def adjust_brightness_contrast(image, brightness=0, contrast=0): + if brightness != 0: + if brightness > 0: + shadow = brightness + highlight = 255 + else: + shadow = 0 + highlight = 255 + brightness + alpha_b = (highlight - shadow) / 255 + gamma_b = shadow + image = cv2.addWeighted(image, alpha_b, image, 0, gamma_b) + + if contrast != 0: + f = 131 * (contrast + 127) / (127 * (131 - contrast)) + alpha_c = f + gamma_c = 127 * (1 - f) + image = cv2.addWeighted(image, alpha_c, image, 0, gamma_c) + + return image + + +def generate_sample( + i, num_samples, atlas, annotation, experiment_path, metadata_file, ttrs, lock +): + start_time = time.time() + x_angle, y_angle = np.random.uniform(-15, 15, 2) + z_position = np.random.randint(200, 1200) + sample = slice_3d_volume(atlas, z_position, x_angle, y_angle) + sample_annotation = slice_3d_volume(annotation, z_position, x_angle, y_angle) + + # 50% chance of only using half of the brain + if np.random.rand() > 0.5: + removed_pixels = sample.shape[1] // 2 + sample = sample[:, : sample.shape[1] // 2] + # recenter by padding the removed pixels + sample = np.pad(sample, ((0, 0), (0, removed_pixels // 2)), "constant") + + center = (sample.shape[1] // 2, sample.shape[0] // 2) + rotation_angle = np.random.uniform(-10, 10) + rotation_matrix = cv2.getRotationMatrix2D(center, rotation_angle, 1) + sample = cv2.warpAffine(sample, rotation_matrix, (sample.shape[1], sample.shape[0])) + # sample_annotation = affine_transform( + # sample_annotation, rotation_matrix[:, :2], rotation_matrix[:, 2] + # ) + + shear_y = np.random.rand() * 0.25 - 0.125 + shear_matrix = np.float32([[1, 0, 0], [shear_y, 1, 0]]) + + sample = cv2.warpAffine(sample, shear_matrix, (sample.shape[1], sample.shape[0])) + # sample_annotation = affine_transform( + # sample_annotation, shear_matrix[:, :2], shear_matrix[:, 2] + # ).astype(np.uint32) + + sample = np.pad(sample, 25, "constant", constant_values=0) + # sample_annotation = np.pad( + # sample_annotation, 25, "constant", constant_values=0 + # ).astype(np.uint32) + + sample = cv2.resize(sample, (224, 224), interpolation=cv2.INTER_LINEAR) + # sample_annotation = resize_image_nearest_neighbor(sample_annotation, (224, 224)) + + random_name = str(uuid4()) + sample_filename = f"S_{random_name}.png" + # annotation_filename = f"S_{random_name}.pkl" + + cv2.imwrite(str(experiment_path / sample_filename), sample) + # with open(experiment_path / annotation_filename, "wb") as f: + # pickle.dump(sample_annotation, f) + + metadata_entry = f"{sample_filename},{x_angle},{y_angle},{z_position}\n" + with lock: + with open(metadata_file, "a") as f: + f.write(metadata_entry) + + if len(ttrs) > 50: + ttrs.pop(0) + + ttrs.append(time.time() - start_time) + + time_remaining = np.mean(ttrs) * (num_samples - i) + formatted_time_remaining = time.strftime( + "%H:%M:%S", time.gmtime(time_remaining) + ) + if i % 3 == 0: + print( + f"Samples completed: {i}/{num_samples} | Time remaining: {formatted_time_remaining}", + end="\r", + ) + + +def generate_sample_pair( + i, num_samples, atlas, experiment_path, metadata_file, ttrs, lock +): + start_time = time.time() + x_angle, y_angle = np.random.uniform(-15, 15, 2) + z_position = np.random.randint(200, 1200) + + # Generate the original sample + original_sample = slice_3d_volume(atlas, z_position, x_angle, y_angle) + + transformed_sample = original_sample.copy() + + is_hemi = False + # 50% chance of only using half of the brain + if np.random.rand() > 0.5: + is_hemi = True + removed_pixels = transformed_sample.shape[1] // 2 + transformed_sample = transformed_sample[:, : transformed_sample.shape[1] // 2] + original_sample = original_sample[:, : original_sample.shape[1] // 2] + # Recenter by padding the removed pixels + transformed_sample = np.pad(transformed_sample, ((0, 0), (0, removed_pixels // 2)), "constant") + original_sample = np.pad(original_sample, ((0, 0), (0, removed_pixels // 2)), "constant") + + center = (transformed_sample.shape[1] // 2, transformed_sample.shape[0] // 2) + rotation_angle = np.random.uniform(-10, 10) + rotation_matrix = cv2.getRotationMatrix2D(center, rotation_angle, 1) + transformed_sample = cv2.warpAffine(transformed_sample, rotation_matrix, (transformed_sample.shape[1], transformed_sample.shape[0])) + + shear_y = np.random.rand() * 0.25 - 0.125 + shear_matrix = np.float32([[1, 0, 0], [shear_y, 1, 0]]) + transformed_sample = cv2.warpAffine(transformed_sample, shear_matrix, (transformed_sample.shape[1], transformed_sample.shape[0])) + + transformed_sample = np.pad(transformed_sample, 25, "constant", constant_values=0) + transformed_sample = cv2.resize(transformed_sample, (224, 224), interpolation=cv2.INTER_LINEAR) + original_sample = np.pad(original_sample, 25, "constant", constant_values=0) + original_sample = cv2.resize(original_sample, (224, 224), interpolation=cv2.INTER_LINEAR) + + # Generate filenames for original and transformed images + random_name = str(uuid4()) + original_sample_filename = f"S_{random_name}.png" + transformed_sample_filename = f"S_{random_name}.png" + + # Create subdirectories for original and transformed images + original_subdir = experiment_path / "original" + transformed_subdir = experiment_path / "transformed" + original_subdir.mkdir(parents=True, exist_ok=True) + transformed_subdir.mkdir(parents=True, exist_ok=True) + hemi_subdir_original = original_subdir / "hemi" + hemi_subdir_transformed = transformed_subdir / "hemi" + whole_subdir_original = original_subdir / "whole" + whole_subdir_transformed = transformed_subdir / "whole" + hemi_subdir_original.mkdir(parents=True, exist_ok=True) + hemi_subdir_transformed.mkdir(parents=True, exist_ok=True) + whole_subdir_original.mkdir(parents=True, exist_ok=True) + whole_subdir_transformed.mkdir(parents=True, exist_ok=True) + + # Save images to respective subdirectories + if is_hemi: + cv2.imwrite(str(hemi_subdir_original / original_sample_filename), original_sample) + cv2.imwrite(str(hemi_subdir_transformed / transformed_sample_filename), transformed_sample) + else: + cv2.imwrite(str(whole_subdir_original / original_sample_filename), original_sample) + cv2.imwrite(str(whole_subdir_transformed / transformed_sample_filename), transformed_sample) + + metadata_entry = f"{original_sample_filename},{transformed_sample_filename},{x_angle},{y_angle},{z_position}\n" + with lock: + with open(metadata_file, "a") as f: + f.write(metadata_entry) + + print(f"Samples completed: {i}/{num_samples}", end="\r") + + +def create_paired_synthetic_experiment(name, num_samples, atlas): + output_path = Path("~/Desktop/synthetic_experiments/").expanduser() + output_path.mkdir(exist_ok=True) + experiment_path = output_path / name + experiment_path.mkdir(exist_ok=True) + + metadata_file = experiment_path / "metadata.csv" + + # Open the metadata file in write mode to write the header + with open(metadata_file, "w") as f: + f.write("filename,x_angle,y_angle,z_position\n") + + lock = threading.Lock() + ttrs = [] + with ThreadPoolExecutor(max_workers=128) as executor: + futures = [ + executor.submit( + generate_sample_pair, + i, + num_samples, + atlas, + experiment_path, + metadata_file, + ttrs, + lock, + ) + for i in range(num_samples) + ] + for future in as_completed(futures): + future.result() - Args: - name (str): Name of the experiment. - num_samples (int): Number of samples to create. - atlas (numpy.ndarray): 3D atlas. - annotation (numpy.ndarray): 3D annotation. - """ - # Create output directory +def create_synthetic_experiment(name, num_samples, atlas, annotation): output_path = Path("~/Desktop/synthetic_experiments/").expanduser() output_path.mkdir(exist_ok=True) - # Create experiment directory experiment_path = output_path / name experiment_path.mkdir(exist_ok=True) - # pick on random x-angle and y-angle between -2 and 2 degrees - x_angle, y_angle = np.random.rand(2) * 4 - 2 - # for number of samples create a representative brain - slice_start = np.random.randint(200, 400) - slice_end = np.random.randint(800, 1200) - slices = np.linspace(slice_start, slice_end, num_samples, dtype=np.int32) - for i, position in enumerate(slices): - # create a slice from the atlas - sample = slice_3d_volume(atlas, position, x_angle, y_angle) - sample_annotation = slice_3d_volume(annotation, position, x_angle, y_angle) - # apply rotation - center = (sample.shape[1] // 2, sample.shape[0] // 2) - rotation_matrix = cv2.getRotationMatrix2D(center, np.random.uniform(-10, 10), 1) - sample = cv2.warpAffine( - sample, rotation_matrix, (sample.shape[1], sample.shape[0]) - ) - sample_annotation = affine_transform( - sample_annotation, rotation_matrix[:, :2], rotation_matrix[:, 2] - ) - # apply shear iteratively - shear_in_bounds = False - max_attempts = 10 - attempts = 0 - - while not shear_in_bounds and attempts < max_attempts: - shear_y = np.random.rand() * 2 - 1 - shear_matrix = np.float32([[1, 0, 0], [shear_y, 1, 0]]) - - if is_transform_in_bounds(sample, shear_matrix): - shear_in_bounds = True - sample = cv2.warpAffine( - sample, shear_matrix, (sample.shape[1], sample.shape[0]) - ) - sample_annotation = affine_transform( - sample_annotation, shear_matrix[:, :2], shear_matrix[:, 2] - ).astype(np.uint32) - else: - attempts += 1 - # add padding 100px on each side numpy - sample = np.pad(sample, 25, "constant", constant_values=0) - sample_annotation = np.pad( - sample_annotation, 25, "constant", constant_values=0 - ).astype(np.uint32) - # resize to target dimensions - sample = cv2.resize(sample, (512, 512), interpolation=cv2.INTER_LINEAR) - sample_annotation = resize_image_nearest_neighbor( - sample_annotation, (512, 512) - ).astype(np.uint32) - - # save - cv2.imwrite(str(experiment_path / f"S_{i:03d}.png"), sample) - with open(experiment_path / f"S_{i:03d}.pkl", "wb") as f: - pickle.dump(sample_annotation, f) + + metadata_file = experiment_path / "metadata.csv" + + # Open the metadata file in write mode to write the header + with open(metadata_file, "w") as f: + f.write("filename,x_angle,y_angle,z_position\n") + + lock = threading.Lock() + ttrs = [] + with ThreadPoolExecutor(max_workers=128) as executor: + futures = [ + executor.submit( + generate_sample, + i, + num_samples, + atlas, + annotation, + experiment_path, + metadata_file, + ttrs, + lock, + ) + for i in range(num_samples) + ] + for future in as_completed(futures): + future.result() def dump_structure_data(): @@ -293,11 +452,10 @@ def mask_slice_by_region(atlas_slice, annotation_slice, structure_map, region="C def main(): atlas_path = Path("~/.belljar/nrrd/atlas_10.nrrd") annotation_path = Path("~/.belljar/nrrd/annotation_10.nrrd") - atlas, atlas_header = nrrd.read(str(atlas_path.expanduser())) - annotation, annotation_header = nrrd.read(str(annotation_path.expanduser())) - make_angled_data(1_000_000, atlas) - # create_synthetic_experiment("synthetic_experiment_1", 20, atlas, annotation) - # test edge detection methods - + atlas, _ = nrrd.read(str(atlas_path.expanduser())) + # annotation, annotation_header = nrrd.read(str(annotation_path.expanduser())) + # create_synthetic_experiment("big_random_set_2", 10_000_000, atlas, annotation) + create_paired_synthetic_experiment("big_random_set_paired", 100_000, atlas) + if __name__ == "__main__": main() diff --git a/py/slice_estimator.py b/py/slice_estimator.py new file mode 100644 index 0000000..d932f1c --- /dev/null +++ b/py/slice_estimator.py @@ -0,0 +1,378 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +from torchvision import transforms +import csv +import cv2 +import torch.distributed as dist +import torch.multiprocessing as mp +from torch.nn.parallel import DistributedDataParallel as DDP +from torch.utils.data import DataLoader, DistributedSampler, Dataset +from pathlib import Path +import argparse +import os +import logging +import sys +import wandb + + +class ResidualBlock(nn.Module): + def __init__(self, in_channels, out_channels, stride=1, downsample=None): + super(ResidualBlock, self).__init__() + self.conv1 = nn.Conv2d( + in_channels, out_channels, kernel_size=3, stride=stride, padding=1 + ) + self.bn1 = nn.BatchNorm2d(out_channels) + self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1) + self.bn2 = nn.BatchNorm2d(out_channels) + self.relu = nn.ReLU(inplace=True) + self.downsample = downsample + + def forward(self, x): + residual = x + out = self.conv1(x) + out = self.bn1(out) + out = self.relu(out) + out = self.conv2(out) + out = self.bn2(out) + + if self.downsample is not None: + residual = self.downsample(residual) + + out += residual + out = self.relu(out) + return out + +class STN(nn.Module): + def __init__(self): + super(STN, self).__init__() + self.localization = nn.Sequential( + nn.Conv2d(1, 8, kernel_size=7), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True), + nn.Conv2d(8, 10, kernel_size=5), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True) + ) + + # Initialize fc_loc layers but leave them without fixed input size + self.fc_loc1 = None + self.fc_loc2 = None + + def forward(self, x): + xs = self.localization(x) + xs_size = xs.size() + + if self.fc_loc1 is None or self.fc_loc2 is None: + # Compute the size for the fc_loc1 layer dynamically + flatten_size = xs_size[1] * xs_size[2] * xs_size[3] + self.fc_loc1 = nn.Linear(flatten_size, 32).to(xs.device) + self.fc_loc2 = nn.Linear(32, 6).to(xs.device) + # Initialize the weights/bias with identity transformation + self.fc_loc2.weight.data.zero_() + self.fc_loc2.bias.data.copy_(torch.tensor([1, 0, 0, 0, 1, 0], dtype=torch.float)) + + xs = xs.view(xs.size(0), -1) # Flatten dynamically + xs = self.fc_loc1(xs) + xs = F.relu(xs) + theta = self.fc_loc2(xs) + theta = theta.view(-1, 2, 3) + grid = F.affine_grid(theta, x.size()) + x = F.grid_sample(x, grid) + return x + +class SliceEstimator(nn.Module): + def __init__(self, block, layers): + super(SliceEstimator, self).__init__() + self.in_channels = 64 + self.stn = STN() + + self.conv1 = nn.Conv2d(1, 64, kernel_size=3, padding=1) + self.bn1 = nn.BatchNorm2d(64) + self.relu = nn.ReLU(inplace=True) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.layer1 = self._make_layer(block, 64, layers[0]) + self.layer2 = self._make_layer(block, 128, layers[1], stride=2) + self.layer3 = self._make_layer(block, 256, layers[2], stride=2) + self.layer4 = self._make_layer(block, 512, layers[3], stride=3) + + self.attention = nn.MultiheadAttention(embed_dim=512, num_heads=8, batch_first=True) + + self.global_pool = nn.AdaptiveAvgPool2d((1, 1)) + self.flatten = nn.Flatten() + + self.fc1 = nn.Linear(512, 512) + self.bn5 = nn.BatchNorm1d(512) + self.dropout1 = nn.Dropout(0.5) + + self.fc2 = nn.Linear(512, 512) + self.bn6 = nn.BatchNorm1d(512) + self.dropout2 = nn.Dropout(0.5) + + self.fc_x = nn.Linear(512, 1) + self.fc_y = nn.Linear(512, 1) + self.fc_z = nn.Linear(512, 1) + + def _make_layer(self, block, out_channels, blocks, stride=1): + downsample = None + if stride != 1 or self.in_channels != out_channels: + downsample = nn.Sequential( + nn.Conv2d(self.in_channels, out_channels, kernel_size=1, stride=stride, bias=False), + nn.BatchNorm2d(out_channels), + ) + + layers = [] + layers.append(block(self.in_channels, out_channels, stride, downsample)) + self.in_channels = out_channels + for _ in range(1, blocks): + layers.append(block(self.in_channels, out_channels)) + + return nn.Sequential(*layers) + + def forward(self, x): + x = self.stn(x) + + x = self.conv1(x) + x = self.bn1(x) + x = self.relu(x) + x = self.pool1(x) + + x = self.layer1(x) + x = self.layer2(x) + x = self.layer3(x) + x = self.layer4(x) + + batch_size, channels, height, width = x.size() + x = x.flatten(2).permute(0, 2, 1) + x, _ = self.attention(x, x, x) + x = x.permute(0, 2, 1).reshape(batch_size, channels, height, width) + + x = self.global_pool(x) + x = self.flatten(x) + + x = self.fc1(x) + x = self.bn5(x) + x = self.relu(x) + x = self.dropout1(x) + + x = self.fc2(x) + x = self.bn6(x) + x = self.relu(x) + x = self.dropout2(x) + + x_cut = self.fc_x(x) + y_cut = self.fc_y(x) + z_depth = self.fc_z(x) + out = torch.stack([z_depth, x_cut, y_cut], dim=1) + return out + +layers = [9, 36, 67, 9] + +# Create the model instance +model = SliceEstimator(ResidualBlock, layers) + + +class SytheticSliceDataset(Dataset): + """ + A custom dataset for the Sythetic Slice Estimator + + Args: + Dataset (Dataset): A PyTorch Dataset + metadata_path (str): Path to the metadata file + images_path (str): Path to the images + """ + def __init__(self, metadata_path, images_path, transform=None): + self.metadata = Path(metadata_path) + self.images = Path(images_path) + self.transform = transform + self.data = [] + + with open(self.metadata, newline="", encoding="utf-8-sig") as csvfile: + reader = csv.reader(csvfile, delimiter=",", quotechar="|") + # Skip the header + next(reader) + for i, row in enumerate(reader): + self.data.append({ + "file_name": row[0], + "x_angle": float(row[1]), + "y_angle": float(row[2]), + "z_position": float(row[3]), + }) + + def _load_image(self, file_name): + """Loads an image from disk + Args: + file_name (str): The filename of the image + """ + return cv2.imread(str(self.images / file_name), cv2.IMREAD_GRAYSCALE) + + def __len__(self): + return len(self.data) + + def _normalize_label(self, label): + """Normalizes the label""" + pos, x_angle, y_angle = [float(l) for l in label] + pos_max = 1324 + pos_min = 0 + pos = (pos - pos_min) / (pos_max - pos_min) + x_angle_max = 180 + x_angle_min = -180 + x_angle = (x_angle - x_angle_min) / (x_angle_max - x_angle_min) + y_angle_max = 180 + y_angle_min = -180 + y_angle = (y_angle - y_angle_min) / (y_angle_max - y_angle_min) + return torch.tensor([pos, x_angle, y_angle]) + + def restore_label(self, label): + pos, x_angle, y_angle = label + # restore target values + pos_max = 1324 + pos_min = 0 + pos = pos * (pos_max - pos_min) + pos_min + x_angle_max = 180 + x_angle_min = -180 + x_angle = x_angle * (x_angle_max - x_angle_min) + x_angle_min + y_angle_max = 180 + y_angle_min = -180 + y_angle = y_angle * (y_angle_max - y_angle_min) + y_angle_min + return [pos, x_angle, y_angle] + + def __getitem__(self, idx): + if torch.is_tensor(idx): + idx = idx.tolist() + + image = self._load_image(self.data[idx]["file_name"]) + if self.transform is not None: + image = self.transform(image) + + label = [ + self.data[idx]["x_angle"], + self.data[idx]["y_angle"], + self.data[idx]["z_position"], + ] + + label = self._normalize_label(label) + + return image, label + + +def setup(rank, world_size): + os.environ['MASTER_ADDR'] = 'localhost' + os.environ['MASTER_PORT'] = '12355' + # check os, if windows, set to gloo + if os.name == 'nt': + backend = 'gloo' + else: + backend = 'nccl' + # initialize the process group + dist.init_process_group(backend, rank=rank, world_size=world_size) + + # Set up logging to file + logging.basicConfig( + level=logging.INFO, + handlers=[ + logging.FileHandler(f"log_{rank}.log"), + logging.StreamHandler(sys.stdout) + ] + ) + logging.info("Logging setup complete") + +def cleanup(): + dist.destroy_process_group() + +def train(rank, world_size, args): + setup(rank, world_size) + if rank == 0: + wandb.init(project="slice_estimation") + + # Set the device + torch.cuda.set_device(rank) + device = torch.device("cuda", rank) + + # Create the model instance and move to device + model = SliceEstimator(ResidualBlock, layers).to(device) + model = DDP(model, device_ids=[rank]) + + # Random contrast and brightness transform + transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.ColorJitter((0.0, 0.25), (0.0, 0.25)), + transforms.ToTensor(), + ]) + + # Create the dataset and the distributed data loaders + og_dataset = SytheticSliceDataset(args.metadata.strip(), args.images.strip(), transform=transform) + train_dataset, val_dataset = torch.utils.data.random_split(og_dataset, [0.8, 0.2]) + + train_sampler = DistributedSampler(train_dataset) + val_sampler = DistributedSampler(val_dataset) + + train_dataloader = DataLoader(train_dataset, batch_size=args.batch_size, sampler=train_sampler, num_workers=4, pin_memory=True) + val_dataloader = DataLoader(val_dataset, batch_size=args.batch_size, sampler=val_sampler, num_workers=4, pin_memory=True) + + # Create the loss function and the optimizer + criterion = nn.MSELoss() + optimizer = torch.optim.Adam(model.parameters(), lr=args.learning_rate) + + best_loss = float("inf") + for epoch in range(args.epochs): + model.train() + train_loss = 0.0 + train_sampler.set_epoch(epoch) + for batch, (samples, labels) in enumerate(train_dataloader): + samples = samples.to(device) + labels = labels.to(device) + optimizer.zero_grad() + outputs = model(samples) + loss = criterion(outputs.squeeze(), labels) + loss.backward() + optimizer.step() + train_loss += loss.item() * samples.size(0) + if rank == 0: + logging.info(f"Rank {rank} | Epoch {epoch} | Batch {batch + 1} / {len(train_dataloader)} | Train Loss: {train_loss / ((batch + 1) * args.batch_size)}") + + train_loss = train_loss / len(train_dataset) + if rank == 0: + wandb.log({"train_loss": train_loss}) + + model.eval() + valid_loss = 0.0 + with torch.no_grad(): + for batch, (samples, labels) in enumerate(val_dataloader): + samples = samples.to(device) + labels = labels.to(device) + outputs = model(samples) + loss = criterion(outputs.squeeze(), labels) + valid_loss += loss.item() * samples.size(0) + if rank == 0: + logging.info(f"Rank {rank} | Epoch {epoch} | Batch {batch} / {len(val_dataloader)} | Valid Loss: {valid_loss / ((batch + 1) * args.batch_size)}") + + valid_loss = valid_loss / len(val_dataset) + if valid_loss < best_loss: + best_loss = valid_loss + if rank == 0: + torch.save(model.state_dict(), f"best.pt") + + if rank == 0: + torch.save(model.state_dict(), f"last.pt") + wandb.log({"best_loss": best_loss}) + wandb.log({"valid_loss": valid_loss}) + + cleanup() + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-m", "--metadata", type=str, required=True) + parser.add_argument("-i", "--images", type=str, required=True) + parser.add_argument("-e", "--epochs", type=int, required=False, default=10) + parser.add_argument("-b", "--batch_size", type=int, required=False, default=16) + parser.add_argument("-l", "--learning_rate", type=float, required=False, default=0.001) + parser.add_argument("-n", "--nodes", type=int, default=1, help="number of nodes for distributed training") + parser.add_argument("-g", "--gpus", type=int, default=1, help="number of gpus per node") + parser.add_argument("-nr", "--nr", type=int, default=0, help="ranking within the nodes") + args = parser.parse_args() + + world_size = args.gpus * args.nodes + mp.spawn(train, args=(world_size, args), nprocs=args.gpus, join=True) \ No newline at end of file diff --git a/py/test_alignment.py b/py/test_alignment.py new file mode 100644 index 0000000..fd3baab --- /dev/null +++ b/py/test_alignment.py @@ -0,0 +1,277 @@ +import cv2 +import SimpleITK as sitk +import numpy as np +import nrrd +from pathlib import Path +import argparse +from matplotlib import pyplot as plt +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg +import tkinter as tk +from tkinter import filedialog +from slice_atlas import slice_3d_volume +from skimage.filters import difference_of_gaussians, sobel, unsharp_mask, threshold_otsu +from skimage.morphology import binary_closing, remove_small_objects + +ACTIVE_SLIDER = 0 +X_ANGLE = 0 +Y_ANGLE = 0 + + + +def match_histograms(fixed, moving): + """ + Match the moving histogram to the fixed using sitk + Args: + fixed (sitk.Image): The fixed image. + moving (sitk.Image): The moving image. + Returns: + sitk.Image: The matched moving image. + """ + matcher = sitk.HistogramMatchingImageFilter() + matcher.SetNumberOfHistogramLevels(1024) + matcher.SetNumberOfMatchPoints(10) + matcher.ThresholdAtMeanIntensityOn() + return matcher.Execute(moving, fixed) + +def visualize_registration(fixed, moving, transform, title=""): + resampler = sitk.ResampleImageFilter() + resampler.SetReferenceImage(fixed) + resampler.SetInterpolator(sitk.sitkLinear) + resampler.SetDefaultPixelValue(0) + resampler.SetTransform(transform) + + out = resampler.Execute(moving) + # Convert to numpy arrays for visualization + fixed_np = sitk.GetArrayViewFromImage(fixed) + moving_np = sitk.GetArrayViewFromImage(moving) + out_np = sitk.GetArrayViewFromImage(out) + + plt.figure(figsize=(10, 8)) + plt.subplot(1, 3, 1) + plt.title("Fixed") + plt.imshow(fixed_np, cmap="viridis") + plt.subplot(1, 3, 2) + plt.title("Moving") + plt.imshow(moving_np, cmap="viridis") + plt.subplot(1, 3, 3) + plt.title("Transformed Moving") + plt.imshow(out_np, cmap="viridis") + plt.suptitle(title) + plt.show() + + +def preprocess_image(image): + """ + Preprocess the image to enhance features. + """ + # Convert SimpleITK image to numpy array + image_array = sitk.GetArrayFromImage(sitk.Cast(image, sitk.sitkUInt8)) + blurred = cv2.GaussianBlur(image_array, (5, 5), 0) + edges = sobel(blurred) + # normalize + edges = (edges - np.min(edges)) / (np.max(edges) - np.min(edges)) + edges = edges.astype(np.float32) + edges = sitk.GetImageFromArray(edges) + + return edges + # Normalize the image +def multimodal_registration(fixed, moving): + fixed = preprocess_image(fixed) + moving = preprocess_image(moving) + # Affine + initialTx = sitk.CenteredTransformInitializer( + fixed, moving, sitk.AffineTransform(fixed.GetDimension()) + ) + + R = sitk.ImageRegistrationMethod() + R.SetMetricAsMattesMutualInformation() + R.SetOptimizerAsGradientDescent( + learningRate=0.01, + numberOfIterations=300, + convergenceMinimumValue=1e-8, + convergenceWindowSize=20, + ) + R.SetOptimizerScalesFromPhysicalShift() + R.SetShrinkFactorsPerLevel(shrinkFactors=[4, 2, 1]) + R.SetSmoothingSigmasPerLevel(smoothingSigmas=[3, 2, 0]) + R.SetInitialTransform(initialTx) + R.SetInterpolator(sitk.sitkLinear) + + outTx1 = R.Execute(fixed, moving) + + # Resample the moving image using the initial transformation + resampled_moving = sitk.Resample( + moving, fixed, outTx1, sitk.sitkLinear, 0.0, sitk.sitkFloat32 + ) + # B-spline + transformDomainMeshSize = [6] * fixed.GetDimension() + tx = sitk.BSplineTransformInitializer(fixed, transformDomainMeshSize) + R.SetMetricAsANTSNeighborhoodCorrelation(11) + R.SetOptimizerScalesFromPhysicalShift() + R.SetInitialTransform(tx, inPlace=False) + R.SetOptimizerAsGradientDescent( + learningRate=0.001, + numberOfIterations=300, + convergenceMinimumValue=1e-10, + convergenceWindowSize=20, + ) + outTx2 = R.Execute(fixed, resampled_moving) + + # Combine the transformations: Affine followed by B-spline. + composite_transform = sitk.CompositeTransform(outTx1) + composite_transform.AddTransform(outTx2) + + return composite_transform +class AtlasSliceViewer: + def __init__(self, atlas_path): + self.atlas_path = Path(atlas_path).expanduser() + self.atlas, _ = nrrd.read(self.atlas_path) + self.active_slider = 0 + self.x_angle = 0 + self.y_angle = 0 + self.init_ui() + + def init_ui(self): + self.root = tk.Tk() + self.root.title("Atlas Viewer") + self.sliders = self.make_sliders(self.max_min_atlas(self.atlas)) + self.fig = plt.figure() + self.ax = self.fig.add_subplot(111) + self.ax.imshow(self.slice_3d_volume(0, 0, 0, 0), cmap='gray') + self.btn_save = tk.Button(self.root, text="Save as PNG", command=self.save_image) + self.btn_save.pack() + self.canvas = FigureCanvasTkAgg(self.fig, master=self.root) + self.canvas.draw() + self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=1) + self.root.mainloop() + + def max_min_atlas(self, atlas): + """ + Create a function that takes an atlas and returns the max and min of each dimension + """ + return [atlas.shape[i] - 1 for i in range(3)] + + def make_sliders(self, max_min_atlas): + """ + Create a function that takes max and min of atlas and returns three sliders + """ + sliders = [] + for i in range(3): + slider = tk.Scale( + self.root, + from_=0, + to=max_min_atlas[i], + name=str(i), + orient=tk.HORIZONTAL, + command=lambda value, i=i: self.update_slice(i) + ) + slider.pack() + sliders.append(slider) + + x_slider = tk.Scale( + self.root, + from_=-5.0, + to=5.0, + resolution=0.01, + orient=tk.HORIZONTAL, + command=lambda value: self.update_slice(3) + ) + y_slider = tk.Scale( + self.root, + from_=-5.0, + to=5.0, + resolution=0.01, + orient=tk.HORIZONTAL, + command=lambda value: self.update_slice(4) + ) + x_slider.pack() + y_slider.pack() + sliders.append(x_slider) + sliders.append(y_slider) + + return sliders + + def update_slice(self, slider_num): + """ + Create a function that will update the displayed slice when the sliders are moved + """ + if slider_num not in [3, 4]: + self.active_slider = slider_num + + for i, slider in enumerate(self.sliders): + if i != self.active_slider: + slider.set(0) + + self.x_angle = self.sliders[3].get() + self.y_angle = self.sliders[4].get() + current = self.sliders[self.active_slider].get() + self.ax.clear() + self.ax.imshow(cv2.rotate(self.slice_3d_volume(current, self.x_angle, self.y_angle, self.active_slider), cv2.ROTATE_90_CLOCKWISE), cmap='gray') + self.fig.canvas.draw() + + def save_image(self): + """ + Save the current slice as a PNG file + """ + file_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")]) + if file_path: + cv2.imwrite(file_path, cv2.rotate(self.slice_3d_volume(self.sliders[self.active_slider].get(), self.x_angle, self.y_angle, self.active_slider), cv2.ROTATE_90_CLOCKWISE)) + +if __name__ == "__main__": + """ + A Generic script for testing image alignment and registration on a single sample image. + Useful for tuning the alignment and registration parameters. + """ + + parser = argparse.ArgumentParser() + parser.add_argument("fixed", help="path to fixed image") + parser.add_argument("moving", help="path to moving image") + args = parser.parse_args() + + fixed = cv2.imread(args.fixed, cv2.IMREAD_GRAYSCALE) + moving = cv2.imread(args.moving, cv2.IMREAD_GRAYSCALE) + + # Padding + fixed = cv2.copyMakeBorder(fixed, 25, 25, 25, 25, cv2.BORDER_CONSTANT, value=0) + moving = cv2.copyMakeBorder(moving, 25, 25, 25, 25, cv2.BORDER_CONSTANT, value=0) + # resize + fixed = cv2.resize(fixed, (256, 256)) + moving = cv2.resize(moving, (256, 256)) + + # Cast to sitk image + fixed = sitk.Cast(sitk.GetImageFromArray(fixed), sitk.sitkFloat32) + moving = sitk.Cast(sitk.GetImageFromArray(moving), sitk.sitkFloat32) + + # Histogram matching + moving = match_histograms(fixed, moving) + + # Transform + tx = multimodal_registration(fixed, moving) + + # Resample + resampler = sitk.ResampleImageFilter() + resampler.SetReferenceImage(fixed) + resampler.SetInterpolator(sitk.sitkLinear) + resampler.SetDefaultPixelValue(0) + resampler.SetOutputPixelType(sitk.sitkUInt8) + resampler.SetTransform(tx) + aligned = resampler.Execute(moving) + aligned = sitk.GetArrayFromImage(aligned) + fixed = sitk.GetArrayFromImage(fixed).astype(np.uint8) + moving = sitk.GetArrayFromImage(moving).astype(np.uint8) + # Visualize + fig, axes = plt.subplots(1, 4, figsize=(12, 6)) + axes[0].set_title("Original Image") + axes[0].imshow(fixed, cmap="gray") + axes[1].set_title("Atlas Match Image") + axes[1].imshow(moving, cmap="gray") + axes[2].set_title("Aligned Image") + axes[2].imshow(aligned, cmap="gray") + axes[3].set_title("Overlaid (red = Original, blue = Aligned)") + fixed_color = cv2.cvtColor(fixed, cv2.COLOR_GRAY2BGR) + aligned_color = cv2.cvtColor(aligned, cv2.COLOR_GRAY2BGR) + red_fixed = cv2.cvtColor(fixed_color, cv2.COLOR_BGR2RGB) * (1, 0, 0) + blue_aligned = cv2.cvtColor(aligned_color, cv2.COLOR_BGR2RGB) * (0, 0, 1) + overlaid = cv2.addWeighted(red_fixed, 0.5, blue_aligned, 0.5, 0) + axes[3].imshow(overlaid) + plt.show() \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 7010881..0d861c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,32 +4,33 @@ "@babel/code-frame@7.12.11": version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== "@babel/highlight@^7.10.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" js-tokens "^4.0.0" + picocolors "^1.0.0" "@electron-forge/cli@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-6.0.3.tgz#365f1555f0ba868b9585fc6817b0c9b434bf1980" - integrity sha512-JQuddRZLvVsZwBax0yx5YOJ5IOb14YCkJDSA3L2rUfeVW/HO0iF2lOBxC4xDJlKKmOF9wLp5pwmpM0KbH2tkmA== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/cli/-/cli-6.4.2.tgz" + integrity sha512-bM6YVTV0uUEpIL1jkpARlSm4Li26XZn+avC/lyTdpPqnd65T/oXZNkrAD+2Jb0RlgplOaM21qWm7ybtvKDGDyA== dependencies: - "@electron-forge/core" "^6.0.3" - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/core" "6.4.2" + "@electron-forge/shared-types" "6.4.2" "@electron/get" "^2.0.0" chalk "^4.0.0" commander "^4.1.1" @@ -38,12 +39,12 @@ listr2 "^5.0.3" semver "^7.2.1" -"@electron-forge/core-utils@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/core-utils/-/core-utils-6.0.3.tgz#118a2d5d502c62e6c30e472c8837a54c1d0e6f41" - integrity sha512-o5NINLD2D62wq00hK8QJxZNPu32pLv5M7vgfJ/gBAUvKm9r8wbREVJOK5BZiUX9Abb17MqmdQ6ajbtJiXNX47A== +"@electron-forge/core-utils@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-6.4.2.tgz" + integrity sha512-CjB3aakmRsXAMMDYc8PxNTMf4FdI29y4PErfv7eCXlL5oo3JW0VSKZIV7R8/Po0S0got85q2kmhZgCKuxL1BNA== dependencies: - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" "@electron/rebuild" "^3.2.10" "@malept/cross-spawn-promise" "^2.0.0" chalk "^4.0.0" @@ -54,25 +55,27 @@ semver "^7.2.1" yarn-or-npm "^3.0.1" -"@electron-forge/core@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.3.tgz#dcf383d41f4631612b3fe85bb9d2124b09d6b8d2" - integrity sha512-OndMQj7QDpAeJWUXWFj9OV14766em9kdhTwkm4a4CTRHDw+VvRxcflvYpBnwEiF1QtvzkM4ezLFDnvb0RwuT0g== - dependencies: - "@electron-forge/core-utils" "^6.0.3" - "@electron-forge/maker-base" "^6.0.3" - "@electron-forge/plugin-base" "^6.0.3" - "@electron-forge/publisher-base" "^6.0.3" - "@electron-forge/shared-types" "^6.0.3" - "@electron-forge/template-base" "^6.0.3" - "@electron-forge/template-webpack" "^6.0.3" - "@electron-forge/template-webpack-typescript" "^6.0.3" +"@electron-forge/core@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/core/-/core-6.4.2.tgz" + integrity sha512-VtrFZ1Q7NG1ov0jJO/tUvUiYdWZ0Y31xw762is/jfpRPD6V/soOpwJJAoWoPK9TZVkTm2pkS8S5LikCMbNCLxw== + dependencies: + "@electron-forge/core-utils" "6.4.2" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/plugin-base" "6.4.2" + "@electron-forge/publisher-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" + "@electron-forge/template-base" "6.4.2" + "@electron-forge/template-vite" "6.4.2" + "@electron-forge/template-vite-typescript" "6.4.2" + "@electron-forge/template-webpack" "6.4.2" + "@electron-forge/template-webpack-typescript" "6.4.2" "@electron/get" "^2.0.0" "@electron/rebuild" "^3.2.10" "@malept/cross-spawn-promise" "^2.0.0" chalk "^4.0.0" debug "^4.3.1" - electron-packager "^17.1.1" + electron-packager "^17.1.2" fast-glob "^3.2.7" filenamify "^4.1.0" find-up "^5.0.0" @@ -92,170 +95,150 @@ username "^5.1.0" yarn-or-npm "^3.0.1" -"@electron-forge/maker-base@6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.2.1.tgz#04dcc6163a2938480ed5c887fa2894646c7eebb8" - integrity sha512-LnvGtTJ/RNojKdUKktYEcbLqPggXdMBs1uscQRgXkI3XnVGdEi+/j5+Eg5ka4d6FnsaUkz//U5yhPtNFhDbNSw== - dependencies: - "@electron-forge/shared-types" "6.2.1" - fs-extra "^10.0.0" - which "^2.0.2" - -"@electron-forge/maker-base@6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.3.0.tgz#811f0910c00753e76bcb38db8b6ded06e90c4f93" - integrity sha512-zAU2G7yh9gLyFbw08RfU4j8z/QAt5Sm4uaub3dE+GdRuXOc0NeqIfUiwP2xIl6Ja6mt5dU4gvdxQT/+hnqXqoQ== +"@electron-forge/maker-base@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.4.2.tgz" + integrity sha512-zW3GH+LqDK9nxQmQEFkJPR8RqiX0lVk6a4mXll3ngujN1fPevO4ivUAWmaEVeC1dH/hXbN7s9m0S6a37MigftQ== dependencies: - "@electron-forge/shared-types" "6.3.0" - fs-extra "^10.0.0" - which "^2.0.2" - -"@electron-forge/maker-base@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.3.tgz#867e17eb68977a682b5d8938a04f6e0f23b39b53" - integrity sha512-VVuRSlUpyoUviqY9Rs4pdClYbdNjb9ELzO9xbyNQ07GUdwz7HBG/Rj5qTYKmFtlWzeMsiepLDO+JOz1EbVs15Q== - dependencies: - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" fs-extra "^10.0.0" which "^2.0.2" "@electron-forge/maker-deb@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-deb/-/maker-deb-6.0.3.tgz#d1fd3a06140db345032d6fdcb829cf42e4a04f91" - integrity sha512-dSVVfM3zsCeNywbXF4AfgoLbjFYi71SuoFYQwwvBB7Lx0BJK4xFLxcydHrq7Fv5Dl4bVaN/0rBQ2ohMK6OUFyg== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-6.4.2.tgz" + integrity sha512-tlV8ffivgBP94vtYXgAeXgzeKCaRyLuWH9LT8PQW1QrYbAFpCMmuwk/zFaJkyMklImCWmDFTPYMEqdEJGd7Npg== dependencies: - "@electron-forge/maker-base" "^6.0.3" - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" optionalDependencies: - electron-installer-debian "^3.0.0" + electron-installer-debian "^3.2.0" "@electron-forge/maker-dmg@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-dmg/-/maker-dmg-6.2.1.tgz#1439cf8fa1770429e6cc40c738b869ccceb4f31b" - integrity sha512-Cqy7zFpgqm5pL/2LdRnoSePQTz9DtpVd5YQwSTPi4hnE1EHir77dplg0xkkx876w9YNmusE7sT+xoT3xr8XB/Q== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-6.4.2.tgz" + integrity sha512-PG3qzDKQhogZe7rPOlWYR72k85mvwYdn4tzAMKTXTJyPy7RNuRq8NhANZHqFyFi95d4fawTcsbyFKM4kY+qQRQ== dependencies: - "@electron-forge/maker-base" "6.2.1" - "@electron-forge/shared-types" "6.2.1" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" fs-extra "^10.0.0" optionalDependencies: electron-installer-dmg "^4.0.0" "@electron-forge/maker-rpm@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-rpm/-/maker-rpm-6.0.3.tgz#4e2d11306cbe011e5e9521f944ab1f968a6992b9" - integrity sha512-bmnOi8O92TI0W9P5FIiEGTvGmBmr/W0jqEBQulvdmBhAAUwl2X+FnmrdjjxTUsA3uZ8CGftJ+bmWAKRiM8rTpA== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-6.4.2.tgz" + integrity sha512-+hfbY5pYbAer0y07OtOzVgVBHoTRmemqqZ//T0mKJpyK2ThHKGTvyW8FFlr5jlQs5LoDCM2WHKE8oGtRhivsMg== dependencies: - "@electron-forge/maker-base" "^6.0.3" - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" optionalDependencies: electron-installer-redhat "^3.2.0" "@electron-forge/maker-squirrel@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-squirrel/-/maker-squirrel-6.3.0.tgz#412df8e063ea74e84631cb67cf1b232eefd96627" - integrity sha512-SkVgkwBr+QYT6Cvfp785ni27EINC4tV2SBpy52gFTu+QTtH2cg/4aZJ8jmoXSkJ9rRSMKsHg9z7jInslM5A85w== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-6.4.2.tgz" + integrity sha512-ukK3RcFaBrQXUzR52PsHxfwDq5XKSnj6A1kkXiyHWqgj+HIU97prBScBb5JRtasPvYN+nDdQO2vlInsLaqcx9Q== dependencies: - "@electron-forge/maker-base" "6.3.0" - "@electron-forge/shared-types" "6.3.0" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" fs-extra "^10.0.0" optionalDependencies: electron-winstaller "^5.0.0" "@electron-forge/maker-zip@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-zip/-/maker-zip-6.0.3.tgz#3909482afd2a89b771243216939b806469611818" - integrity sha512-p2otNglLyXgqCW3CUNe7JN5+TWCy89tg63wqyjjJG1kD0jZ1lZEkV+TIAJkWK752vju52SjEFt8GfhWd67eHjA== + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-6.4.2.tgz" + integrity sha512-k2nfhhnxcYbUS7rCKCisuqEalxtH9l73+lrtfL0aQZiE/BLbDXyNckDIDOPvX0tBEg62nVzUdJonZwOhZVvAMw== dependencies: - "@electron-forge/maker-base" "^6.0.3" - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/maker-base" "6.4.2" + "@electron-forge/shared-types" "6.4.2" cross-zip "^4.0.0" fs-extra "^10.0.0" + got "^11.8.5" -"@electron-forge/plugin-base@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-6.0.3.tgz#2822228ab30188740db752f660563c3c56117a84" - integrity sha512-WCNStkmpo60wzaPMkTMXteoEebsWaLMjaOpkIEVG5RCPR5YmJgLcFkaXLVheR0whPKxuRn/0f4C2mwoWPKdh7w== +"@electron-forge/plugin-base@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.4.2.tgz" + integrity sha512-g6AAtQ7fZ94djBmwcnWasQ8xgaNVNjgaQ00GLK0NkmQ7n0PNbsnlMDuw9vdfTiL6WaLg5nxNSYc9bFJP/rtyeA== dependencies: - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" -"@electron-forge/publisher-base@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-6.0.3.tgz#93fcce8eead7f14f5c77887c236660b6b2b63b04" - integrity sha512-Rkd3krCD/9QK+ZReT2r3Oy/a8Xr1YOhc3SYBEfAas5ZjJ+VWzmmo8QWckUD/gBxn2BueMWMvS16hDDu/z0vS0Q== +"@electron-forge/publisher-base@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.4.2.tgz" + integrity sha512-Tnf9O8MFzdT1gsb5EDDaQUoslt7gUuUywtsr+lT/fpBlBQbei2fvioTwvZ1Q1cmsKnld7XhRh6unfgdWLTZzgw== dependencies: - "@electron-forge/shared-types" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" -"@electron-forge/shared-types@6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.2.1.tgz#6e60904e0436bd371db9ab21337d699b45523d6a" - integrity sha512-kLazG5XUAqb3Duyhq7XyGluINRwCQRaIiuvHwlvnZYYu6NZQTz9xUm6tQ9v05EtFblUx2iRjY67DJRZSt3dzTQ== +"@electron-forge/shared-types@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz" + integrity sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw== dependencies: "@electron/rebuild" "^3.2.10" - electron-packager "^17.1.1" + electron-packager "^17.1.2" listr2 "^5.0.3" -"@electron-forge/shared-types@6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.3.0.tgz#e6064bcd68a94d07084e342188fe36958757f598" - integrity sha512-6L4XIC4ErueM3mbWjVJLNtRZPxjdw3aa64e58m8gBwXnrreKVuKL+DFDKMvI2FO7IZXeLsIn/CEka+wQRwW87w== +"@electron-forge/template-base@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.4.2.tgz" + integrity sha512-vsQh+64Fr2Vxg6k8DAahWq4MAdB2F2qTig+LgIJENv8ksbzC1YIq05SBAS/g2674cdr7WdwyukMy2rgxe3rhnQ== dependencies: - "@electron/rebuild" "^3.2.10" - electron-packager "^17.1.1" - listr2 "^5.0.3" + "@electron-forge/shared-types" "6.4.2" + "@malept/cross-spawn-promise" "^2.0.0" + debug "^4.3.1" + fs-extra "^10.0.0" + username "^5.1.0" -"@electron-forge/shared-types@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.3.tgz#54ac9e1f80afa8ee609d104611c05c0ddee53cb2" - integrity sha512-KHY3W1GrXN6jcvRJu4S8EWVAEtJ3FVugOlG37QiEkh8WV8VxxKRB2Z5IR6RDZ6pu4ijCM+/9uVmrNCCjBRPXqg== +"@electron-forge/template-vite-typescript@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-6.4.2.tgz" + integrity sha512-h3pn6onvC/nLglmJuelYU82Qzrh0l6MqvbBGoT39bbDoRLIqmlhWTWppHgDJVXAGrSoH+9BEpptipeBQWirFwg== dependencies: - "@electron/rebuild" "^3.2.10" - electron-packager "^17.1.1" - listr2 "^5.0.3" + "@electron-forge/shared-types" "6.4.2" + "@electron-forge/template-base" "6.4.2" + fs-extra "^10.0.0" -"@electron-forge/template-base@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.3.tgz#bc97479b67c9766314cf2a262336ed35e86e52f7" - integrity sha512-7Zj6ObH0fk5AYivFyYU/5uClC30TmJHxU/jPMzzikn/3zymt6ekm+uXkUgi+G4zDnmHNSj7fGaqYl0KmAQf8/w== +"@electron-forge/template-vite@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-6.4.2.tgz" + integrity sha512-NX7jHRblBmIqufMbqWgpI/VnpgF/qMSTq9ZPmDSXamBhid336MC6+DoWzDpXceQZEp0m/jpMLR04ynr8O4jGlg== dependencies: - "@electron-forge/shared-types" "^6.0.3" - "@malept/cross-spawn-promise" "^2.0.0" - debug "^4.3.1" + "@electron-forge/shared-types" "6.4.2" + "@electron-forge/template-base" "6.4.2" fs-extra "^10.0.0" - username "^5.1.0" -"@electron-forge/template-webpack-typescript@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-6.0.3.tgz#1608e350b3c38898f18e802f81f12eeacf5313ec" - integrity sha512-d6jM4NyRaiOF58+5wB3YjKf3SZrQEz/a+KJlMIaocmzQEnofVim6y3frYmfNiQYwvCdfs/fqXpZ43DzI59xWog== +"@electron-forge/template-webpack-typescript@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-6.4.2.tgz" + integrity sha512-MPAZQ4v6piCED7NT1LTVQf61o6Eg/laNoKbhbrFBSH1i20OUwbtV2MLj6Op292ynI9+1qdHKmFgctr6qPTCAQw== dependencies: - "@electron-forge/shared-types" "^6.0.3" - "@electron-forge/template-base" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" + "@electron-forge/template-base" "6.4.2" fs-extra "^10.0.0" -"@electron-forge/template-webpack@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.3.tgz#679bbcf6c9351437d43498e2f2fc9f7559eb0d6b" - integrity sha512-psN1xzNlcy6mxxPNYf474+V8Crd8xjkBWHe+SWK0cJt2V3o8DWdIgaZEGDoGAnuGF5ohzHU/++7WN3SwpHFP2A== +"@electron-forge/template-webpack@6.4.2": + version "6.4.2" + resolved "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.4.2.tgz" + integrity sha512-9QYr/td4cmnGOj8UF25W6An/eI+JXj9T/b+KFybL3cQ87H1yrQOn2T84Bm5/JaB4SPdIu4FdKRjqwR7C7R0g2w== dependencies: - "@electron-forge/shared-types" "^6.0.3" - "@electron-forge/template-base" "^6.0.3" + "@electron-forge/shared-types" "6.4.2" + "@electron-forge/template-base" "6.4.2" fs-extra "^10.0.0" "@electron/asar@^3.2.1": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.2.tgz#f6ae4eb4343ad00b994c40db3f09f71f968ff9c0" - integrity sha512-32fMU68x8a6zvxtC1IC/BhPDKTh8rQjdmwEplj3CDpnkcwBzZVN9v/8cK0LJqQ0FOQQVZW8BWZ1S6UU53TYR4w== + version "3.2.10" + resolved "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz" + integrity sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw== dependencies: - chromium-pickle-js "^0.2.0" commander "^5.0.0" glob "^7.1.6" minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" "@electron/get@^1.13.0": version "1.14.1" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" + resolved "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz" integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== dependencies: debug "^4.1.1" @@ -270,9 +253,9 @@ global-tunnel-ng "^2.7.1" "@electron/get@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e" - integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g== + version "2.0.3" + resolved "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz" + integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== dependencies: debug "^4.1.1" env-paths "^2.2.0" @@ -285,17 +268,17 @@ global-agent "^3.0.0" "@electron/notarize@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-1.2.3.tgz#38056a629e5a0b5fd56c975c4828c0f74285b644" - integrity sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ== + version "1.2.4" + resolved "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz" + integrity sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg== dependencies: debug "^4.1.1" fs-extra "^9.0.1" -"@electron/osx-sign@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.1.tgz#ab4fceded7fed9f2f18c25650f46c1e3a6f17054" - integrity sha512-WkUcva+qkt809bI6uxxEG/uOWfl8HAw0m8aPijpKmGMIpZ1CWWB808YG6aY3wckUO86xZdmiOsUJTM4keLhY8A== +"@electron/osx-sign@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz" + integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== dependencies: compare-version "^0.1.2" debug "^4.3.4" @@ -305,9 +288,9 @@ plist "^3.0.5" "@electron/rebuild@^3.2.10": - version "3.2.10" - resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.2.10.tgz#adc9443179709d4e4b93a68fac6a08b9a3b9e5e6" - integrity sha512-SUBM6Mwi3yZaDFQjZzfGKpYTtOp9m60glounwX6tfGeVc/ZOl4jbquktUcyy7gYSLDWFLtKkftkY2xgMJZLQgg== + version "3.6.0" + resolved "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz" + integrity sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw== dependencies: "@malept/cross-spawn-promise" "^2.0.0" chalk "^4.0.0" @@ -315,31 +298,42 @@ detect-libc "^2.0.1" fs-extra "^10.0.0" got "^11.7.0" - lzma-native "^8.0.5" - node-abi "^3.0.0" - node-api-version "^0.1.4" + node-abi "^3.45.0" + node-api-version "^0.2.0" node-gyp "^9.0.0" ora "^5.1.0" + read-binary-file-arch "^1.0.6" semver "^7.3.5" tar "^6.0.5" yargs "^17.0.1" "@electron/universal@^1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.3.3.tgz#f22088dce7f2e808130fd1bbcd43925246adfa59" - integrity sha512-79yc61D5QWaQpia+sLQbIIi5iVoV4y9HtgOTlE0fYT0xoyg+ChwndBl4a0Q7yJfDsqq+/nLEPE655F0bTpDiCg== + version "1.5.1" + resolved "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz" + integrity sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw== dependencies: "@electron/asar" "^3.2.1" "@malept/cross-spawn-promise" "^1.1.0" debug "^4.3.1" - dir-compare "^2.4.0" + dir-compare "^3.0.0" fs-extra "^9.0.1" minimatch "^3.0.4" plist "^3.0.4" +"@electron/windows-sign@^1.1.2": + version "1.1.3" + resolved "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.1.3.tgz" + integrity sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw== + dependencies: + cross-dirname "^0.1.0" + debug "^4.3.4" + fs-extra "^11.1.1" + minimist "^1.2.8" + postject "^1.0.0-alpha.6" + "@eslint/eslintrc@^0.4.3": version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" @@ -353,18 +347,18 @@ strip-json-comments "^3.1.1" "@fortawesome/fontawesome-free@^6.1.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz#344baf6ff9eaad7a73cff067d8c56bfc11ae5304" - integrity sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A== + version "6.6.0" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz" + integrity sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow== "@gar/promisify@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@humanwhocodes/config-array@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: "@humanwhocodes/object-schema" "^1.2.0" @@ -373,39 +367,39 @@ "@humanwhocodes/object-schema@^1.2.0": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@malept/cross-spawn-promise@^1.0.0", "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" + resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== dependencies: cross-spawn "^7.0.1" "@malept/cross-spawn-promise@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" + resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz" integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== dependencies: cross-spawn "^7.0.1" "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -413,7 +407,7 @@ "@npmcli/fs@^2.1.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: "@gar/promisify" "^1.1.3" @@ -421,7 +415,7 @@ "@npmcli/move-file@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" @@ -429,36 +423,36 @@ "@sindresorhus/is@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@szmarczak/http-timer@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -468,68 +462,70 @@ "@types/fs-extra@^9.0.1": version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" "@types/glob@^7.1.1": version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.4" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== "@types/json-schema@^7.0.7": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" "@types/minimatch@*": version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": - version "18.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" - integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== + version "20.12.10" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz" + integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw== + dependencies: + undici-types "~5.26.4" "@types/node@^16.11.26": - version "16.18.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.3.tgz#d7f7ba828ad9e540270f01ce00d391c54e6e0abc" - integrity sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg== + version "16.18.106" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.106.tgz" + integrity sha512-YTgQUcpdXRc7iiEMutkkXl9WUx5lGUCVYvnfRg9CV+IA4l9epctEhCTbaw4KgzXaKYv8emvFJkEM65+MkNUhsQ== "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + version "1.0.3" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== dependencies: "@types/node" "*" "@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + version "2.10.3" + resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^4.29.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== dependencies: "@typescript-eslint/experimental-utils" "4.33.0" @@ -543,7 +539,7 @@ "@typescript-eslint/experimental-utils@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== dependencies: "@types/json-schema" "^7.0.7" @@ -553,9 +549,9 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.29.0": +"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.29.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== dependencies: "@typescript-eslint/scope-manager" "4.33.0" @@ -565,7 +561,7 @@ "@typescript-eslint/scope-manager@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== dependencies: "@typescript-eslint/types" "4.33.0" @@ -573,12 +569,12 @@ "@typescript-eslint/types@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: "@typescript-eslint/types" "4.33.0" @@ -591,46 +587,54 @@ "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-jsx@^5.3.1: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^7.4.0: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -agent-base@6, agent-base@^6.0.2: +agent-base@^6.0.2, agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + version "4.5.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^1.1.2" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -638,7 +642,7 @@ aggregate-error@^3.0.0: ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -647,49 +651,49 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" - integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" appdmg@^0.6.4: version "0.6.6" - resolved "https://registry.yarnpkg.com/appdmg/-/appdmg-0.6.6.tgz#d06bd82b530032fd7a8f0970a1c6ee6196e1efce" + resolved "https://registry.npmjs.org/appdmg/-/appdmg-0.6.6.tgz" integrity sha512-GRmFKlCG+PWbcYF4LUNonTYmy0GjguDy6Jh9WP8mpd0T6j80XIJyXBiWlD0U+MLNhqV9Nhx49Gl9GpVToulpLg== dependencies: async "^1.4.2" @@ -706,12 +710,12 @@ appdmg@^0.6.4: "aproba@^1.0.3 || ^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" @@ -719,19 +723,19 @@ are-we-there-yet@^3.0.0: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== asar@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" + resolved "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz" integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== dependencies: chromium-pickle-js "^0.2.0" @@ -743,44 +747,44 @@ asar@^3.0.0: astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async@^1.4.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== author-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" + resolved "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz" integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== "base32-encode@^0.1.0 || ^1.0.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453" + resolved "https://registry.npmjs.org/base32-encode/-/base32-encode-1.2.0.tgz" integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A== dependencies: to-data-view "^1.1.0" base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -789,24 +793,24 @@ bl@^4.1.0: bluebird@^3.1.1: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== boolean@^3.0.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== bplist-creator@~0.0.3: version "0.0.8" - resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" + resolved "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz" integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA== dependencies: stream-buffers "~2.2.0" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -814,36 +818,36 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== +buffer-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -851,7 +855,7 @@ buffer@^5.5.0: cacache@^16.1.0: version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" @@ -875,12 +879,12 @@ cacache@^16.1.0: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" @@ -892,9 +896,9 @@ cacheable-request@^6.0.0: responselike "^1.0.2" cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + version "7.0.4" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" @@ -906,17 +910,12 @@ cacheable-request@^7.0.2: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@^2.0.0: +chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -925,7 +924,7 @@ chalk@^2.0.0: chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -933,51 +932,42 @@ chalk@^4.0.0, chalk@^4.1.0: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chromium-pickle-js@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + resolved "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" string-width "^4.2.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -986,7 +976,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -995,90 +985,83 @@ cliui@^8.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-convert@~0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" integrity sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling== -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== colorette@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== commander@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^9.4.0: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + compare-version@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.6.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -1088,7 +1071,7 @@ concat-stream@^1.6.2: config-chain@^1.1.11: version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" @@ -1096,26 +1079,42 @@ config-chain@^1.1.11: console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +cross-dirname@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz" + integrity sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q== cross-spawn-windows-exe@^1.1.0, cross-spawn-windows-exe@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz#46253b0f497676e766faf4a7061004618b5ac5ec" + resolved "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz" integrity sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw== dependencies: "@malept/cross-spawn-promise" "^1.1.0" is-wsl "^2.2.0" which "^2.0.2" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -1126,7 +1125,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -1134,132 +1133,130 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2: which "^2.0.1" cross-zip@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-4.0.0.tgz#c29bfb2c001659a6d480ae9596f3bee83b48a230" - integrity sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA== + version "4.0.1" + resolved "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.1.tgz" + integrity sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ== -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "2.1.2" + ms "2.0.0" -debug@^2.2.0, debug@^2.6.9: +debug@^2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + ms "2.1.2" decompress-response@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" defer-to-connect@^1.0.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-properties@^1.1.3: +define-data-property@^1.0.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - detect-libc@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + version "2.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== +dir-compare@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz" + integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" + buffer-equal "^1.0.0" + minimatch "^3.0.4" dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dotenv@^16.3.1: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + version "16.4.5" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== ds-store@^0.1.5: version "0.1.6" - resolved "https://registry.yarnpkg.com/ds-store/-/ds-store-0.1.6.tgz#d1024ef746ed0c13f0f7fec85c7e858e8c4b7ca7" + resolved "https://registry.npmjs.org/ds-store/-/ds-store-0.1.6.tgz" integrity sha512-kY21M6Lz+76OS3bnCzjdsJSF7LBpLYGCVfavW8TgQD2XkcqIZ86W0y9qUDZu6fp7SIZzqosMDW2zi7zVFfv4hw== dependencies: bplist-creator "~0.0.3" @@ -1268,12 +1265,12 @@ ds-store@^0.1.5: duplexer3@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== electron-installer-common@^0.10.2: version "0.10.3" - resolved "https://registry.yarnpkg.com/electron-installer-common/-/electron-installer-common-0.10.3.tgz#40f9db644ca60eb28673d545b67ee0113aef4444" + resolved "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.3.tgz" integrity sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA== dependencies: "@malept/cross-spawn-promise" "^1.0.0" @@ -1288,10 +1285,10 @@ electron-installer-common@^0.10.2: optionalDependencies: "@types/fs-extra" "^9.0.1" -electron-installer-debian@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/electron-installer-debian/-/electron-installer-debian-3.1.0.tgz#2f6107f559f6564c44e3832fb2942dd8de4d40cc" - integrity sha512-k6KChvx0Fw8XTlCqwwbBfh19yGQaKjGdbugokmr1IpzINOm4QFyACKMTHAYFHW5LCBUZQShZD96hwxUZ+8Kx+w== +electron-installer-debian@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz" + integrity sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw== dependencies: "@malept/cross-spawn-promise" "^1.0.0" debug "^4.1.1" @@ -1300,11 +1297,11 @@ electron-installer-debian@^3.0.0: get-folder-size "^2.0.1" lodash "^4.17.4" word-wrap "^1.2.3" - yargs "^15.0.1" + yargs "^16.0.2" electron-installer-dmg@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/electron-installer-dmg/-/electron-installer-dmg-4.0.0.tgz#0520bcc8a928e559b3f16fc5cbc12b182a66ea1c" + resolved "https://registry.npmjs.org/electron-installer-dmg/-/electron-installer-dmg-4.0.0.tgz" integrity sha512-g3W6XnyUa7QGrAF7ViewHdt6bXV2KYU1Pm1CY3pZpp+H6mOjCHHAhf/iZAxtaX1ERCb+SQHz7xSsAHuNH9I8ZQ== dependencies: debug "^4.3.2" @@ -1313,9 +1310,9 @@ electron-installer-dmg@^4.0.0: appdmg "^0.6.4" electron-installer-redhat@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/electron-installer-redhat/-/electron-installer-redhat-3.3.0.tgz#acdb59d13d738c55debc5214114d36096eda1aed" - integrity sha512-hXIXB3uQXmXZy/v3MpbwWN4Of28ALpPt9ZyUDNEoSe0w7QZceL9IqI2K6Q6imiBJCLRC0hmT94WhlKj1RyGOWg== + version "3.4.0" + resolved "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz" + integrity sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw== dependencies: "@malept/cross-spawn-promise" "^1.0.0" debug "^4.1.1" @@ -1325,22 +1322,22 @@ electron-installer-redhat@^3.2.0: word-wrap "^1.2.3" yargs "^16.0.2" -electron-packager@^17.1.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-17.1.1.tgz#f156fc63d3a66f4e902e4b42992550a172982d59" - integrity sha512-r1NDtlajsq7gf2EXgjRfblCVPquvD2yeg+6XGErOKblvxOpDi0iulZLVhgYDP4AEF1P5/HgbX/vwjlkEv7PEIQ== +electron-packager@^17.1.2: + version "17.1.2" + resolved "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz" + integrity sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw== dependencies: "@electron/asar" "^3.2.1" "@electron/get" "^2.0.0" "@electron/notarize" "^1.2.3" - "@electron/osx-sign" "^1.0.1" + "@electron/osx-sign" "^1.0.5" "@electron/universal" "^1.3.2" cross-spawn-windows-exe "^1.2.0" debug "^4.0.1" extract-zip "^2.0.0" filenamify "^4.1.0" - fs-extra "^10.1.0" - galactus "^0.2.1" + fs-extra "^11.1.0" + galactus "^1.0.0" get-package-info "^1.0.0" junk "^3.1.0" parse-author "^2.0.0" @@ -1351,19 +1348,21 @@ electron-packager@^17.1.1: yargs-parser "^21.1.1" electron-winstaller@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/electron-winstaller/-/electron-winstaller-5.1.0.tgz#528ed08a65858dd678d9178e8ae24f82a4e12271" - integrity sha512-4wlZzkUm5cJNiOtp5wL804+QpygdKTKkrZJXA3sSDEI2XnCVPv0kxmxUvVw4KHBwbNS+Yox89agEr+VkR7kxww== + version "5.4.0" + resolved "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz" + integrity sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg== dependencies: "@electron/asar" "^3.2.1" debug "^4.1.1" fs-extra "^7.0.1" - lodash.template "^4.2.2" + lodash "^4.17.21" temp "^0.9.0" + optionalDependencies: + "@electron/windows-sign" "^1.1.2" electron@18.1.0: version "18.1.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-18.1.0.tgz#d92b76f301af1a8728adff8d6eeb42382e218fe8" + resolved "https://registry.npmjs.org/electron/-/electron-18.1.0.tgz" integrity sha512-P55wdHNTRMo7a/agC84ZEZDYEK/pTBcQdlp8lFbHcx3mO4Kr+Im/J5p2uQgiuXtown31HqNh2paL3V0p+E6rpQ== dependencies: "@electron/get" "^1.13.0" @@ -1372,80 +1371,98 @@ electron@18.1.0: emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encode-utf8@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + resolved "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== encodeurl@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: +encoding@^0.1.0, encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== +enquirer@^2.3.5, "enquirer@>= 2.3.0 < 3": + version "2.4.1" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" + strip-ansi "^6.0.1" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es6-error@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -1453,31 +1470,36 @@ eslint-scope@^5.1.1: eslint-utils@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^7.32.0: +eslint@*, "eslint@^5.0.0 || ^6.0.0 || ^7.0.0", eslint@^7.32.0, eslint@>=5: version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: "@babel/code-frame" "7.12.11" @@ -1523,7 +1545,7 @@ eslint@^7.32.0: espree@^7.3.0, espree@^7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" @@ -1532,41 +1554,46 @@ espree@^7.3.0, espree@^7.3.1: esprima@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== execa@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" @@ -1579,14 +1606,19 @@ execa@^1.0.0: expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== dependencies: homedir-polyfill "^1.0.1" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + extract-zip@^1.0.3: version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: concat-stream "^1.6.2" @@ -1596,7 +1628,7 @@ extract-zip@^1.0.3: extract-zip@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" @@ -1607,13 +1639,13 @@ extract-zip@^2.0.0: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -1623,66 +1655,71 @@ fast-glob@^3.2.7, fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.17.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" filename-reserved-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + resolved "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz" integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== filenamify@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" + resolved "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz" integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== dependencies: filename-reserved-regex "^2.0.0" strip-outer "^1.0.1" trim-repeated "^1.0.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" find-up@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -1690,61 +1727,80 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -flora-colossus@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-1.0.1.tgz#aba198425a8185341e64f9d2a6a96fd9a3cbdb93" - integrity sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA== +flora-colossus@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz" + integrity sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA== dependencies: - debug "^4.1.1" - fs-extra "^7.0.0" + debug "^4.3.4" + fs-extra "^10.1.0" fmix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" + resolved "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz" integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== dependencies: imul "^1.0.0" -fs-extra@^10.0.0, fs-extra@^10.1.0: +fs-extra@^10.0.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -fs-extra@^7.0.0, fs-extra@^7.0.1: +fs-extra@^11.1.0: + version "11.2.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -1753,16 +1809,26 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -1772,55 +1838,55 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs-temp@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/fs-temp/-/fs-temp-1.2.1.tgz#ffd136ef468177accc3c267d4510f6ce3b2b9697" + resolved "https://registry.npmjs.org/fs-temp/-/fs-temp-1.2.1.tgz" integrity sha512-okTwLB7/Qsq82G6iN5zZJFsOfZtx2/pqrA7Hk/9fvy+c+eJS9CvgGXT2uNxwnI14BDY9L/jQPkaBgSvlKfSW9w== dependencies: random-path "^0.1.0" fs-xattr@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/fs-xattr/-/fs-xattr-0.3.1.tgz#a23d88571031f6c56f26d59e0bab7d2e12f49f77" + resolved "https://registry.npmjs.org/fs-xattr/-/fs-xattr-0.3.1.tgz" integrity sha512-UVqkrEW0GfDabw4C3HOrFlxKfx0eeigfRne69FxSBdHIP8Qt5Sq6Pu3RM9KmMlkygtC4pPKkj5CiPO5USnj2GA== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -galactus@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/galactus/-/galactus-0.2.1.tgz#cbed2d20a40c1f5679a35908e2b9415733e78db9" - integrity sha512-mDc8EQJKtxjp9PMYS3PbpjjbX3oXhBTxoGaPahw620XZBIHJ4+nvw5KN/tRtmmSDR9dypstGNvqQ3C29QGoGHQ== +galactus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz" + integrity sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ== dependencies: - debug "^3.1.0" - flora-colossus "^1.0.0" - fs-extra "^4.0.0" + debug "^4.3.4" + flora-colossus "^2.0.0" + fs-extra "^10.1.0" gar@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8" + resolved "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz" integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w== gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -1834,26 +1900,26 @@ gauge@^4.0.3: generate-function@^2.0.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== dependencies: is-property "^1.0.2" generate-object-property@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + resolved "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== dependencies: is-property "^1.0.0" -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-folder-size@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/get-folder-size/-/get-folder-size-2.0.1.tgz#3fe0524dd3bad05257ef1311331417bcd020a497" + resolved "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz" integrity sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA== dependencies: gar "^1.0.4" @@ -1861,23 +1927,25 @@ get-folder-size@^2.0.1: get-installed-path@^2.0.3: version "2.1.1" - resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152" + resolved "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz" integrity sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA== dependencies: global-modules "1.0.0" -get-intrinsic@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-info@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-package-info/-/get-package-info-1.0.0.tgz#6432796563e28113cd9474dbbd00052985a4999c" + resolved "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz" integrity sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw== dependencies: bluebird "^3.1.1" @@ -1885,30 +1953,37 @@ get-package-info@^1.0.0: lodash.get "^4.0.0" read-pkg-up "^2.0.0" -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" glob-parent@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -1919,9 +1994,9 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: path-is-absolute "^1.0.0" glob@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1931,7 +2006,7 @@ glob@^8.0.1: global-agent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + resolved "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== dependencies: boolean "^3.0.1" @@ -1941,9 +2016,9 @@ global-agent@^3.0.0: semver "^7.3.2" serialize-error "^7.0.1" -global-modules@1.0.0, global-modules@^1.0.0: +global-modules@^1.0.0, global-modules@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" @@ -1952,7 +2027,7 @@ global-modules@1.0.0, global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== dependencies: expand-tilde "^2.0.2" @@ -1963,7 +2038,7 @@ global-prefix@^1.0.1: global-tunnel-ng@^2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" + resolved "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== dependencies: encodeurl "^1.0.2" @@ -1971,23 +2046,31 @@ global-tunnel-ng@^2.7.1: npm-conf "^1.1.3" tunnel "^0.0.6" -globals@^13.6.0, globals@^13.9.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.6.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^13.9.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" globalthis@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.0.3: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -1997,10 +2080,17 @@ globby@^11.0.3: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@^11.7.0, got@^11.8.5: - version "11.8.5" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" - integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== + version "11.8.6" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" @@ -2016,7 +2106,7 @@ got@^11.7.0, got@^11.8.5: got@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" @@ -2032,69 +2122,69 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.1.1" + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" homedir-polyfill@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -2103,7 +2193,7 @@ http-proxy-agent@^5.0.0: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -2111,7 +2201,7 @@ http2-wrapper@^1.0.0-beta.5.2: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -2119,41 +2209,41 @@ https-proxy-agent@^5.0.0: humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" ieee754@^1.1.13: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== image-size@^0.7.4: version "0.7.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz" integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -2161,104 +2251,107 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imul@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" + resolved "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz" integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== interpret@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-docker@^2.0.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-my-ip-valid@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz#f7220d1146257c98672e6fba097a9f3f2d348442" + resolved "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz" integrity sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg== is-my-json-valid@^2.20.0: version "2.20.6" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387" + resolved "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz" integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw== dependencies: generate-function "^2.0.0" @@ -2269,104 +2362,109 @@ is-my-json-valid@^2.20.0: is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-property@^1.0.0, is-property@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-windows@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isbinaryfile@^4.0.8: version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -2375,53 +2473,53 @@ jsonfile@^6.0.1: jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== junk@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + resolved "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== keyv@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" type-check "~0.4.0" listr2@^5.0.3: - version "5.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.5.tgz#4651a940d12b984abecfae4450e40edd5695f808" - integrity sha512-DpBel6fczu7oQKTXMekeprc0o3XDgGMkD7JNYyX+X0xbwK+xgrx9dcyKoXKqpLSUvAWfmoePS7kavniOcq3r4w== + version "5.0.8" + resolved "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz" + integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== dependencies: cli-truncate "^2.1.0" colorette "^2.0.19" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.6" + rxjs "^7.8.0" through "^2.3.8" wrap-ansi "^7.0.0" load-json-file@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz" integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== dependencies: graceful-fs "^4.1.2" @@ -2431,7 +2529,7 @@ load-json-file@^2.0.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" @@ -2439,61 +2537,41 @@ locate-path@^2.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== - lodash.get@^4.0.0: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.template@^4.2.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.truncate@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4: +lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -2501,7 +2579,7 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: log-update@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -2509,47 +2587,36 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: +lowercase-keys@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - lru-cache@^7.7.1: - version "7.14.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" - integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== - -lzma-native@^8.0.5: - version "8.0.6" - resolved "https://registry.yarnpkg.com/lzma-native/-/lzma-native-8.0.6.tgz#3ea456209d643bafd9b5d911781bdf0b396b2665" - integrity sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA== - dependencies: - node-addon-api "^3.1.0" - node-gyp-build "^4.2.1" - readable-stream "^3.6.0" + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== macos-alias@~0.2.5: version "0.2.11" - resolved "https://registry.yarnpkg.com/macos-alias/-/macos-alias-0.2.11.tgz#feeea6c13ba119814a43fc43c470b31e59ef718a" + resolved "https://registry.npmjs.org/macos-alias/-/macos-alias-0.2.11.tgz" integrity sha512-zIUs3+qpml+w3wiRuADutd7XIO8UABqksot10Utl/tji4UxZzLG4fWDC+yJZoO8/Ehg5RqsvSRE/6TS5AEOeWw== dependencies: nan "^2.4.0" make-fetch-happen@^10.0.3: version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" @@ -2571,21 +2638,21 @@ make-fetch-happen@^10.0.3: map-age-cleaner@^0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" matcher@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: escape-string-regexp "^4.0.0" mem@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + resolved "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: map-age-cleaner "^0.1.1" @@ -2594,73 +2661,73 @@ mem@^4.3.0: merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" picomatch "^2.3.1" -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@^1.1.1, minimist@^1.1.3: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^2.0.3: version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: minipass "^3.1.6" @@ -2671,35 +2738,54 @@ minipass-fetch@^2.0.3: minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^3.1.1: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" +minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -2707,34 +2793,34 @@ minizlib@^2.1.1, minizlib@^2.1.2: mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.1.2: +ms@^2.0.0, ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== "murmur-32@^0.1.0 || ^0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/murmur-32/-/murmur-32-0.2.0.tgz#bf42b7567880db13cd92ca0c2c72eeea884f44c7" + resolved "https://registry.npmjs.org/murmur-32/-/murmur-32-0.2.0.tgz" integrity sha512-ZkcWZudylwF+ir3Ld1n7gL6bI2mQAzXvSobPwVtu8aYi2sbXeipeSkdcanRLzIofLcM5F53lGaKm2dk7orBi7Q== dependencies: encode-utf8 "^1.0.3" @@ -2742,69 +2828,53 @@ ms@^2.0.0, ms@^2.1.1: imul "^1.0.0" nan@^2.4.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + version "2.20.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-abi@^3.0.0: - version "3.28.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.28.0.tgz#b0df8b317e1c4f2f323756c5fc8ffccc5bca4718" - integrity sha512-fRlDb4I0eLcQeUvGq7IY3xHrSb0c9ummdvDSYWfT9+LKP+3jCKw/tKoqaM7r1BAoiAC6GtwyjaGnOz6B3OtF+A== +node-abi@^3.45.0: + version "3.67.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz" + integrity sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw== dependencies: semver "^7.3.5" -node-addon-api@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-api-version@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080" - integrity sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g== +node-api-version@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz" + integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg== dependencies: semver "^7.3.5" -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@v2: +node-fetch@^2.6.7, node-fetch@v2: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-gyp-build@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== - node-gyp@^9.0.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.0.tgz#f8eefe77f0ad8edb3b3b898409b53e697642b319" - integrity sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q== + version "9.4.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== dependencies: env-paths "^2.2.0" + exponential-backoff "^3.1.1" glob "^7.1.4" graceful-fs "^4.2.6" make-fetch-happen "^10.0.3" @@ -2817,14 +2887,14 @@ node-gyp@^9.0.0: nopt@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" normalize-package-data@^2.3.2: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -2834,17 +2904,17 @@ normalize-package-data@^2.3.2: normalize-url@^4.1.0: version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-conf@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== dependencies: config-chain "^1.1.11" @@ -2852,14 +2922,14 @@ npm-conf@^1.1.3: npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" npmlog@^6.0.0: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -2869,38 +2939,38 @@ npmlog@^6.0.0: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + word-wrap "^1.2.5" ora@^5.1.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -2915,231 +2985,244 @@ ora@^5.1.0: p-cancelable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-defer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-is-promise@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-author@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" + resolved "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz" integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw== dependencies: author-regex "^1.0.0" parse-color@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" + resolved "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz" integrity sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw== dependencies: color-convert "~0.5.0" parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" parse-passwd@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== dependencies: pify "^2.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" plist@^3.0.0, plist@^3.0.4, plist@^3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== + version "3.1.0" + resolved "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== dependencies: + "@xmldom/xmldom" "^0.8.8" base64-js "^1.5.1" xmlbuilder "^15.1.1" +postject@^1.0.0-alpha.6: + version "1.0.0-alpha.6" + resolved "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz" + integrity sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A== + dependencies: + commander "^9.4.0" + prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prepend-http@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== progress@^2.0.0, progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -3147,55 +3230,62 @@ promise-retry@^2.0.1: proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== python-shell@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" + resolved "https://registry.npmjs.org/python-shell/-/python-shell-3.0.1.tgz" integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== random-path@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/random-path/-/random-path-0.1.2.tgz#78b7f1570e2a09f66a4e2e0113a98ed588e85da9" + resolved "https://registry.npmjs.org/random-path/-/random-path-0.1.2.tgz" integrity sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw== dependencies: base32-encode "^0.1.0 || ^1.0.0" murmur-32 "^0.1.0 || ^0.2.0" rcedit@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-3.0.1.tgz#ae21b43e49c075f4d84df1929832a12c302f3c90" - integrity sha512-XM0Jv40/y4hVAqj/MO70o/IWs4uOsaSoo2mLyk3klFDW+SStLnCtzuQu+1OBTIMGlM8CvaK9ftlYCp6DJ+cMsw== + version "3.1.0" + resolved "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz" + integrity sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA== dependencies: cross-spawn-windows-exe "^1.1.0" +read-binary-file-arch@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz" + integrity sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg== + dependencies: + debug "^4.3.4" + read-pkg-up@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz" integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== dependencies: find-up "^2.0.0" @@ -3203,7 +3293,7 @@ read-pkg-up@^2.0.0: read-pkg@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== dependencies: load-json-file "^2.0.0" @@ -3211,9 +3301,9 @@ read-pkg@^2.0.0: path-type "^2.0.0" readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -3224,9 +3314,9 @@ readable-stream@^2.2.2: util-deprecate "~1.0.1" readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -3234,44 +3324,39 @@ readable-stream@^3.4.0, readable-stream@^3.6.0: rechoir@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: resolve "^1.20.0" regexpp@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== repeat-string@^1.5.4: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - resolve-alpn@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-dir@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== dependencies: expand-tilde "^2.0.0" @@ -3279,42 +3364,42 @@ resolve-dir@^1.0.0: resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-package@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-package/-/resolve-package-1.0.1.tgz#686f70b188bd7d675f5bbc4282ccda060abb9d27" + resolved "https://registry.npmjs.org/resolve-package/-/resolve-package-1.0.1.tgz" integrity sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g== dependencies: get-installed-path "^2.0.3" resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" responselike@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -3322,36 +3407,36 @@ restore-cursor@^3.1.0: retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.4.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rimraf@~2.6.2: version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" roarr@^2.15.3: version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== dependencies: boolean "^3.0.1" @@ -3363,111 +3448,107 @@ roarr@^2.15.3: run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" -rxjs@^7.5.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== +rxjs@^7.8.0: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" +semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.5.4: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== serialize-error@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== dependencies: type-fest "^0.13.1" set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -3476,7 +3557,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -3485,12 +3566,12 @@ slice-ansi@^4.0.0: smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== socks-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" @@ -3498,16 +3579,16 @@ socks-proxy-agent@^7.0.0: socks "^2.6.2" socks@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + version "2.8.3" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== dependencies: - ip "^2.0.0" + ip-address "^9.0.5" smart-buffer "^4.2.0" source-map-support@^0.5.13: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -3515,144 +3596,144 @@ source-map-support@^0.5.13: source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.20" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== +sprintf-js@^1.1.2, sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== dependencies: minipass "^3.1.1" stream-buffers@~2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + resolved "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-outer@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + resolved "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz" integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== dependencies: escape-string-regexp "^1.0.2" sudo-prompt@^9.1.1: version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== sumchecker@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== dependencies: debug "^4.1.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== table@^6.0.9: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + version "6.8.2" + resolved "https://registry.npmjs.org/table/-/table-6.8.2.tgz" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -3661,20 +3742,20 @@ table@^6.0.9: strip-ansi "^6.0.1" tar@^6.0.5, tar@^6.1.11, tar@^6.1.2: - version "6.1.12" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.12.tgz#3b742fb05669b55671fb769ab67a7791ea1a62e6" - integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw== + version "6.2.1" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" temp@^0.9.0: version "0.9.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620" + resolved "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz" integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== dependencies: mkdirp "^0.5.1" @@ -3682,169 +3763,172 @@ temp@^0.9.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== through@^2.3.8: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-each-async@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1" + resolved "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz" integrity sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA== tmp-promise@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" + version "0.2.3" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tn1150@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/tn1150/-/tn1150-0.1.0.tgz#673503d24d56b87de8b8c77fee3fc0853d59a18d" + resolved "https://registry.npmjs.org/tn1150/-/tn1150-0.1.0.tgz" integrity sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w== dependencies: unorm "^1.4.1" to-data-view@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" + resolved "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz" integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ== to-readable-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== trim-repeated@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + resolved "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz" integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== dependencies: escape-string-regexp "^1.0.2" tslib@^1.8.1: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tunnel@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.6.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" - integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== +typescript@^4.6.3, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unique-filename@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: unique-slug "^3.0.0" unique-slug@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== dependencies: imurmurhash "^0.1.4" universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unorm@^1.4.1: version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz" integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-parse-lax@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" username@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/username/-/username-5.1.0.tgz#a7f9325adce2d0166448cdd55d4985b1360f2508" + resolved "https://registry.npmjs.org/username/-/username-5.1.0.tgz" integrity sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg== dependencies: execa "^1.0.0" @@ -3852,17 +3936,17 @@ username@^5.1.0: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + version "2.4.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== validate-npm-package-license@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -3870,58 +3954,60 @@ validate-npm-package-license@^3.0.1: wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== +which@^1.2.14: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" -which@^1.2.14, which@^1.2.9: +which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +word-wrap@^1.2.3, word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -3930,7 +4016,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -3939,72 +4025,42 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== xmlbuilder@^15.1.1: version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^15.0.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.0.2: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -4016,9 +4072,9 @@ yargs@^16.0.2: yargs-parser "^20.2.2" yargs@^17.0.1: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -4030,7 +4086,7 @@ yargs@^17.0.1: yarn-or-npm@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666" + resolved "https://registry.npmjs.org/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz" integrity sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ== dependencies: cross-spawn "^6.0.5" @@ -4038,7 +4094,7 @@ yarn-or-npm@^3.0.1: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" @@ -4046,5 +4102,5 @@ yauzl@^2.10.0: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 86afe04f0918fc99c581c70b4d0c9dcb7e6da7a9 Mon Sep 17 00:00:00 2001 From: Alec Date: Wed, 4 Sep 2024 17:44:19 -0700 Subject: [PATCH 2/3] add eccentricity --- docs/belljar_guide.pdf | Bin 1720092 -> 3176205 bytes js/detect.js | 222 +++++++++++++++++++----------------- main.js | 12 +- pages/detect.html | 100 ++++++++++------- py/demons.py | 34 +++--- py/find_neurons.py | 74 +++++++++++- py/preprocessing.py | 250 ----------------------------------------- py/requirements.txt | 2 +- py/slice_atlas.py | 1 - src/main.ts | 30 ++--- 10 files changed, 292 insertions(+), 433 deletions(-) delete mode 100644 py/preprocessing.py diff --git a/docs/belljar_guide.pdf b/docs/belljar_guide.pdf index dd587086c12e1bb7339a7027491115a4a5d15403..7c754b4a162715f8c21792cc8d646fd244110889 100644 GIT binary patch literal 3176205 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

673mt`X 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�l{E#&>@*Z}FaZgYW$Cxko?yrB(YLG3N`-o5X+j zr{{4Cvv*&D3OM@sw_zS;?z-r~Pkrty-}pX7IWN2VCPc*IJ@y$pY3BSTdp-5lZ{r7) z?V!Vt{mmc#?UH2dJmeaxyRA_;+%~(8X=8~TH0XQ!FfJeZd9ec&V3iGRP{^-ws^T)H!zjWaq ztJWWJ>@(l^9yValH3zWZ3NF9y7My^(-}}&~zw_f?9B|mt$DH)`4_$ioVaJ@v|HQYy z`-ji{_O_4Qzi7oiXPkGj_JQt^0CN{Ehx#?+C0F0L$3E*;?sw25kALA?Km57q$G`0~ zcHF|^Jy)+-z5m%4Tz2w1--}*2>D1GI{m1`!-#Hi1>+ctA5%TxRp(lPIQnggZI+b0oMo*9C7F6fOu#lNFB=!hvsu)nYtjun7bK$*e^@#UnKv!j~M za!$7}Q`78j{_N+d=v_qm@?!Kf!EDo{6g;;a(XLWCq}VAQJ#CvPi6z`|#~n>dJx=oE z!Zg*iM05|iq+s4#>MI@2sg&wS1ok&|A*Qt+g+TG1`+H0eL9hq5~?RXq!zT`>0 zbpm;g4`KuU@Vlq~o(h=(axkqjVKd`0i9#1h#5{@v6wfE~Lli_5Ge#3F(?$N7j8ROk zOtCWSLlkh9lu4tB8C@>YR8+Cd)-pYl2nR(KdPJp2));uN!9oSA3vdyb1d9Q(#y}Li z7z1^*NI+fC2*?3Uf+%;cc9DU?}*6J(B) z>kOtFXj^)KOz9yx`*BO-Yk#N4l8n4@pf{F2S?34(K4GrM_?u{fTvoZ~X6#K^t}lv< zj>M9|w##*A40IE5#ku-mGzN5)y17C;!fn|3oe6=89Rr-(|cKe#*8@&o!9egG98%H0i` zqKoFz)wg?n4R4tr=+`u&fAh$O#`c!h&H;l4H~1^_K|@-ah7KC!4Tzy5#?GBQW9gJ> z3#LwAIBEKBlV|wgUJb&n(aV$ZC}sVCC-oKv;0H#HpXLGmx4!=~Fdx3&b-{9kz$1@+ zo}KQI{YUP57(AaadDaCNU-kPxKL5bOpSkVMdv3V-uCIOL`+xk`=hq){)a+ds{qi?| zy5{=Z#!Z|tbIt;ujv^lbdC&cA`yO~W?2iFB>bSQeB91xX6f}Z$0+LmRkKX@?-M7B; z^gsTG?-L#}Zpw_sD^|Yi{byZ&>zyC_#KT|t=6ApMljn9{>|+HpF23?w`kt%zqbse| z0?M|_=t*yT=ld)(IQGQ1qZA}%<-m`A{@c(6=mpCR#!a3zan^2g7A^nY&wg{!RX2{G zzU$bjb9}MT{})vM!eD;op>1ijE%5^tW?=21l_lb<)>}fbc(47hxZ%SXi6f7F%d)-J z%H7HboW|a34h->vW4Zg@hZGf|VQs@Hr@epSvX$?A&skU$s~tFNlMmnXAS3RDj@gii z*1Pqtd#&qu?1`tX%5aWUMD*iNekT^i0tq<^FTdtyNiABwYOmD?V0bv3aqdMNkQhoR z^r$*(9ztvM2^80zOAFNU1JQHH`T+!yKd@M|=emQAILXI6-*@(0xbk*p$^y?AW(`vWaQ#|~`n zuzsNO7Y41vrjPBII(qO zF+JeyfxA}&yanJvxdrwfsaq8Q1q0FR)~&NJz_dq#mIRz|!U^~R>j&fo^6y<0b3fA| zqRggPLQ^}_Jf$M0g(gmlgdec0YUXK~dI`-o&D>0-getDgqD#v3EbYMAfrSKKYB>J*<1KFh{Ba9d0-s0l zngjL#UEuQt-b(O|1^=y(R~~%Cz^)e@@DE58oC8h<(9nNs`-ao4Be87k8kJv0=bD}3 zTsSo%q6nNIyUuTVV|LRaH{Y?hc+`21j~shF|ExRKTVQ)^fm(i`cBIv}i@3^is9bKY zxNrh4C|8yt)J2!~2#k=H0Su}N)NjlTKY$#dGh+j4h0$mnLckDeVLuocXlckYUKyhd zUj{4VlJQL##lS_3QP~yp2?{mbM@Q<54_ z?O-=q#6R~1MP(N&Wk_6gWali+;>J?j0_sjQg}jo8xM`e96IT}xIAz*Us2w79#p16# zL>AH~6lG9aWlQm7tx^bZEP>k}#r+Xc;LZ|C90ATjk@OH9NxyOvM-Cw5@dJc{l0p;+ zb(64bx}Mn>c0mq^WbRzv<5K1Aw`70B5ilF1A_i@A-EHuuq#ib=JJ_0~4msK?wZh zm%m+i@Zrl>u6g?F-+J!1fB3?ezkd5i?*00Aet;raxO}e><0f5q%N_WEmHQqre(Fr` z7l7MdK(Kz`UGF;wF2)bYYtr;xm+rad>)-wnJnsF1Pk-(yFHJB`n7Qlhh0E{*SKoY> zuN0yPLJnXFs+&JJ*zirlExupi&jRv^Lcq}a0e@a_-EH@J5##WqPs9&^`Ja0Hi{5C^ z!f-ue#L9~M9{e;a09heC?5GpY{?MfsLWp8{1LvRr`j4mp7@z&Q-~8#gx4dJ;sC zRnTtU=D;C%tHNRl=R$Nx*B^GwMVDXq`KO=N&OiCZ@9{hqgq(EByYVDm`cMpkKxSGudTDr z4;YPKoS1%yXks6+Tjn8w0GXe}*d0HX$xKhmi!0Uk6UziF0*^$th+H=5U+s-Os6`MD%ikO5=1X8z1n{Ji(mAGj8w} z%-?Un{eaobSb%F5@SKCWjme2Q389#oSaN^C1s8a_otN~%+fz?H74qdEx`hFttLI!M zx@IX>CYbG@1r9v$K)4to;2nJU*GhY!*!u#WkBcsMC9!6bXP~`lj{;y46i?_7uy3-Y z4CYQInWlLZ^D7f(D;X%}V+w4R$gM0DFkw@w%v9-_wq=egid6~@WwIAqfU$56O74(( z8XvmEWkKu;d78`NA}}QD*RNMvEuam(r=alo0h2e)B~%!s0SC?)4i#Kiec6FU#o>Ky zi8{Xd&2L5;oOt4isFIUTI*E=<(7f6TT|l&(e_rrPf_B3#Usony;Zh^uNlp(jvFsqZZ z~#sapj?=k0aqx1h86(!!8c0oeYYerT5DAS^aX#QcYnjl!80@3RvQA&XyE_AX1x1ED3Av-E}^t z7$sKR3eJMIObbCU&uWFlvQkD7Qyn!bm5N0NF5TF938v#y`m>{Uh0d=i?0k5tR9Z%8 zH)T^241j#i4NMr!c1$u&L7{cXyXpgLAOoz;lOrp%JOt(zH2t89Qy2+l25H~Zc9LgLliKrT*TAS=i z2R6?<%`Qb0k{K^I=`h-rQKqSqVz;Y!@V;D#Lv-^o*gsEjOvWhct0D*!ie0n-Pl5pm zt>JGC0r{*Pur5M$=OSW`CuPZsC9VXs>VVO1GL=;F)vAtKpMW>;l7i(2D4H8@ywRr= ztt)T}@DJvMPPz_|ZlGi6pE`*SV+Kg6^tr0|$b*i7v*J(EUG-T0o9ysi`gwPsE|zkE z$gOvi&$?H=1^#L+U{I~iJL9mc#u!^FQHg7zzs9NlaH|)iZqTHk&I&o4I`2PAyCn-!P8J?SmR*4Dw4s_ zu0tGnij}ycNQzx(+>n~w`8dR1 zbv)(Q?EKj!%bAflno^~-4rvGXf}B1fooI^OZjb{;ew;G}Bh4tHl=0sBn0|#Huxf=E z@G%1sQ-$>TE3`rH2HU!S-305f3ojN6lL9~Qtf!26zY!}6Y$1OC=9cp8q2 zIQ89Uup+L;iKjg^cSQL_*?<9Eg?%BFW?Y@h6 z?gf{B_eZ}#cX)vU3!(fDsTUq#&ceN)`~CA5UU|!?Nps)&uCssmi$7g-)ve(N&;q^W z2S9A=2LQcbZMYBgzVX8k{OmV>T7Sfw_twbn!alPFpYd2;DB zH&dQ?`q_1d9CiI|ANkcE{{7B-9=PnqlQi3xpp?L|sB7`!eKlZ-4)Jm*4c3cb!ewTf!`bqS;Iqz2^rS zn>z3V{hKW@8jBxj9yr*xbHgrGilFi}!fnS77|P6k%dOm3tn@%iwTD)^X!^6GdNtimoKf{Dgqw6oW~AJb z8XsB6(UbsG1ftDGOprX62VenAvkPMWV1i*%;W;(Pk0P+F9X|m3hbv&Qj$IT_w5?_b zNMU@-;DLG{`M1#BYw{01_#nJ*7ue@xazcRLOyML>O=2RgKI78Efv$>h-m?)Ytaubm;aZR-1 zW{Rca=AUxRbSslLO~Ed%L*m+XRH)rlM0Fy7xm^`B4TJHq8AJsUAZa46MQARZ03Xv= zb`_72;=lj*2@rGr=yMHNi#lvb$vLM2gtg^67W*+r3*^#)$H1xG1kRWE15ay%n?@;MQ8*j6r-^|pXE5_XUzaI)_MSJ zKv2Jt*;R=IV64&ul>jpkABVVk{%fo=7`ps3WEl-2h7RL^0niBMV$Z;6(2E$j2;Ha{ zuxZzLD4l@NM9EkuG){&h5XO^p#L*(+%27!OB_pIPL?<#5mr=no%o>V~>U0qm23*Aq z5T4THNt8qtIFO{w-!PkqsUzo9MEWebxfqSzFG%h(yCGFvaxcN zUH&NpH&H|^t*UrRmECv>#bwNmql9TsNjXZ-E}eq{OIfmnBCewjNlK$RzwT=?k_%zC ztb#CVF}s8(2k9gQp>k>^;&$M^;Kq@=QfPT?!YFI)thIF{eGe_59}*OSiGfuFM32qo zr>pn+I@~fp@cQQ>HGO zI&JZkX}e9G-sATN$^-F0V4=t5K=I1`4hHtm{LrQCyNm@_KmX-#0=DC)&7C%P;VmDw z9RA5kGj|_1b|$nQ7O<>eE#yaU-;_x&%gX8%O?&y z_LOh^=r{hYzV`nOQ3PovN>A$t0=gkSV9-K>fW9*?yylBv`_3UppSZ{B1FR&!7leUCro-H(0YD?fPdcQ(rVKX@_YL2o+#;m>^GSAX~qRle`x&o~j+-tyta zd#-u!*%xRrt1>J$P$OsL#J8XR*yq3e^WXmY$G`f+6VH6(#8cn1c(1kl9{i^BF1_Y! z-~Gu?fAc4AOg#A5=lv`Yhx*zA z=?RHtset~VS0HCjc*hxQ4|%g)htg;0;govHVw2w|%mrK45BLOu?-RB(bq?+Snh_0e zcumI$Tjk}W=Ak}k+SWFzeNd;Zx!IDr#*P8QZ3CKz*|ygD0YhBj2g+?dz&UqzOFjo;k%+b=d)T>rDcEieV&Yf;dR9O_3bZm#K4@vV{32pL#D*qbqm+mty@>cwR?HW0J$G}=%I{R%FYwIyy>Q!AWeAR-v|Ps zuxjRGCSY)}xFE1~1-=z<_0?BfQNYtb2}*%oju399I%X-Nm?AQQ%%(130QRr`tpKh- zcBlqOnZN0uxf2J|C$pMD1(+#0L|9BO&6G@gOsmw+RF+-w_St72_}z3dXkEQBGc;>5 z6BAJshj=OvH_m+2MX3V(>5e+Yt_<-p`%-aoxO{t`)=_`roEnm)*b6D@K9F1U@RrN-9XfUXahAj2^L~OvhfLSHAcA? zq_l=CIr20b6K*P{{6gg?QX{F6Ax=a>VH7vz;l@8lC2lY@P#Y?ZpGIZ_rpDo~w8|-Z zMpq#_i%e5Z<&+>@;R!_)xui%ulPQ0~F5i@aXG+2$&cW%5WS38gLP?{gz#1Wb<$l^!Z+2Z@uCNPz3k^+uAqm@V@CY-!p0UU&s%@8i5=5fw5C&dl3MF z2I{BGo^L}A*kJ9s3-_3@+hPukLYCc^?1eX&;GO;HyH4MA5sYsWHwy*;{M{Ds$qoFM zCLj16&gBW$gSuWo@JfOdcqR*RfnU4B#!Qx-B?o8$&H?*U5Jj2}DT9=4iX@ype;McK z(vKodB~cMa=Pz3+l!ELOp0lJxRAs1t=DZa`49V2FOLt$o+KUEd{XiNg;b!;&C@<^D zp*%Drj5HUnSdE&HqXH<2+`agqgi2fZfdJK>z-it7qFbN~{MR2O6>>)CM1+~4hp6c( zqn`KyT@*ji+&RYk1>px;n}^~DMmO*Hzgs*1xqX=LllXqAFPEYS{wn-{yL@i+m3#R{ zaZh)zclY0Dcwzkjd+z=(i!kLcxH6UPYq)*ZRMk?jGAru|s&oe?o40hq_2zX!^dJ%- zU!I?KaqB5fZbTv?N=FJ2yX=V-IG@>O3Cn3xQ${mVx9Qq>sav*P!a+K!FCEF!tyy({ zce^(c1@46I_?|tPZvY|V@)6EJS3G~$|ZnLAbIV&hrZ&1Yl*JEIgJ z_sn)O`xO_GH6s#BQs!f#h%Ox>Zoqq{K;nYc3Ilx;ief7UyHYu1vLuRHs9KP|kONPT z_0?1?CDAyH#5_|)l4f>=r~r*7ViGS|#2CBO;C+WQpf*X7>@uPbq@UtZkOMdbttV7{ z4g|&*MSCiY-0kvL1!qT1)j}20KH5raXc^N&b71pBhs=%n2<50!2mu6+_YV9s0>a08 z2WT9{@E|Dzh3=FIq3cV(P1n`0hz=YjxsYd*j}QU)PS&nCRp#6RX7x!aMG`BcyK}hRC3PyT}0{5`aAtP9O`s+3j*} zsQxPfC}%-9Y-kuqhZ+oxx-NEum@8fA@(+L&RsrG*@6q$*9}Jr@(?G$<0*4lCPB9eo zB-{+_aZ7YYyCgW&kQ)b{q}Uma%tq-@3c{qOs7j@rk&NMDl``-YizVexUF0GnU940p z(NkG=qWW%X20adT9pb~{R$|09;2S56hbdTE42R$-F>-QdOqo+udTvQ7o~l)DFg5jM zFNYMEPubEBQZ?hjzNF`k}ik z-B0}&^yi!}xOH?VT+kpzP-oStjrCi5?X}llzu#Vat#y9qVhV%<{D`_*lpzM{pU9m~ zN)rH&hlUL0*7v@g2f)n=vhWbwjUb#rV=dfb9RZABy^doDjTF(PWbp+<;NE`zWRap{@cgT{q-Xkf8)o0)L$(0pBijlzH;H&=O4W0 zYwnlNJ^kGIXAbrLz(|25$d5hw;^ikk`ru>F`aF8=g{x1$eC^qfAwGQd`72Mobn(%r z^`axX#Pi7GAJOY`;o&Dy9=h@z9+#IcKjTu1*=1~h{crx~|KtDu|DJp4Go;}sgfw`) z@sj{Sfsk)3#AWkpeO%V{z#~r?-gJnx)%wsO2*(YE4ly=ksm;$aK5T#4_e(w*+{`#7@Ebr4__zlQMKlO!Ie*RZp{iR>) z<3F(b=%;__Gr#idEwLy%BMc}YyMi@i=X`5Cw~4P`@H%K z|K#OQD=+-2zhVc6Ab#faU;6lGf912k{Oh`mBH@#t|01#4WWM;B&qL5Z_od%5*9)Ke z9Qi2Pa#C%2h8&!q?w7aD=?7RK!>Yqn7GU8%ssVLr{luU`LBCAdQ<}e6_{cM_^d~R; zF9wfZo4n`KGpRms`KcGx2NwPPft3?$OWRv(Xa41ff9x;s`Ef57`2o_gl~W6AXFj~X zdDq6)J)38J?%mq(Sz6upS@vI_tekv{-XG|oA6eM!iC^M*ySKB^%UI@{K;FrAC;$_K zfdev;o9ar`Nb1K|sNMw?=E;mkUZ2?MD+SGQZqH9Ck zQ@6ud3lB+J{7M1+WI)W*H`g*>-#Cj>L1wBir}1`wHu zAB0K1We|smRYVk+#UU=e`Y2X`Xhp5Q&%!Ba@$Cjq!p)1hC`+s&QFTe6;o=#?#W{sZ zCj3Hh6g9z5Fw_fo8jcZ zsibb;Cjb<1Yak}oDhrqzXEzHmt?;Yl#G|%@&1H+F8#R<)06R0FTTrCU=58qayPMrs z4?_yG2AKqUm%z^u+!~LlN6SOog$E8i*xDU?;Z1BbLrih#_;b!Ux4_$K z0m)JBHxF!Uv?Io`I4D)Bd1jBaePO3KJCtfAT#5k70unJfzHk3|>E-2R1p#y!S)eB1 zQpLb!FBKTlFAn@g0zQ^^?W{#qsjG zIeGF)EoYAC6EO>hJdlUnp8^xmxu;BD+y^}3&&v9^Z~2R^Q3toJ$SxK@Wg6|TfXJ>fn)1i{t%hp8h`C)e)O*& zKJl+Ep8fLs{=v=G2S(;wt}!m9%+hu#d3m~44z87MS21|<`A@(R<>{EUW%_V=cgZ^j zDY;~vDA_t93L(G#Tfg(q|M1VMEy&Q5X`rrz<3x99IHWEay-Cx-5T9xSdP8v1M=1c0 zI)JgJhz$ca3_cj(l*DYhXFmEV8Y&K4e(Gf(7Vz)bB=U*_N&)`QJEZ{a=YI7!QGDPp zed?EVsShX)R5Va1NTw-8{0u=$0 zFpKxv0JF~u-*GwHbyM|$6YFRHhBWAiq(Bi%GNw7Kz~z*l3fF%|Jm^0#!3)&@yYeykyyH@V@w# zL=!@PtB@DVj)5dywktcX4j{FM8xGJ7Cr1~gDgl{zB-bVQ6$elx$nx=qOSjD>cWx|! z=p?8Huq32#)Fowz)k~T#c=`y#1f_^1C=QTDh+9+5fntb?3DiI&$6P7{mSbt8VFUH* zA~{iTx%}&|zpnH_jf_Boc`+NC+L+x|F<~)0g9}+1)+L;g-5R}uXPU5pv7QrE3tv`x zXk}j>Do<3;8^lKQ=-LjRf6&9+Ie`HqV>Kj@DiVbO zCkgSB1~505T-6a!R$f|-Q?G%9j8a3@h6L&*iVndf-JL>`4Ghf7DV4NB0Di0BrubX# z6jE<;FjyKLfFlVH23_fI24i!8h%S>x0)+vJ-b{oD$Dd?~Uh2``s#|_`gQIlDQQOjp zYLp>U!4pqAh!B@XVJ0nTICHricQ6KBh;T!UO(nAcM8J|-V?7TJ(AjqhGJa<eDI!zR>^Z#Ydlg=*mZYzxmjc zFKe$nr9SZN6VJU`um8Q>rPdH*3GwkVe|a~t=9QbfgqRdhZ~o&s|H$O82)%q2od9X-)e##I$7)XZbZ6dAVhMnAVuKNom^V0+`-e_8)gpY4sUm4&7I7PcmTWMFA^Y1PX` z7krjiwtOa+s~fA!Cw<U&nX=#6#_J$Mvpco3q$~6v? zkHmSHR@NgAQV{U%&j1w3zTqRUnZ+ppN}2?RIJICTP_*?#xhb)Fc zGD#p7kMta!S&Y(!f^H%?JF#YQS+B0gB@FM>?6Vtj5+6>a|_&h3wXTu1W)^*=az@db<&NRz(69}COyygg+1a` zE;&BWtQ1g!?_1j5vsznQt2j_1rZO-+NXXl{e1qbMLc|977<(Ka}lidHzP}8pAmdGIRSwc%0nHc>2DSTai$EsRTve$%dxa9 z&=L%3A}t&-qnXGQH~}O(G#wnkGxDrucHrYCLV|HSC}z4h$di8wG~DT2t*QDzPe`YB zWr1){2xijgX_;Blp}^)EV0Ce2d*j6Y zYiI9SI{B@iz2kp)Z22!QZG8Es?s#+cfst#-h)asKQfVIGE?=KL1Irntor8m-w+52wh9q&oJ7Tju8hzW=uL;{gMs|?N!4*V>D}l5H!P`_ zhD-Nkg%BAZ9Nk}~)1pWNW$WdP+6o1b$_V(e8B)TC-~WH7GT>4dwo=G3QS$Z1nViOI zC7~G1s28p^waet7#NcvBPX4^TB^F@nZXATE;p`mVZ%^D@bi{7Nev=+hAMnubs1Kan zJpZ?A@BQC5f9%xO_WJVb(dCm%8|N05)fC^R`aqeN*3l0jvru4+qAOhN3b@KZRPYA+ zPXBkTWp;sY0)Hp3b3|n$^$?^5gL1Qo1V@VG+aEC=P#=KzwW+Ql98R*!5~9*21Aznz zM8`u(HuMzDK3C!6F>|@!{TlY4K8cgRF-SPAjvqhnRaIYAO9>^6@;h0cRMe%n1tf`L z0KEbyF@V4Zh&Kc+1(t;kq9(xuqQFTai9sMCa**DNlqO->^k)JjV1T1bVCB@p4DTpP ziY2GT8xm6aGLW%O($p_~3Em5h5Q_Pd+IQbl{*ksTHIO4u2StXoHC*B^ANS6`QSx!A zv58D=F1;y0vUyz+9#0uDf%LQ%L-gX2iA#Y~%q1ZNvX4m(!Bavlg(pW2PCf=hw8qkb z!Vs4j5=97H`rp)spfEU@nBiH5aH+bMtIRtXtHj3OtsDd1ka(FLDwy62&=mSHW*e^vRXfBL8X3kh^zdU|d> zlkG20X%DkqF!sWD;34BtH)?DL_`%>wj=_U{V9Yu1oLk`5TfkF&08}EtU>D?gM?qj9 zb_ejlE0k3ekXzY1tE;PC7*JDH6OhMA^ZQMK7YWqgj!l17fYUo^pm({|3V`1i@aow7 z48d4gp8T#<)V3W^j<0t>nIO7-T`xpx3EJ{fOFRHF1eVb^sxyL<2TlP_z(7#8OAZ7l zkI@<7m>3SkSkSylGq9-XHK& zBd-vwFMGA_{Qq_Qj{kS%y%(0(&m3P~UO2hBbb48FU}b%I>B8i*;?E9jFRX1$KC35v zZsGd_yj&-~LqCv|y@BriZ&@2xInuNd9_&B{!wzJ2?2fLRx*XFTa@2nL=HBbvpL)pY zZaG^~*?z6*7-Xav2V^4Rw|e)?VoGzgAtF7m4FCzapA`TJ5n>Z*iwV0NLog@{;55ou zIEMW!N^M>4j-?f#j%Q2|jACiJVt}}W8)E8a6hk`kC67`+NwmCD)+wQuJc?mN0tG*U z0k|Lsv&cbcA>I(%h)Dz?@InP_K)@h_mar3BX02Cli-;oAl$J_7W58^PFhg>RN1!F9 zk{y=|%Tj&Ktr|c*sc|Ve3BLIL&Ud~e-6r1rGL}OSbf{>dv*#)axn-d zje<*`O<}I&(+V^7Fj#Cc9`*1TMM(@06e}X%K&iAOon*{bgp(Q;1yR;$I+|x;oQP~o zj)9<+Qcs4CjX(=AmOwgKFMR;XE(?G&mvr9EqN*;^m;(4|gJnX@LWn|y@{SgcjWQIl zWD6mm8d{S=5Dj4jJhU<+qLl&zv6+HmCe?+_0^NN9rw4$cM24bAK`exlCRHE!o4@%R zKVe`cS&Zk|#_`~Jm_4)}MVBKLYF~KNd-$~;&au}H*pH*DP2`f~Tc7^TCC)AI{T3K0 ze_nS-JKS~jE_1@;X!FE^E{7-G?03vK1I!o* z)EcG5;DC??I}tz#{~+__8T95N-~k3*05dkZbEk~CFeC~E;2C4};^%*WAVGF_I*&~?{2BG0th*euf3$bJjp3k-EJ1w3-&u0&(_gHevRR(Im ze?RScb>sI31olfCTMO$C-m`G_yFdHhfB(qVzkcxiYd`s8^ZLN8ssP+T&QmXYg+RWh zQ1H}CKj+I|^#Ms@U&O!j+fRD8Vg9*w7I>@g_)EX|s}Dc-F@K-1|HYuUUla-ss1N+t zrT09rvT=4{MR8zb_1xc+TB0qKJ10LTxa@o;QuWLzc5!jYHN4 zBp}6gB_;!(&1eet`g&BnC&%~ZfcQ=8iy@rG?#O*ymaY3XA5ZlJEg_g`yPv_upH5b- zyE9_ZV%Huj11+uT$Waz>sWpp8QUD-Ukr*ln$Pnd*KpH3kloCo#g)ssfQH|4IU{J6j zauX*Y3J(g6+3&BRXDI~(WB%z4p7==L`Wg@t)l##tkfoTYl zt4dBKzp_+WurJDqG7C+#5?I0sqyw$UNjGwgl7QovCYRxouh)zU3({v}v6)xEMjyI~ zGigO^0jCfMy{@6TUiL8~HFOF55~xielbTvfbHYvZ+H0@L(5Zpw((Jlq)9g<}YqSJo zO@TiRF`FVyvX2&60?QCWb4WiHP)K1bYm@-&Koh^?V<63?g`196M45=`Orh6wW?`UbV4FSvo`bQy_I^jr6H^a@(ey7y_3hSPp=XXTZA50(!ta21*2;9FG}*%vKEW z(7^&JOl=Fv>{@F_F@+*S^#PBf2hzi--Uade+rqZV&1~cw*9X>CPOL6(9b3KV{eh1k zzw^tN&wlChgU{Ue;bSZ3j<23S|KQatPrh*F>c_7>{)wwsUh%m>w)@79^uNb;&EGD# zna^$s2UBiJ_}jpIu(rE;$NK}S1lL~pl()otg+QU;7Ja;M{uX{d;hpyR=hj)^7TxrH zAD(AF@rw^X{c`nze!rtKFzN&Tf5Wv?m-_z*`uhX_dHL@Dv~<_iV_Og1y}W#EV{P%o z{p;ID)=nH*KR@|wZ225tJLz*|WAgbyy+1Gl36X<g@pr90EUK-HwUQa?(Apn9gj_y9ySND6WCw=_bjIlalgNxhlvjQ z5>bdiZ}ZYt=1w@t4TMOssiy^WHW!7>k~Iuh8SwfCnFJzQAj{yyqoQIWIQ3dPt;}T> zbLrADG9kl6C>Dqx0tf__U=)>l&jdp^#p59g^_&QC#l|k(L}Qf*zWwcQf9qS{QX(+i z!{h5D+r&fOBklS0wA&i(3+=o15<|E2X;3)4RHd}Tu#OB{IdfRUi|demid;M zCXh_)nr5q$Y#oE_l6RHJceprrB%veAc6O9{CrVpFo&4BHm>x3U*9>VmO`57&Q@aEZ z3Z&aui%U}wYgFqUdAjAGo82gKXk|XL(A+T*-O>y%iM9|xw*V0vejd`0(rN<7y3E)e zXWO#)rltmPYeG!jr6ptpEw!^M93;nWa@K2&#oS^cJjF^3E(8~kb$!)&) zy>bvv7O*0#aK9{M01Dy8di*?x)dy4t`24r7KCtfpCRQWZyPY_7iE0yfc}`kE&BYEmp=0r zeqQm16X%~>XMtOE)AxONu6*RxOa8x6f49?rv2o4+6FPZwppPnn`hfr6aMTC<|Av3N zalaD5(<^5#A6Zu%*zgw!H&6Mz1M34t4h0p(584r9>_7&?4n(j43O0%~YDf6-79pvz zL&-OB`4*}7rp1;-v*97@1C!Fgw2UzFdKrzHfB+9Dl`EJ#4Sk#AvNs2$KLCymvm$^t zM0`kEQzsTB$%t&;Gvki$XKDVUSg>vW)O#nHz2Z0xg?O{Ip_r{ z5>My807ke1ocki5VjG#VbWh?5k+(`1<%uX#-7?M6Y8fbLC9{STD+(f(aFGL-=)fo zJnGsiY3c^^_XpnYbay`Ap)JrG0{kr)-gx-iS%mKeJC39%yt-$e^Vf3A-kfn*$m^w4 zaxn=VKM6|oByM&Sx^Hsj`(6o99Kac<5&$m}__`K?==TVqUWjUgs)8Jl!*5sGm=Kqs zyl=GF;OKbDKu0Sjq>`)xyToRc>3AUkM<14KUCpbd0}6nXKn_Y7HzK^b zbWxbmv_zSjRzR;yY%P#yrhhXU0&vzfyAb*y(hWaINu2m8kU%mgHhScG`Y&4_caR!@ zdP7eL{WC(t$7L(RKl1&m0p#PvW^B?>T+YrrndXh>WMZS~e=%t|Fv@TipuF4UemOLq zkDZ|w=qd7`dMrKFeqZ46E-3Q++iJZ(Plt0FK#Wao?BkOaAbM$-o@j0 zZLHnBxqkP?8UKaZsfVvU{Pc?tJpJOuXI{Ge_=`RVXS?&>o3()AK(7!;*?hW;Qt4nv zd$aQA{I{0{cHHh;e(BMg{Fp^CYSag=z36X#veKvz9A7!Hu)4jvyuGn@`pXZW{b!d> zt)D!*w6X2a5-zW8F0G$kTsyP5aN5Uzed4oq{JhUSo2Pw#fbS2?#uX#LcoT?Fq+mk? zA^{9`L?b&c@$Y~g3^%+i{&^GH?ig~ziQXcH9m^k=rRQbn<>uPMfB-L$)c6imzT+Hp z8umSoR@vNd3bg3rK=lEskjM}}M3umB^U`G8P`A?ZQ5enBQbY>Ju)~bw5?lNz4aZ!m zL2II;M~@apI@aZJ5;Q5HBvGO#ag(b`IUV;-cHx;|rpO0H{-_t=9|PrvE+vD}NlPGR zc_ok!lGAqzq!my>L?C3M>lMP8PAk9=T8NZf0$tMyKO@-CYm|Ihl1nBay!;&x{mrNX zfR4vPTxw;monWNJOG7#+!QgS5Y#22 zby2`Ti>0U5aMHBqwZ;ZwBg#b7D7%Mr>&=BHC1viG0C$)D#sNPb3n!oPv1tti^eiB3 z38rgCf3U(E0)}G{XNpKgr*3^QHj`R7`TiEcpZ(dN`HwR3BMLi3lAcey!%ne5?7KFI zwheNaofyw3uh|ZVh&<;ka|;~S0{LO>?h~A|4Lo%_po8rC@jU&%<>+#mJ@vX|gii1dH3w5C9X7v8P^4O#{-2v( zZ}GG%6xa^-n@u!Y$c^B}^?{Wozc1KUA2_~z=KhtXg^jf%Cr?aD1oQg9USId$@?>+i zCQyk$`sTA=VtC6HmD&ZEog$5u8LSJwUK1;??I&tP_Y0 zvz(n|3a|{sjOe6c@XkL@)~nip0_bc}IIR)TEv=ZseUbPZPQ5Pm;t7 zAl7uG;in0(qU>W)$^}MYrh}gqD0DEp_0me4l~4>ZOGOpSM|Vk}xw=hSwFO3~JVHGW zlCZPKsSsC4%mTnbw(6~e7Q*1Z;#6Bx9Pk!_tpsck?Yus4qu_bo|CU=oIs+!&dFGvg z;fHhAwX^5xj-#1dc4~O4J><&8zE@SSm9O!Nc9ty+Yz-S+M#)L?*eU?k1aNvi0Qf={ zF6*~nq-heg+_lYRuemI}H5P-)03bxBrbGY`fm%U0WI!c?l1Do?FhwBUD}T(Bn~R20 zNG-6z(Nh3ElHZa4QY_F5(K=%E4(K2l#Q_MPz&V$0Hys7c)o^VqrKildMKLCo&;caC zpx5duhT!Q8!edb`(Y0{GBMye9i->_hYO4$k-6#fH?@+asMn?oK6B|+NNhJs)08jNJ+ zvGubjw@)40K5=AoxYT))tqymsd|MZEY@W ztlzc$z=uy<=x+`jUtjgvI(E_LuFbPPKdAQyMo@7}kUe9P9U)4WvoXx<)U$N>7`tD# z9{;R_H;3;h|E;FaevdPY&*uB^V87zP4tiCE0zbupK(f;db?O6-MW8-_DE(0%ko6Fv zGGM)I&Z^8f8-GSY95*F~{jBZ4)#c2^PkCasrWQ{M1s&FoY-hI+RHo@D7l26{o%lim z>A3(^(kHt_apH@AWUM8{xKoc{H z2I-*1FPtC*f{j?9i%P{{dR>~r)Y4e#t^8DaOFjCS*Cb{J+ZZX zQ)5sZP!O=XjA<>^2e4Uq_j>YX!1R|3D9mME{B+g}@Waik7u_Wj5lbM&1e2mok*Cm9 z@F|#d38+n@oOD3jVOypYyLkmVuD&iHM=4j7dINIw=pw^?kc*%Z6I#&x4h z-`aHYVwHi410kbU;If?B-UOw4Mgda;Q-q+%5X)i7r=EGW&86kfQHBEXxa836bgPS* z=hqdW3=hu(z=t2;rT{xkz1`$5;wHgxNh|0C(Y8#QD{)lrunA zAeITRxun~e#i9blCTf&*Q7QinaT!pO5jeMmXyGX67_`8pSyG8^1cHnVF^evj^wC-c z37Jk8{jH*64jfPS#XvIS)F$6>Lv-QEKHX~)y3x%taP#7~c4`j^m|3+4#*Cz89Ly7w zO_hvDNvm_$I_~*)$Ckz7B*Am*B^e<8@hyq1VXxX#qdmmdy>WfugQrebA2@ydod zc1R2CzT>x+;?H{ug zlkW@vdS&$PyC**-s7e6oSd^-Z4Eue7N`irc$=R55hZ)%!rF%5)RKy*eUA8C;^f5IZ zgrLr7hcys<3TdW6$|OoD7;vl$f#9MD(TF@$k}KVV$XjK3UO1QWB|!oxZ7f?Cxye1n z01&~?js#XVDszleYA@&&Hn^mN5CXrj3XURxq*9duIK|KJ}R^;}XJq64{GN1s(2sec0j9>{gF)EXqow-~x9p+&WcvjN3>L`N< zVR_{Uy+&!(Mu2w%XhJuu@N@|yMV_8CYjmSW6zcI4qY73nO$cg(c-_U1bhPvOz#+os zIm=sa0f`Kl^}u{A7^Q$&q$8}dGl$&i(39-FGLLuf4D<&9O5$t*o83m{@!WjSSZncC`r;U&Uj zjnxON#bP-bKxa#4u9R;f_yY{XL{W%sAzBlGF0(5B;l#RG6r&aI4WTggKsIT(fmWm| z;t*~kDgnBY2_RI3APzle^`WX>3BLQ~4tC=#xdqZ6a|*Le%;cc3HqGH>`i<2ZYtq@d z3=9lsL;QHgj6E=8R0Bx>bT*6CSuBG%arpdBZI;o6$207)7X^uhYyo>`Y+BoD;0Gc% zt`CU$kFEIz@Zs%+M=#&^Gfynsb@|?ZbmhngR*#)sJAUreBUc}K`Xi4%{@mqj&p&eI zGml>Vx!oD=oHDn-+yb|Y1!k*WJ9PH<2d+Hz(&~u^j;)?pSU>4c5cr%rzUH&Ic4}eu zr2oF)zSZRqZJpmyAJ{&2(Z`=F@p*T=Kd@)2cvHk_urq0lnvH^XXY29o5I#G6bddws zC3X@l5jDm_Tt?hI#oIt>YKoal2v?4;mEeQJR0c$Spn)N9L7)im-YLkJZR zcQSf^KYa)Jw8oYZnah|oo>C06Mi zcPXfFvI_=8FS;D=TB)DkgR2QhpGzAh#WGwuV69Bk(H~JdNxqQ4Kw&Dn>{2X8pi6TJ zkn{pXnWH!sQOrOe;F5%rT!`U93!-|hy&)*_Tw+ZCY-U6Da21rXK>~c~?3~a>W zCqcf96OYUqGa_a6g%sp3{wC&gD_6a?h7IcI)1?w>lyC8V92(5AsG;Y6Hl5D z&IlC7Ob5%MTN#7}ngufoivfzcB)o{uikgM~n3G8wew^A2t_x1S)H8@JD(#L3pxK{|eyu9q~8n0g4Beqppm9||u z*>Z2x;==c9$HufZ4vabHoj;5g;3|Xt7O$6s1v%kaU!B)Q0i3N%Jdkmm4a7s}xmD)! zJahZLHuVcHzs2^nbG))PF!Dj!pWPvoYA?v(K;PTi8i*L|7yI2VwzajkZFnBQ{^BkO zBt(8k8mKamaJa6K_euTAF3~Yi#%2trs(oK$+k$xPTpr$ZS}HkEx-2`kot-HSrVlnQ zU6)blgwPO=frz^J8NlhG;2F{qt_3&&QFs6fHmVMDS&Ma9FA3aZ6S*`U9Rj2D!t0%^ zXQ~V~DiKHxE*Fr187Kax)6#iRXiFdM(BD|2vWc+(9uGE`s^BT=?rX`3AtPvwHH#aEjsX~pLI*@* z(F1ek}pr@6xo`=(!;!xoEJ)ev~vZ?*V!21J&Bj1wPJ7eqFWdlDDxp95q=<14h zhSdi)?tk#f#k+s`>c!7qI`QPfhvxNx9of_Ta&Cclfdy{1K5*iG|6{@G@s;gKiC}9( ziD38d3+DBKVxHNyn5R%DI=uKt8(R`}b7j}Q*hS3LVA8aJdX zCI|v!lgKCqs0;vUj#`1gGoV!{P#*y0KKQMa9riTZEK!*1GS2MAhA56vUELsvO9Crv zcrC&C>sXi5$@pZ5^4t-<6h&w;2nihPLYLCdazn|l;=u3x&hJR^WPgoy%F73(hj=>l z4G{^*`&{CImtUK-v|1}L0FzK@`p5Q5nMF;)7-1DeI3cnXEE@!6+K(t1BN>0%!LlZ=`0-(zf87>JBU1mY|y|(&*1X)H8uu)g@?U-qveT!mSq0EJDgGOlM=`bh9wC zEd*x^cMFEmSP6rW6#@uhMmk_{XW=w=gLDz@vKukwo!B|W=*jYiFbf1{rZ61_Kw!fS zgySjjBLPs=>KK+07!5;fhqI5LSGbAp2tYB=EYuKlDgp>rMX)X{${H;sy3}c5VZna! z41?Yuu&2PhK5$^;N-lz}A5KHACdiiR5#5T8I#`d%~?QuH`(SEd%@$fD3I4PU# z&%j^^cR5MtroDDtF!Dr6oZ+B6(WHShVixprGLk{lfwEWbC_o{>z!r!ZgD!NVl1v)J zDS*fa>g||7F*f0eMFB~`2GI+mW40ozU?o$#<5b5qO$-vARI%GJUlhH_r=9URWe^**dVr^jW*gncjEUGZ(JYv(20{D z-afUubawIB$=CnkPyUaOT>A5e&VBLyKXLc!*?ZQ`Ej<3ri5EWhz*Em%eERukANk00 zkNV31^Z&wNZh^T4ZdVH&@GF?!A6VPI*xx7gzZ@>FeedrR`V)oyeZr&5C+}a{-dZ^A zGyDG++`DnwXa4?xWOGjt5eb2IC+vv2_8c;ZBbrJ=QB$H&BJP&_c2cMWM0Dc1KsX0b zf?1-xyWZU`wum7T8E*?naKwa40jdPOOW?~Rg#tf4koDlV(qXF`B3Zj&b>Jj)wlb!v zTZ?ei-~SPXI8CgrKTemJwIpD}j7YuYOD7d5WZ#s> zCJ8Ow#xK}_D+S1H&863HK?oushd`oetCt!$fjWRJH96KLZ}ox%;-rEw{SO)8dd&+U zrdB}s?ce@wH36o;qbz`@cM>oFoRiAJ=O;f~U@@A|%>p6xF+1hy1}utJlxJ$X!G)S^ z!m0u)Ej@L`+>IayKMCl}VqL^Crf}2{CM7|TCOm`S(c&jumq-$)NuwJccnnO9=PZ6PLp{jL+IkXN_hA)E4>*DJd_Yr79ih zESmMJYF{u(qr81;r&JS|lm@17z#iPaD^bSAv_ZZ<$edrzEwHZzI90&e=5IOYah8Ql zPOlm0%*y?0^`JOGJb|8JrvU%YC(DdxUkH~g0lPqs7L?7+65%$Bbj+@|*X%(xOn%Si zg1EH%aun@-+niV7)#Yx<(E?|Iy`}|G%sZQ4!gZO;ek_4?Mg&Bm2h-GWl0xdjY0sK# zfL+|NLR(#Uj4}j2nJ54fBpg15hr~1GoiN9iR&}KhI)1*+jHaMG8%lVs%P3xseW+p8 zI4QL3KN9y{}LoEu|uO(-C5nR!V7xlL0LLKIB~kFfz?he!y37)1fA zz&~KDlvO(lHhtvjtkIr;)dJd^iU?8Ql>^Fq{IbtE;vHut%m_ zZBidNG~Bp8aM#JxAKW~#wtP;B;2ZDz@qcsa{JcIeuYt@h@NTuhe)R!=9$~gV;FksJ z1FIX8|KIR8E}r!N8!oP&@c$e7EUcaJnb!vn&O=8yG}sDtihpKX^s>~!Ig9KLqKp+d z%}RJD;8c=9^o2Vl5Y$y1&<+aX0l7(R@ylbxgkB{DN(71n>g2u;RWKJQstgoBGSM{r z{9Xt;Yrq}&uy#ZAW?@HaX2d`&4P{m03a5DiiPn+r(07^_yg9y6L^UOPvOLGPw$oe& zT1qJ91i~Q)y`&EjF4~DAC>5H@e*v5*Yyc9`*oY8xYCy!a<`O3WVS}6+g=Dj96J-j@ zqtIl00WAS9@gxe}Sj>WCbS;XOK2hj{Ej27kuhd?0D$Vz$zZ}+={u2LwJ)uxQ2#S0b zj|u>U94T!Dfl(qb90NKbx+pLHv?%f^Z+2@jDT-9uyp%+z3=nX#TSm_8cr4SsDDJXq zJgg+D?B0=sLJrApoGwN)3SP|V4uYaJVQqA5hJ$XFOF>;=6isML4e?u{xR_Qv2{$jJ znba(L#esz21nAbnZYU8=QGGk&-PP)Y^L;HDYgQZR6M`QO zni|n4EoB%d3$O--P0_K6 z*C-L(jK{fgec;r>#f|&U+_$~u^WC4iySR9IY3abo^>ny+hafgd&t^nW6>YW0DK9)IELQ!lM=UtC;K3fT6a7p!lb z`Cr$M{O9GnpI$lh=zVKzizn8XwvTO|@;S18-sk>}Eua1`gCiR!edg~El#q&xLTU?# zM%WV~_<i)Yg3fz3owLdcwT$$HNSC?n9Ir~o)UQ}eCavmC80uPqbz|C6l{b8 zN)kvJqv-EaZ#4m#zOS<-{(f9wI&6esFbhsH8IUyq1>kB37)ZuLpdoO*X0%57Q)0ln^pP%2L5Du2gjIDVG}mfc6KA=n^zOb5up<1V|oA~#(^ zO~WxzMlT+-;1SKjMQC)Ovq%-QDS+^ggzl7qX^S6jI{cmi24{Izr2}&@DI?${Q`>Y5 zf&rZk*@w~G6r)@k&f0)IEm>eGg7qzu02Kld&1ey!VutyW1*ZguCKcPgn>A{e`@ z?RmppiD7JEJLP6V&^hl9sRjBrb9mt4Z#_Q;09Wkn2t0M_!wOu=!oDY!kx89ABiW74$JE4{jGUVGDqwJ~ig+l^ziYxpiMh=Zz1X@A*hoQZ92Q@01Tz*t+` zhB6oDAK2sM*FwtdWOM0IZdhVSCA$)RH_+KCj4Dgjk^_jfb1BaS(I42$073`7h5(%D zkh9VS(Mv-uY4NyBRJpTDqd@dV5rx?h15r%GXqHSMHVHcmFa_&jupFXtmAV299HW65 zD*bik&@gv?Wl6(zjdd9U49ASYO1r1DBFCkBM*^S#JU>qe7(x((iKU*Ld^>Ln%3BmW z(-}a9c`bzTqq{W_PmV-e3)hu3u(6C==?5%%QSKB73{X6ZCH`YzPaq;W08#;ga|Uok z)3HDGC`r}sX^Nqnx@RUeC}5e);<5C6Iz2&018cAt6PaBR*zOP(35PhETV5YHdHjJB zN6#w`+_kax&wuic|K*{z|Ng=4FaN|H^ZLLKTedh~?+=>=_N)(VoV=tsphTcPu(5eo zao|5K-F4;Y=0kTcFCW`jUD!IZc4G3G*9S)Evlp_XK7d6~v?FaVuSXX<&C1vjN*RT7 zFz=SLL+lUaQbbp-Q9CXVlX}eZRAE4wtq=GU1Zo9J1l}Te|NGys%Nkj1M`a+p&02Cd z-hIi2S`0>ITbj$B6bBsW4slVXquE*Pm=-e#IUMK$7$J==L5l!VR4L$;!O4Yz1h5i; z{LWY)Cm zfa4k4Hb28z1@=qDNfkL;$?ZDxN97@TA#TAo9FSMBd7F!5KnKo2YnOp8oeq*a z8;vIAi4r$pSIP=28rYrz9-LIAJW*Q112}l}OLJf>Hq%)(7lZ-uFfRE$I^dx>A}jG%y7)aVl&8XApe_=~1cb-H znEWc&XGo%Of>uNsV3~Q*CL)9~EQ5|hf>}s2iddE*zlGz>L=+x?lW=S#r1P+L1|i%+ zO5wXfwTRi4{AO`keSm}Y5UNl~#?=bAQ{Huq#gok;zyqLl_wfM51Z@w4Avmc)LrbQ- z<)@WNDVD-C>5fpts+rD7F)a^F>H~1c9Gh4^fy>LwiUYQZtz>uJ^7_Em!ULPfFWh%x z{ljZZ-+bR4|NfEf|L(z4|MVx{b8Pv9KT3A-f#)8-`iVhL>4MMd^0v>ynjal(_zw;y|Hr}N${lz7$Q^&rA5gvirc*9!uQ!?YqRm7g2F?Z; zrEW2LbT&XB=5JNzAmw-72pDh}K**2=<#7=s383n|&1*Ig2W(5Wq!~;ODD661X zuesn!5J3sjFqlrD+YnPo(s7E1rR{KOyM$d}EJf9Z2$f~`zK@pX>!n^vs7tv&9z-uZ zXmMJsC6GfVP6%c^Bw(mGfNpBK(F8vQC@%u1o|V#5YaxhuCJUSXi31j3UR`XTO9Mj(o*>cZwW38F++3>yz55H+EbhS~ixBOtbWrxjT-Y_^3Ls=3r9NGqxoQj$Zm zfg&^rPI72lm})K*vw$R<6zH8!IGIrw%@GSYQE1K%tbvZR02sx+280u(i)E~xsoB{lc2PSRKzG8MKN#Dqpx4>BVZqSg<#YNq+p{&FpxdBWW;%W zVCHC=qkCImlm#4TL0)(2o+pjtEZ}R&a+IKb}uqEZ8_9nXCU`M*zTB;9dOO2btr1`xRFc&%o z(2Uj&M+}H!6SJ5CJtYYVQdmoxMIjnRLRt|h`{uHE!WPaKaamj+Uxyh3emKiyC`MyF z&Ky5FRg;O$EG_}MJAxluKt2jDhk3G+sh(6a5qe#Q6M}(@qY@z)(tkVv7Rw-b%z_OM znIKJ)Kxd`^mdP^a%GxO1CU?pW>K@_2k0<>}fV*+sO-^-dYfGU3R3dPH8%q=$;shBV zqRZV6;C0oK&;E3_sFq_P0KGd%)wD&lIyP~bI!OaI=lngQgm|=6Eo>7d0$a(Ryyf)) z#ewys=kDEFyJvItJMaIIfA`?#zqq*lTOarb^ZLNMDJz_>Wp05iFk2azeSe_(z?COo zoUIRRoj9*P@c%6T$c5$gGsl;g7f!A&onBg5_nFrRM!tDSr08fG7F}<|MW8TAG&Mr0 z5jE)@qvD($-ayR3j;^==k{W3%$CpzaCh6Fnk65NCQ97fQ!Uz{faX<`7eujeVz_Z>k z<9;_~*vdp^7mGSxo&HX0N48{53MK>+c#I>v*vT<1YZEnzaAdy1OCc!c5;rHfBU{J> zk;fqlih!e>G;xdgM`CV>*cH)45CV0PEK()V(O*19tc>17acaplq_&v0d36E9MZB^| zis=0dxwIV5OfLvbYn>daKk-L^ntJj(;?D|5c1uctjChnBaqz;WN`HX z7LLenCZe;u=2j9#Ns*@nDiA38l1mV)%q6B3?jAjQ)F#Rg*gJ5gu+h%z1AC{qbLyM5 zK*fQo`aAq^?pk~OteTbuI={5lg!z1~-b-RC1O9G?AH{f>ZF3u^O>Nin0QRY8yR5dH z4pA2#o6dgW?)Wb6N`Z=>+!vR{v)O38BH*lYl{TF%X$CfS>bGPpq!D18OX@~i0YIf#JbS6z$MA1<5+;XrqfOu zi`9$MjM76>$4o=Lb!i*RBcTUFd6($G)P@t19JBB$S-|r7UKZfZEWgAW zxkMI2ABnk%OhIi3nG8r89)8R~KmvYUEtYVSIk&tq2WUoP0U^X{@z7R_IE%NI&Irl_ zq7bp+XDbWrQK?GMjI;O4Epy`-6ER@D=7OMO096TiTHaNCK$QTFsEhSXfm2I@DXKqA z$6fCw$_?$_(T&2^n2F5Qbm$T|r0~#k{vLAnXG7D`#Jgc!y?tck+IKgz zefRo??mh2WSoU|uwiZ@T``o*F^8Sr8YwM?vFKm3_-Vgn^PhR|=6preJQ!FJ-M4BHgh(cvm4r}3} z^H&Py)E3V;uL~_4>&|+(Gg`hT-F7YuU`lcw(?Dz~MlxJl2V9Cdg*rtkLM#!NOGMGs z*T4RC`FJG)M52I5Ow>dNQ$U1L1S%02Vl2t%q5|Q8=}b)~ebT{nv=aTw=;i6A5C;3| z-z>soul);&4KyQxx&U0!0AQAE;!zp+qd)qiKmOxC{>C@Hp-}LxZ++|a*I!o_FxJ%6 zFs~R7Sia$u5$w_5>=5$tKxnQvCE*z8&n9}U%W#@^$>!oEv7abWyk~4yLSZ+7li-JC z;Mnls7yBV<;etS%AR?sL)ug6K0-{@qZt6r4YZjLTqBl#LxY2IC8!hlQi-9a`6i%U< zu81fWr58eu*>#!D0<8-I+!sI%L+Aj>L`D_!6KK+mNr?NKeee@*Ui@qb7*j7w;5lJ% zMH@GTD3Pk*P!6Rmpuk0}R;(yqH5bG~-j?*(+hT1cC4#C1dfRui+w%at?TLZ3n+ZYZ zytkzV_)l!Ie6sYna5sNd&g$6JNP|rmJ{RF{4r0(Priv^gEu8*((MfBr(p3Wi3V~)fi`7{>_hl@T zTD#%RO9E-Scqb-uLb0KvhYbz6?xChW6K-JkA>X7VyQBt_62f`LlQ9uln`b6jmwELf znh_mt2)wlu61Vz|KLG*r*gx83nU7!V|@4_*upo(TTwMJIbB8L|KdH zZE0y~adFXx8pVM_@7x>L2NVaC2v*ll`TW9%KJc6COJCYPF|QBYz6s!5^SK2Mu)tyJ z1OE6xe}BO53;xUck17#tZ)~kBEZw)THTlmAme(c)fq8vkM@V$&O92vR{w@Q7UzLGL zo<9YtL^;R-Ne6~m7(?EWG5N`J3=r~}E;AQo!kvlQE(Z~%a8!J2l&_`kyYD`&%t#>W zNG+~#E<1~bH%?peiQq(xAslk1>ncb?5ym*9g+snQ$BE6U?W`A4mKZv|T>^nqB?3{6 zfnopy0e-WHrhK2}yDf60*!W3y$^*R=(3W(YrMSyjIDTV&cTg^ghYpxchbW6DQ{wOI zW+}fgSjw+NU@izs1q5^mX=$REAkt7DFjgr*ME&h=e_KTTyTALp6)}33fSwc+4bnuM zW?dGG0s#;LS%xO8VeM3PiB8GM%BQai=rSptE!kqlexe{DP|>5Hh^S&wbT(nPEUa}q zvLprpp|M3)-9Zer8iArq((ni2G{Iw(v1w%r6uoYAJcV#Zc^(Kcmu1QqDCUxU!$GTv zp;Z`26YIr{j>r_AicFM}<}#4*f^*S0Q*?{5xzUWw!r0h{4c%pw9wZ9Wfk66X;mj){ z6`%rD0&QU}T=tZql)u^+o_|oyO^IMy9+c5`5@GAM*3Ag@uLX0%hwZp+h(O5tMskaGJFDA$$%B=#)Vx1n5F6Ew%iH zpmUOz&(COG8ii+4dU)dtYYbGf>*>kKaF{M>4$^tLg2|8faSk=ePk2+K=X-ZAoHSxd z|_dTGzU&0#zSS z#lml(o6@Az>lQS1_pyao6onb8!;ZG`RC!1}au5?mPdpaLu#O3jsArYIo!X87X9Q80 zElqt`NzJyh?{3oD+_*llvc7eEX?1P!?B>da)wSbm>)s*W@QvWg(&p;&*4alMy8O&j zS08)z@hhKv@QGJ_4oE%bU2_Y}EpQuIVD|R~)b{@u_3$EC_KH7Xp<7I;Mp{j%Ex73TXf#Vi;`^ zCI&H2CwtMRgI+jftn=L|FJ~95x-`}lq(O`lbm?{U3tUZVEPw#&;U^zrB9R7tgv9c3 zUyaG}g$+ssmWd)5mi`Njb)lfcF_301fr`1vB*An-Wnv+|RueyCGkZY3Nn0jnixP%e z7X+Xq0&26ZOOYE<^hdEGb5T_r0tXB=A|HWMv6Gles3VvJ4CN9J#9VF%U_b^pX|bZ- z0zy3IC0|z&7ddd6X!Sx&N)9%NOOW+UEq)V>=_SpiK!hfwBm@srYt4nBC1?%DhA7m; z2Dehe@xaNUp{ZR`7(fg$5Kcp*gqkkd&8YP6F`(XfLb@aF5yKkZO?Ue+u&pVCg}pzZ z?Tb`_>-ze-Suj|IUUvxV(4+Y?N-@f+ZB_zJr50QMR;BFmFM%JKj`0~DLxa`0F} zz{TZc&_P6UATIF-WHw3{A7!y)t|ro&)DXQq4?hE_$H@fLGYXEVi`p!S*+g_OP@C}D zIGqmG+A_6otb6i13(kix z^^C9Z0kh! z(0WikwCEOMl()!ue%s1U+_Lukk_}1#l^`$MpFYx}rU2B_nuW!xk1I0x*+ZI!e^Xb33Izd*xTw$wgI@8N=#D_d z0!4Il(TXv}ne1P*nPhEpu$hSdD41zjNJbfmA*~vH1gj`C#7yQi5}Zu!lEvuXdW(cz zG6MBP*T9U%dNweVrge#k!6?#DEE5q>8?H+b2&X3=&mP3=fWoZJM0A6cxeN>Ir2{&x zh!s!z+NkeaJ>+6qA)-JLkAc2UvSsXoc9V^uP-csHg+?ni(;^@`15quOo|s*lf}VsBWk`pn;e_a= zEy;RYi?LvKrP;qHM;C;7r{#g`e>spPQ9OYWAyo-ReV|)|UU8uM0A>u#XtBUbr^}k0 zP-aKZ0<_AuJxkcqjT+5cT|!F-LueSk#bzZY^{Dgwo>lRH$CU-xihZc0L=41ELLlzP z_B^x`x^aEr$ol%Rt*w>CGfT%$9rG^1#)+k+Gb=0S{O1M!8u^LG9=i0r>dmWHuYU58 zYp+Z`Pt5-W!Q29K3*4?2c=XzfK6~zB?+-lolNS%|u}ymkDnkGBha=6`=+q^^4+Bj*(| zmG){2nnTT@4GaGI95Pg1)x?h z{e`kP1-*JHJ??*atL7zh+Uh;_{_q9B}lrlww+3uZ)I^bw4qi?}cg zkBur?vjjXsFSfD@Et{Yey;uu|L|LX@IOBj4SVK_o01PI|TzZ9qX3T~Lni>x^MwDAL zD0V8!6=eYdRdJ?XK$^MSGLlWyEkmavJptw*1yD=@Hv~WRT*A?50@1=f2^L65+OmnL ztdJE^ud!wfr=C$vVMR?%z7>(|GWBp`Fp5C>m;w(8i173`q^yKAqj2hV;}97tW;oLY zZWEP+g$e?|*I4QUqE6nK|M-YpmzpT2K<^pSzwabOu;i;MqKji0agK%F-eD| zSN59i(_XNfY$9%oPvbl}MlTHTe*K!jr6NET0FDuZmj6WY4i)#Pg`@Dd94z2efo)~e zaYw+8wkz$v9E+_A?CbWs-3{zh`q;v`Db4{N0GW{`LH9)$821Z(6bBGh1^|ES z9yOe_mexusPhk`@CXfQdyt=4L4Pan}3sacU-Nzp@HqroT%)(He2;(%bKHwG@OB36N zm##8!%j*M2H#b+8&ibei+_$p6uyAU9{egLXV9y+CPMlldwzj|l^?`@4eN=s5^@P2D zy*{wKc2a%d!s6W@-ahA}IIz5WYI)grRp;mRfe|3x6e74Phn+0~NR4MNZ%5n`iUUV} zQ9?1&irLBl9`qfnW|mn?&R%A;5r59I>2e^VjBu22-;*9Yc1#GNGVpu9_j|rr_XWD( zP~t51bE-O{L9v8$97W_KZPY7bF;LW@?Yk$3vIDwkMC-i92_W(7EnIP+3tbRV1VUPw zU3qtDqx7vKzLZ}m>uW5yI)G4CW+zfDrWO6dg}dqiLR_s-mOfSi@LQ2q7h>@+ieiP? zO>H{r0n0%VQ(3Qo#7e~;f;Wg5tWZ!dHmXvO&Mt)|f-Z}-E{h_qfRM$Eav7Z*y{2pV zhM3V<%tew~p%Dv%qB}D2}W^qY>(po7Kxohlf2%X`;Sj-+0c5^GIf$CPN1blgUS*Aq}2J(F~ zd*_{ZO2?D}4dP8JvWE<_>mh{fob7%|9`rcXGnUx3bbc3Vt@E#kL zD370~@$S3t?(Yn!WtCycYdpHjTpryjT__N}RSawg`@%M{4Q(9mB9F>9a*2|Cz8xqI zl=$XhYG#=E_;+0Vrm_ z+vc`5;GF;$0c_+h`4%~#MACBFs&Hv0fPiT-I%(jo-SUA;*`jSu0#W%ov+z*_HVOkg zo}3Rq12MZ%=#oc{HwjZ6CvUA!{nq3yh&Wjo7?K2ZLIBQ|V@7@qk984(0gPGnngs*? z=n%t=O)<9O$6S)2i!oV}84=mm4Fycim^i!3dZ&|I|IL?4O+BlCB}{dkoEJPKW(;&l zRY>5{+O+_MKCDs8bn@|1a=0b1q+Tr?h5hxiGaSI(zHUtqr#moaOJ6&)CZ2Oo;bd?U6o*ARk`58!s?}?OBdFUZ~5H6bmrK~xrH@Z<8rnO zJ`3?w9MF=JOjQU`sDM)rB@`4T3jg2^Trr-YLLB0l7J-OZfS9CXUC>hQ<{*ZM3}tPi zP+7UqQMl+52w+5sn6Wvy;ZAVE0VE-&131Ys)=}<~K!K22fq@W5yu4n5FErH(U$qi^ zwF0d!Q|l7?3TqVsTnY??yWjZ6H!MmQ30l>LB%6X*>jG8^1YOjoq*V(-L?faIafqNo zG-d5{wsyb>_;J!1E;3=Il35a>OqY25F9({!Vzqb-v`k=joY)9A1qtLp%qxfzZWU{Z zfl+|a2(zfE@CGxWOo1O!lrc-%(!Y?qK#}t3#zKm_3NNXI4YM0Tu{7_dlg30D$6YI` zG$RT%aAGriH`FC?rwUvxjhzV;jGpfluN^v@oHM?wEKntO_~%)~QvtYWt&^f!F>kC?>!$?w-g~ct ztp`$NU}IzQf5UMIfH&~yB6^pgDuGAZV~p;pwq@*ycCIf>c|1OlL*~-I_{A^sncf`W z40%NbQWVY;(wkJTzy7-4k$GFprP4w50sQdl1Dq;PYZPh3+GsXAu(@n}E!PKZB?518`h4t*}>EqOn&ljv)hKi9<)z+T`QGc4zRj1O|AV4bitX$+957^MZTIS zVmT_4#5Z=rz zgU1wv001`~215Gj1>(-kN z12(f{3MR4^ocRBL_U`TH^Xt0r``AfS*@z{I;)on_j?ejgnBi~^9FoH`C0PgSkXl0Q zI0a(VZ34KiAxq}LmQ71wT?LRW#ei$ba$v)*eNorFY3dgF2a?+$D3BISizWebm8+n= z$?Nxf&usqq%-J<5&dhJ&!RGqzz4qE`ukYS#fA)I5^AP1XHOP#vSUJ^0(!6+syR1oz z6N(V|<$e(ckZ|tjXB~|tu$LbIhi*IQ+{V8z*xEU@vnM%lYWeiW+U}YC^N(*oyT0(m zJU=kcgv>o~?|I-h^8-tp`|<+bFdI5|lxw49Z;+Am*-;8D#ht9D-QXP{N)@4-vtcNGs*Rp^#qs*+8Ch9dn%_n4OH) zTpd1CPq-#C(!@OS7?P|qeGDQM@H?h?e&Dvj^IY&99&r0W*T&~+ zipls9kmaB(IoaA%)Bk0mv_LDi`)^k#{Km%Qudgf14Ak0{%HFg!tbCEMv_Lm{K~hMR z7I5De9x-bCyDEfHBP}40`n9ip%|E%4Kp-qFfa!l~;E^5?RZ5n;W5VUjDE7XAkn;k0 zRB4AIyB=X|K>JrfXcr40LPX(06hgvVO&DSP=%N?W z9aTw50TyHQsNgJEHFuL`63PrR1X7|ellaO&YA7)mkNRT9)bLtO1Q}QN#-&P=8dj;v zHYK&jYPghW6paQ$ViI4GUeOeX9)rBgt zz3mE0y<^|r?BUk=0UrtY0sA)=wqN`3kNkH}U;NIK7ygS6e`tMaXJdKy%u^qK`js!7 zf93NRKK6x|p8NF6&wu9LyD`mYH21*$(B3kwS%7!(JAz#-u!Fa|kuJBu-nRKP=}6BeX&@AgO@CIkZeEmemyRgP&;Fi3;1 zyVkHGd3QJD5#mzPGevWgOF9^)sp}*SdO=FY)yt(1E(K5nw<9y)%J1}tSHl3nfP4j1 z;P+yLb#Y-dMBsr=Aj&ks37WfR2C>Y@G+`0~O2C8VBvD8SLqN$|ddx8ZOgV(C5{}|A zn#m~DBWgX;S-mbghI~xFtE;gL!9tRd5~@aDmCVx}4L!Q!xrKfV0i&y=nV7!FqrU2m zOS!oqj42zJm{zW4xkpXGcoQVR?fmIoXOhX%GqK?6KLw?e_dF`S7k!yQMqeg1$9OWd z8Hlx%lQAjXFHCyil7}jyJ2VfYxi^Mu^Ub7{oQsrsOpt|V~k{^&Vb;p-tb>$Z=-TFmT zDT3Etdrg)Az5e>^c!>fT1Envr^b&8CNMDiGC~YqLYmyrH;^fbSs_=pkS8IdJ3R#!@v0$;SB5BP z@F6OC2pWWyB7=^oASv=-1R~}s3vs3(q$rE$b*wL8q&q#Lka>;S6`;f@B;0Aj=qosj za?DWb)hLx(^b0f;C9 zpRTfR*NjRa3Y<-3<&aFM10Vs4pd&aC{8PG*J8c0`1o%NON+<6W{Y`$u3(TlQ^dL-^ zH9VMPxUg1_DN$(@#-xNcJpAd1?-v1%cu*GNb?b*$p;^D%lBrMw+(NAZV2^CmOUgnQ zAlXj_P}}nke*Ic^>JDSIH#xYP?xy zkgwj9jY7bnZ0@D7C!5Vhy^iEf6PY*<=K=DXyoD@hB;|&1H)%!T%|gA7T__|3x@bVH zcy}>ZkNENfk^^>!a^weO36RHXqzmkz14)3fd9P(i+IKg_ob$$e!2{(7N)C+UY((jC zu2~F)birAix11!SB&LoYJt|vkLAvu=lUW% zmK+c*WdOv+5iRk8q*CN`$M;E<_$ietU`iBt6h&nN{1XGzzcs-4qCl3wR|JvK>N|gRN9Ofd((cmqnT|xv)=^G6uG#Wqq`e2O&e1Zz#Y?` zZQE*1k_QM>Pt2u~9^0H+%7qk!7d=!KPXzGNj|LSCk)WhkfgPiUNkR$@MHPWX^kBBB z31uRl07b0$tP8>;qi8ZH8GUIelraFYM4-cv6xoc}JJsEY>V+~yiIOBzpFPbY!`McK z2Hkl;7{pJU>^?irYP+ zUX#*W^CI*@t<_$iCXcMm|H@)`YulsgRMRNEWkzNyhN&pCNm>JqqSS?EO)T#%cm)=l z^(m2Md52g)0xywc>7k!tc3=5{JINBy(gEy{NSOb zm0f?X{OqMqUViz<&wl*VPkh3cen0lY3)lb4=l9R`YChAs2kvSQT=y>zn9=1|J~#XS zFYqr5me+PSwjcjDkDU6KAAa=tm7OP#uZR`Pn`cj~omtp8yS}Lf&bn z(1@-%zN~h4{`sH(c^{5CG#$7OVkH6+0vJF720DTUJ7GxzgbrLaV4nLOAOwNHLLoqp zz)ZI}NC~*o+AVSle2mmViV3RwbS>X`Z0EXD28Z z?9m-jMZd8yJV~Key?~-DH&b1xCBXS4HJOVSO&A6?dab1edSA7AzYIqD5+*qTvRD5) zB5j;+f)tY1-CWdorzF+02Viq+s27jXgD`}dO*17dWU8fTI?XO$nR39@^a0M^1^Xv1 zcy2mzV45Cy zyRd_7SQ~0=+iRJzuM@WK?u85Rd=5ADz=*)tCI6Bng+oLG zL4b2a6~Vz+q6EK9qU2NW_#1arq0ya7nJ0#%LF^K^xL1j%O*qO1X4FeuGDIDPK7DBr z&;&h$8k!ke$%u_?$dY0*8LdgyLNZ*zOJ0+h@941(twuY-xnsFn zhu#9UOl3Tv^={_}{{9CK{rQs{zjtY6o*%fY?|^gT=N`C`2W~$bjV7v<_xgES@SljiU6sDp=H!>gwb+?M@9JLNbn5kN~<+f(H-< zeAOWv4wN5o)H-wB79G2;VBP5gLbRzz(2LWV9!v<(qZ8R9_<^ATJ|vHazQ_dR)B~1A zahf~CjRl2tlxjZw-}j$vIHP2Ok1J=0M;D@WrRK z!hY;gPcn#-ByfU(Rg_&M!y!St0jPM4Dg>WEDe85h2bjT|zWH)Xp5Y2gf<}hpLpJCL z#o-x~>*x#$hRt9tHV{Ko(De4Vsg#g3E=dFF*g*M#0okn5&>U_!lU16v5h-MO!b+p- zqE)5Rt06`$G7(LN!)GTwtpPP8y}Krh#~`m&rI%i-#iJu(qZo^345CM+S?FTTGzu57 z+^iuwJeQiI(E&o}jzhG1RFc=7LYEzDz}sg$!<3XWz@Xj*OuMqOa^l1ZWxy2!yF!}~ zqhH2=?6O0xb0j7Un6CVysO!Iw*!KW^03b^s zcuE>b1rV4e!Xl?kf)ha=Kte!TAoBfye{P^&jHN+hL0ER%GLYMrjiwZzk%;XI7Ihud zsuF3PO%ymdY)1QCm};9laZE~Zwvo-zVPu1MNmTMcgy#w}MNSN#5Ka=~k$-3t=qMKu z5QeW11_^)-H#?$^Ia#H?dKEW{MS5WvERtYo=o~TP=+&S`NsJ^79tn%CrYWY;L%AVT zW{>*Oq*9ZqWkVgQtvg1bQ^^1UJXLC<6w;Y~T`=VbNE(`efhgx6v6Sl~6EPg+Q$r?s zW(qTdBpELPbx+5Lx@88e&p|4M(3Y#1>}B=V@alp9?5~;ehZ_ym@F4rW01gPX-@x2q1A|S5b%=W7-k}X7K|iRO}Fpc|4`_r z!RyxF53KrsmaXl7^z`YE?C!pK_|X6G+~RLNf9&raIdp9O%<&C*4Brg=&D~G^=-#J4 z`NYRQckbh#ztO#8UO)H1+yi%)2cCNQvwpIskKv&Z?9Z9wspqO!q$eLV#tZjGk)&#?*|5&f}ln=Kx((^|ERf( zvH{ncYC0|yZWd_#wo%P2L5$7Xlu>wcIOmqkb>*FOjG>l7|G3r3=yY~af{{?1`;?Q^ zdFtQ}nScl21hfgoX?4OvfEZm|@d7{YbjWp&7<7s#0f&^q7)m^<2WDU``e7Aa+}co= zL64Lh#d&Q++8{|t6>#l0P#C}AQsc%4l;WXN2@MbzNfCIID*%J>=3+*~=!5|nY!pM& z%qn2X?934bGr%Fhi3}r6D*IW&ellPQ)B%&^6J4Mb1d}KUsE3`D^zdhB%`|BUU#X`= zM>1^S4aS7oj72h>ua!I-fEh|chWc_B8Jcxb;u&T{L#rV`5~(yIQcs39?^ml4^-@x6 zj(AN3)F8u^-eHxwd!)hWz1-d@YrQ+d7y|i_m@Xs@p`JWaQy22yX~@5Evm_^5JYJ2r ztP8cN(sw9lq*)`A!t0yaxyWRBjPp5xS3yu1(mOI=^?bq}0~y6Cav3oYve;OKBqgjg zFBDjXR3{g(DP)Bb`&}4q2rqST`0!!>zTmpa0hND&{D3`f_uUk8&KvJ;54c~HjJT&P3 z@;wTJ!ln}aXVd>-fq*HG>h3RBAWjOB#Yy2*qCg-OLVaf7s{r2^y!z^^k^oW!QVKEy z$iFG5ukPZlP%Hyr2+HwDqQK1y8BzEhl_d%)ZAl@WdBQTwZFxaJ1hCnQZ^bl`P#m+n zZE9N;Va&ZtqP>qVqLM_#gk&@!UBn0VLPz0Furi9^fVfT^Gp^V|##p>cA<_%w6RaLvn$<4n}a>s9h<0%Xv{peeD0FtJibnCY9p z^6EP*dV`i3Bw&LCCoEK}5sdL#SyFxgE_%1~1Hbyvp+9|g;U7GAbe+=LfC>pn^|IC>kBOTwhyr zK;ZrV=ooVMpG^yR9HccG6B!Pno4j5h;qN{(&vWdkR^-(X&?>A#5K@e3{Zjhz|c&aXf)X z&pk(pI~oC`qeqOf5MdY+aD`WaPe>9~18{swd$Z>BjplRs~JUfj-p%DQd zb7UuLF<=JdV2%KfDVqyGg)k`Wr!_1DpJ4Pt_|Qu=6aro5Xo!KnDAyO#Gbopul%|Fw zsf#8|g$qGDVnrWw4Sb)0u_l=#dx=#6qo;H#*J9kWtT6rBz{20xFSFl&0T1 z$}JxG5UKQn%uZ!N+&-);C2HMTevGj&j84)n0AGPyuoh|! zC1R=vW!=<1`q7Wh<_Fy7My{abz-)?dZ0ZBdtc?7CU3qt3faliVzytl}(Jcdw*gOLG zV8mfT-m0*)9(w2@-wenM96NSQazIMz95AyEu;Ll+EP z^D*Vb+=E<#w94p~CMB#!L?tO3AdtGqtHHSJ%L()emJGmPRJCI zvnQVXG^p&JCo<7`5pyZmg)Cj)BUJ~M@=6O76LLm18|;HV@& z90C)*_10Uz{_DRE*MVxlk`vaE8c3L6m+7hMIPP3_!lLe6aHb2FE^4%@#5kWoIzs8cdfJNb0z!Jm_$3mM>s8)<504%B= z60VXMRd}u42WczqKzVQi9Aa&VNNK)s4uE0qnzBL3eh36|2%-d;$WsC-fj6LtM`DIB zwP2oksWA)qM3=PD!v+&nsUw91jD5WHvKY8VDK$ ztC)wVrNpZ-D2FqT9s=~}NPu#WWV{`Yf|2muoeArx^q3hTG##^6#|);^-039DJjN5q z)GAvW44_JrUKsvSV?;w&uLhY84W`3CB#pvOHMvE-*JOh9u!^wd>QOz?1?3HIhcjv5 zb5lbGvMQ_%$t#rx#V~*peW|r0{FWA`1rhNWa1o|GkRRw@8I1e@2D##)_VO*ucD>DL zN8bo;&g<_|56or;W|IRVu-A=7NEe5#1X(8kbVaIGW}uuv`GJulkRPxtEl5`_3)MD9 z*11h#h1(#4u-NEsE*=WwLM3ur7yW)}dJXR$Lp`k5Bl&xjWmK9f!EM97?A-=Umaj*7Jij@geS=u!ooEJkj>~^5Sr{n zfx_OmTkUH>3}FNlWaA5%=4;lrYOP{|8haes{+fvKMqP;MqMi)Kqk77bQFu&Azf$ZH zwF*t@3%>%LUd2xW36Jh-SS$EovQ{rckk@hYZe~8Z8wO`Kd3r{#(UF+S9`U1|!ql>d zTD+!+m?@jr(1te!w&l-ZFh&=ul*11g8Y1<~Q-cb#xy}MZd}!4Pv(BtYfE6uKk=EVc z%5>kyC`C)l)kiN%xdI7+ghx3(B%qT9Q)3%4mT`Nb7>}AT$*{1g3EjOfk4=rub=Q}v zNEaQaS|<)9V5Vu%*A@U>tUznh618ZR4hWK_zJ7O|5={o2hNG3i_05J7uOcfFKwSbvA#3U z4~WJGC>-TVD^{axFW2`#P1l5O6ZkRB0OS-)UMZ@{Mcwx+4>;|>qt3*_tD1Ps6$Tu2 zYCAf?GZ@duqHn(Wre6%fmO!9G6Ap1SJG-5#4paEei3~(Jj!|gJEfUc{9^`Y+3S5Or z^wMew8q~WUl63w8S`Y{&TB-GGFUYpD9^8Uzy2cWt$3WEjX9Do5Usu7UaAx=u1oc?b zfC0{Wzn=ne!BjvLLS|CGDTY7kq1m`}f>Lk-7yv(*AO>boi2)~+#0Z3!*dHq6kT6Ve zg>y)%ghqlc9w`r%=}SYH&7?f)WfTl=ge}PfT^@-wiY{dMiU1oZ=OrFC}`ktTgvq6-(PVZYMr=+SMO_gtUNqUn&QHp=+k zl#X6y)2B9_3^tLbgHI>rcvCi0ya`$uUZ3tQ04ohcAasXkym6ap4(Ib=KerH5iBZ;t zw}IHOt6q#Tw27ELGL|cn;S5Bx^=2uW9SwZw*Isf0u&xrm^@z7wT+RFr4iD&5n`7cJe4 zWDjf#V&w+}TU2s@svd6qsh!VCfvgOIBDFD)-qrI<5sgf#@O3WEV ziON(7TwOVZT$Q3tnw12EAj9d7v?2^iHY*7j%MgeS2txx>Ps4beNKE51^C+noc`}8m zY#ss4q|6#M1!5=-x|=L{-DzW&@~58_;Ziz!AxZ?`nR) zmjj#YXBM{49ADo(v$F8i-qyvP^Sg`Ni>ps8t)07c;iXqz{OqNd|C6U)`SEi<`m&$D z#H-3&)!YMf54^`7xKV!KxmP~#`vHG{!1n|GGNDfh$`AaXYYYEk>G-oNPn~&WcXj9N z$<>`l_g0Uc*;rjU=VxbW-w#PYOKWHS+=t%}Kv3XQcmHW(;BLwc4B&Ub@@AycjR3hC z464R_$(Z|fQRS$d6$ol-f<@z%K~t&%s73^)4IwSyg8~1t)$s={I2pk?_zi(}aGEn0 z$ixGRu2JxVlNZcz5O-yBGzT->w(wotNb2jfb+)Pufpm@&gP;h|>_m3Wq(@2Kqe}SD z^$;1tRnfui==ZB70xETcCxe~fC0Gl2Vi0tSAWuAWYIO2CV(7$}0(%$`jtVISjm$`8 zhzovz2Rsr0u^13KQkgI@=)!a~sf00fQNkV**fjlT?@Bd6HPa_d5~R_Wl7OXpl}bcX zsg)|j5nv}Csv*NXt?Dy|6Zp_0qD@IZ!h=Alp=m?9t2Y;YjY2a&bF9)3-VQ(Wf3TLT z@x4wSTC(QlEm<2R%yaeg(0uk7?C7ZLz^iKz{w=uAW3;cWB44=L%&sLHG1hO zVI;=rTJx&zW}46OK&f9p@fh;R|20*^jVh6KuAUhNqR`s2ND!AA&bY{Q*vt&o8$y+sF5E~gRYw#sHs-F-exQ~DD8Ut^!aTiCpS_7w@a^a!)M zNG}M&WdLNAwaNp~InEJcLq;z{=tYBG7-Pu{paQk1V&6FhY(sm~HWX5dKW1m|XIo06`Td1B7ABEu3SeFV-yag6VXYMSE(wr z=4~DIYPf=)AvCEZtcE-rXltNhd9jEY2@o!ZlQeoZ>!`lRrYUeCyj~5b^#G|yG-QdA zu;J9G_n2Xn>*$fGY{RRsi9Ew}Q6i7^O|AMe6_w(uOTECWbg5@vk9f-xFApGiN(fl4 z2qSE&5w7J2bXV%`5v4~>RF;4qL^Az7PCaoY@jKkx`ZtTF%v8Q&yvdpf9;rlX)YoKQ zGi6DBd|$iAfK}K-BtE*hh{WfjnJs z9IO)NFdOiOfz4nB;K4EKFm)^f1CGdkzvCL^043u*g`Ge$7{gHu;dq3pkS6y#V$N0q zX`>M1qKCA)lno^$K~UfjGBk>#89F87kt#|I>d~pqJopm|^?|EwK!7vM+3%;+z_fA# zdb#u&0s(lL$~HDkkkIAHecZ$~)oK>zJ8&9FmV*s}s6b%T#OqETrH3jE=)zsV2_`54 zdxWn-EOpNtAerHmv>64d5B6ZfDq2&eBZNbn8VuV&O@lTr`>SDtagD|13|2DIqv^xj zG=toniE@QG8jGLvk5@3>3-8gai%}@iG2E__wX`(^o)T||!?~JEnPEg?c-@t(Rmm_@ zrcJB4n21(lh=3uQPF++ojAo3|a0a5E8M<=|kcq%HdZ0%aB?~oN%8k7UI=Rm3B{o5a z=g)(n%32Ldt@&DVjJF8k!? z2i}RO?}exG0|x?ffm${ortmH@OA1*J(n|e0!nMo3bgQ$#cwfN z>h@Io$c}EudBoc+7PClbvs>G(^Rfg2rT{BBfG{3~P2^thu^Km{9)(=JoDTjy*SObf zBJbjlRLUM`6@gXiuJu5EfS5!9Rfvo(QVL`UmmIJMStyJMJH;9HivZ(H!3YH=C=S@y zf=?mE?zWwU4pX+B>r!~+88JtE5CjAq^5SQ)RON`1+(n_Nl0acrjj@b~j9AFhMR#KK z=W659X(06o5ir)(}Uyr-jA>pd%KDqSN%Et36t9~cAf8o+I zFTV1LXI}h?%P;-p#ZSEK=RLT>%!inJVD5qUzyt62_XV$f?x`2w@%_N^%Ff2-nWwfF zF7GWrwsQXH>V@^qt>x9VlczV1@2!;|Slrn2v$VeNXJzfIpZoCp0e}ju0;OQ8yN(44K%PHp_K;rC!&|ZK2 zbpX$qh`=+)C3pZ81X`TPj(DdtFzMzF`}tiDFy=^AI#QJ(4N%G<+qKSBi*k>k6s$$3 zLm8vhxQGC93)8({?pFgSmc2I?FbOmw0!juL9SVK*)ydz@_UkGjGjfzexqc@Fi0W== z@^B_#Mn5yymKiKDuh~l|S3PcpRJB?z<7$ z{%C}V7<=|kAn087{pEoXgp0k(7!mkd674M&A94AIDl!8yQ5Kubtq%su5_q)6+_2oO ztUb}#4NE++hAnct!!owl5T?CpKU&OIGLrPOuMx&K1A?l%kFYOh3IzhDXn-#(tBHWe z5m(jA50LCP{+a|~!L}MVeR0@7LsPo=>yC6O=ioQ6^pqUX(V&_7}&R7IeMVQY;4}pk0<+O<~2vc~W8L3egzUa|~9?GXiT`34qsD9|2^ql^m zZknc1kX{ojXDG{+gxL@oT`**Z$_$>`HOZGIR;W~24H;Bl2Gv@?#FL3MVbo}vM%n8Z z)?^LD@GjJrtF)@6E2D*J0b9Lg11iO2L>OV5fbs*He0zXY(#c?>W6BTos0L-2(ky0O zF(#FODfDvHtLc?tbm88PKg-PevHWD!EaR5CedN`ck)ffrcOyR_GqAq-xN>oMXL0lN z($<;9)yqq3&(8A$@4*FaKE&Ju-$xHzn;-D^3H|>K`}YO%1OC;(nZ-w*Sb6N&+QpNb zPpz(Rlpi>{bLIPid48aKF=XY!i)QcIcLhJd|E&Egr#FMQzZ~%B08)PdL*6JYFzUmf zLC{fYtOKA~6YvQ*xoEp(`(9LL;FqQZwt-5!#RCHO%MIi16?K^-z6D+EXqM5Ge~BF3lzM?uhj{{>hAkkBK1 ztJ2>__}bUL29$pFt6!BXFcFv&A~g%(mL$!Nb(RG1FwM@;%rF=BuojHWPT-BH;77N3 zeqgFeFM_2MoBsPLGQyD;EKqZm%Bjx<9iIvP|7mLS@cd`^{8$IuZy z9yRHrq?6^<(58EC4^qZcONkl``^~Nij!Lf3$`72$SKgY(-Z+Kks0KB0y-3o4Y5HXF zl&j}GZebX!)Z|{;Qb;G0yhqyDOh)}=1w21V6f|YdsghMlmqwJ;X(>{xo(y?}@u)jj z@FYjIEH&|PUgC32To?9Zo)-#mCd_Xhk$R)EpLxA~tHrpMoaI-Fz)E8+ZSG?707?k~ z;1b-Q!MrJ@NKpwzN$^ui$4?H&gUm2DhaJ{npEVk}Ymb5i&d)hedTszLj zM6K%bU4m!fRHaCZANc`yA6I)HV)?zlNb6Bph-^UjdX-49)l`iey$payt&R_Uk=QE^ zD@jVsO5}>b$lZS=2Xvg(pK_()oF+Lb~|#PX)*WDx;G31rs7k(eO1*!x03 z-Z1@yixqad)&$64)Kpox7AP=LJTU@=tb&r^j8)(gLkc^h2N{z37IwsnNT??^9d_~| z8HRANPM2vgd;2&3G;|)3F$6J;nrxUv@T=+BG>}1L%y)!7CZR^eFew}G!#0%!YGNnD zsxc6n^q&&T)#nQQ0ZN+_N>D`@B%&%kwlY2D2aIce`2nl9_$hL#ksl~>5~x?*@l@&V zQ4<-YQVpvZXkHDM{mdI?V@!lkI5{r~;Jh?uSCg7?B2z+xNAljX1%|9Q3s1tzns4#j zH5Nc~7q0E@I}Aj({(it;BlmN3YuC@l`YAu_E1P~6*Eg3ow$45E%<~`n#JN{~;{3;c z^7JP^BpY`*ylF(E-tP6Bw){F?+3P47q?dT7We%e+dSvz{``Ibn!0;a1haVzR{%Ex zXU(`fbWKn{aN_}NdGkkZfk>TPLC}Qp)Kcj3;*@mpapb{rassct_S!eT@r|#4{p(00|J{SnLATnG1RWa*j^&4ow)$Y3pp&C8$PB7kIT>B!z0|QRCzVw*omH z0l9|58v>ejL8I9n4Z>^`*81&|dKeOt?7k0qLYoe5t>9>+JM`;L$HK-2mu(>cat?cn2PHLr~ndz6CpIEM=%38sW0K0Fcj*j9)-;?TA5^s zkVzUyvLrmC3lyYem3orl8IlR8G#&Hx7PwSB9nIZMeD+v9xa%`;zx9unX+kYCj~12h2P6k9IrXkfE=|_3 z1#GF?Yj#TaXr<*U8rZ*h3%EdPVIzxNt34%1dK5oh)rC+ARo8!vd%7AIe~h>~nzWKZ z$!LmKN((qaWN6VFZ@l53dg*Ta6vJ&LXNvrQE|ee|JlbUpu({+Y#B-JqvjJJFQeTz} z@>$!|%t(ATQ+r>85#@vzjQF6$BbC*QR6|l=5uogJAwo0|9|{pR{-`M?aH$Z%w+NGa zbrc^`YlyVb!}F*^K}lH5L70ZXP^%PqFiP@9q)>NV(6Fa21k?}^aFnQlNUHIoS)z4|WOUKJr8srim7=@6NGMto zAjYdnTDsz7WF;djd^SbUcLKyzqB3BaO)a8_dAW#fG|L#E@v^uA@f*+ZlB2}?inuO+ z642^VsfM2BWxkxLi{)gESy$GZwP%U8O)P9H)9FLryo7PP`wj!mt@8u^8u{_HZOMTX zyQkOJPRb8#t?$h91J}Jk%`4{~xZ6E&JNbddwcX{7{qh5kt!+QLDhu$$+R{1LK(1AO z;MmUN^ZYA;X?H#^zeSjC4(KlGswIa2+S z{g40nkN@;f|Ma`x{Vq5Mu=&lqFGArlXQERQcyQPQ2A!l~E$|Flb7B&3@wa01(uP(*Mj2*EQPs0@0M zBml0c47YGveF@M&xmg1thz3Z8q+X#umN1E!UIaX98VrbH7HTMAm{#-BF|}$C0b*VR zqKbggNos2PMkm0-=BQQWaFiNj1@jo77hEiuA;qC3r6Geaw$RY-TkspkY88AF~D zk0>+9lR=vDf8*v!O32e-Qsj-;aE+oyFP0z-F&Yd+Mrl$;VFL|_20E2IkMM|oL-Raf z$@2gw*clH}nss87z=4*Q<>Y4M!U7ZG-ELfDtT$?PL_lvb8OrsD_pvuXtKQ4CYdk*q z;DaMMAW`7nccX;BY`q{L6xjG9KVZ)m2khTFM4@x>?~ez{3`~OWRVrwg3MdF4D7|8@ z-a6?Y6gciJBumtavc_6qKJ=0zz`G*Zu-3DsTfnhL1nu$w<612e+8vg37jUuEZ{#iS z1eAD}aUs-IU2?V3vPa^r6G5)nw*(FaMAa+tdLe z@TQ4O({fUS*Mt&d3B#y093>r9YRoGOGn<%>G!*yf!FaT8-TK}Ag+~H7uU47Pc&b#pxvC0YeMy_WK$}fB|Kuk>{nSfeeEQ`t{n({1`nlWhM|1n<9=M-9P=4Ur zEWzbhKG*jH>$?{g)_0e;PRkPbieP>7{MyF3h3(TPH}{V2ZunVWxV*9W?Ea~9eh!~K z?q_>>&(Fg8xyjG++Mz>#<^<}^c14}l@UHTAX@0;J z0F@c|%S{gO_UtPQuNq5c;E_ijaYTZG-~RTufJI1^`cAdW@xBuj(Dd zl)$lJLWeR_UDkj}xKRmMs$>Rv$27}*{6Ls_h@LPc<%Uizg+b+Rmth8F280kGt_hx) z{?59)qK`J*^P&3>2!BfDMdgV8{Fx9q9Z@xpBUVJazLU$9I#K_7SXsu z#@p00L3+-IG+O#y=t`*JMpvTCPY|nr{Xoyv1gP zTi$kx1!?2hO}3S|CqlZFyY;(tTgi5!eWc#fb?>gS-^D9cTI$Nd=x)u6w=VL+tXsT` zzeB;l6hIOMf-RCLs8VvkeP2!afnWKRU-9vPEP+-T2AfFfGSx>2E>`5H3Vs&jQ7|VX zm@^EOxG3xEpkZNo14bgeN^=nhP;tqIwd=*bB8JJTcY=^q3KvKh;fnw=HC0 z&cuiSVg=ud3_0ILRm4!Eo}W3KhQh3p+eH-}#UG@*jqk)nXj;Gn#%x)hu!XJGgCurO@L!X$PtRmtTLlkkLAQhen3sB0|K-$ z!07o$$)EbtNro|+_{ZDnWqIShZZ>CjZ%Qwe!_$^R!czxNG_Gs zdicS4e&Bw-Mb77buX^C-`GMzN`RvFK^sfy3$-(8-$4_kR9$()%wzqkFe{1d3GxPkw zEaDn`SPRO!i>S=N>}Lb629ZjwaN`6}UZpYF+hhW$deakRbx%2RH>W-no`3o+x2TTQD4eE3Talu!>5~L&m z0crw1O~<1Yff{OQBi}6*EHon{s>EjrYYk06rJE++>;jM`r8N+RS5INK5z{n*6w}WJ zAPPunfI5%7k-JFNNnu1E~ioS#Ao%%mvXyb2WIX^fH9`;h5Z?C#cAWfxECFWrBZ0wR`%!@i(B2oyiU7)Z8~^se=UnRh<^hqm zV0$1+7sb8G-li8ypx}%b@GTO_0rA%B) z7fg}Crgr7*PU_K)7FCKi!cLSDeKkdb4-H80p^bhrdWk$rK}o5JLLrDwgX&1WtFd}~ z5scbNG`yMxN{Pqx(5x@XD1O*KiF*6{1|pxNNtuhv*{Qj7yTV&+nh3Cm087|L4AH7=6e_Rzw+P@FRYyPzc@U5=@XY<{u__~=#QRt z4!-co7he3-y?Sq&&ui|1`@sXVf0J-_zUrTT<#U%``pnkpOa9M>YwP>#{y(SN=l;>d zf9)S1`|JLnr`xACPo6$~!Z)j1+Y1|;8%r1c9NXFQb8>6L&(hj?Klk(Z1A(zH7<3)M zUGH0B;m8a)Uyv(uxJUc_jxPs( z<2Qaoe&CP(=#L}{U_WRL27|A<^o2t@F`bV=tPV;t;FcOP4qpuD<@N`s0dHEJo23YJ zcN}XX55ZzIIch;TC2cCnr@{HlwvZtx2;f0?erXFpVgN-avPVa=ga8mbP^BYVeH|e{ zW+)k82!=W9%?O;UWCLEMa>yi4m`tcZ89aj%2K?6QamWA_W*4jiHU=i49EGFk;U!Ig z1YD;+B_8z+eGy14KNt%?RWK=Xph_O&E|dl}^pNl3>@85Prr8k-3G+6_V|N5DQbVj7 zJksQ?X@bvTX$tubks;~D_3qS=q>Yylrni~3WK` zNmDRirH&-k5MU35hEBQ1h`~(Kmy9>1>|JnsszPqw4)S)CDGv=2)5UuU*@lO84={*iAGFuG(RE5vF{B41gCr?^AsLPT25yqmj z-taB9t}_PLRyD_{AFRDfK;kkRVyFOxu0T0l%j_Kt{6t@C9lAwaEqIRqra zBL=YFb`$(M=zsWu&#RQ+(5ljFY0Y0KN#xOCxacm9WNjMG3K291snJ zVgZC>1q!7-E+)9cqJo2ZVq%C;hSH$BN?}Av4-$6p2qP|yuq@JgQwCK@f0t-F4T>;o z5S|jF&>Z1)GzEjwRwbEn*Un%gs#JPpydm&}b!Ukh7iZUJp~)y7BU9^cj?u;F>P1MD zSQZ+~9HSgX64PXL)Lj?8QsR3w7Uks!Xd83PU;_~tT|BBs)$1jqTJTC{dsI@c)o_Mx zzD&}Ea(a?UI7vn(#xoIll{C!u(lL3{A=bHH$>(02HD;w*U3QT5Y;9Z5)~b4ML>Hm^ zHe$m8kz0R1u(Z9iu({>`T;Ts~_+NkEul_F=pZJGQp844y{=s>EVD|Pj=jR@{H#~5s z`GJ43apa$FK6-BR?9Rg0vEALH{wDV3);vEj?#0(-LR_J1ckltT-#-kikc$Ai^0~nD zKOPwwbTo_Tx^p~G>EI!(qxva6od8soYCIat`2{NY^7Fgj{jRjYx4!kQZ+zn$zx7+c z?k1Pi=wNeFFP-PYbG=U|6 z3V49$F-_`grCE)VHqZsC(L`aW5<@K8SW+)F24#;{mM{s0W=)MhITk|$Nlkc2m>bnk zWhb}qyjOOmSKtjYo=f>wJxN38>s6-QSSF}mcaj(-(vc-(yj<_dU87g#)$76rv(67n zy%>f}M=Qe&p|3e|pzemq{-#Frn5h~v9+ffV8LT@8Hu|uQ*-b%d2zrdp$$?VuA|>7h z$mcQz`)Tr~$Yfz)(i>4@Ntgwj@t`cc$_y*b&BcOrfwH>H#ZpvhHFAQ9=oP3A0K2|L zE^)~H&WQ8_w}%fOE;C>QqHA*kvo!>S0lW1;q_T^v!L+Xr0L}U1_tyi3+}YA=LbFl& zYB<00U#}8%3V81$InZ|k5>3aCA6NQjz|tCNfpIyq0&NYOt6gIw*e|a9?kuCU-;vd8 zH`%#(%h-i|dKdrO)4ThXqSz~zc99od9S1H!s4F}HjKC{(=K3!);0pnt3Lsw*$QZcq zN8+>YR8eiXI?|?6cO*sNxKUEBl`+IJY2*h4E^$lHl-X(wJ(SRc*xYShcMKw+ zJ0;{*5)iDq2saUx$c#*_c-2IDq?4Flv!p4RhR7R~s3b-S${3~TG@?NpSF1`T&4{+i zoTrHhJe~A3dL2b?$pM6!z4hx$5@8HP7?p?^@*_SQZq{sFn5q}j)RJDe&U4}|Hj#meg27$e_{Upz`b!poX_HZ_Q0Ly2mbZOU;9_<|IzOL z>7|v`6KfZaub$sn+1p&*-&{WHXLWtcPyd(0^_4Sz=HCwl$wFT@g4qY^-{Z$Hp^Lz{ z8sJg)0`PGbRnGD^X)@o@ifQ_oAS=yBj~;#FjW_=A5C8D@fB*NT1-|p0?)$jS*Qr3)a>5U)cSqZRUmCn?vxAt(tuQI3qlBy&l5 z*IUR+lcOAkvYhG6M(TAp5zrBNgsgZ#W!GEsEF=JsKoMXAC0&H^G<1!{gBBijBtS`) z=mm9vQYsn7vE-R&;xscOv97KeNdx2glNe!5`l{hNZdaot&_av=+cd>!Mcm6#UFUT% zkS@f$K5xWCbSK7vN~3r|C=WCuzUix1V=SJ5##;|lKfV3^Kil%5xtLwvBMG7-O^CwG z2x~DWRi?%^q$B4vFFb|}+n7Pp(7jDHY^KVfH8F-T=a+=3qv3ef>wrr+Un@-LMdW0B zm{ThmX46KVB&>+%K-mB*O=&o@z;x}hQ29_7eT|5yk`w4E=N{)mckI|PLl_jS^@rx< z2ioa3&kxi(;(#qY;?m$TZk=}yMCU!;MGst?7MSJ+-jN&-#tX~J!F#_F!ruD>4?OVj z!w*|FGE4FUNOIt@DOp$Y0~VVV<+f4)X|o759&Iig!78;Z#Z2Ua9EkuP1xX87X$_BG zeY)NJ^iTh^>v;(Rj7OCv1c-HESC3E3c5u5FkbPS7i@*4bP7?q z+D<`frnbz02wxh(qv6USB&ig&>@sGXi^yZM3l}D6Q`_<$ZFZ%|P<}v(7a5fHtoUZ) zrd;SNxY^EjB3~71L^GdEhF0AXh7w)6w!7Uo zM=zCpeR`~%y&d-4M(*Dv~+ zBnRgCf!S;G_4vTpz}1i#e)e%-@AsIQO%6Cykh_CR0idXfg#pMA=7HZpU2mdS>U4Ax zIhg9$siaN48Xq|WCx7;5fA;5p{^$NdfxkBJt#5tn_kQp9e)o5O*H;9-9{}6B20H0r z26)DS2#h%s)x)1EX@Iy~*6=-ctpg8`!`-9f5>7*U=?j-aeU4OMkCFfhB_5UCH;saU zCt*kgg*th|il8am{O$>iR8Pjy3;~j-Dy$g#qL5)Q45bWDh=V$iy%oM0e$K5$OexA?Cc@t zQOO1duuaJZ9o3i=hBh_2Bdx45eUdrK8fcEDL#O))(igErnHxC=ue+J*NOO;BsP&ku zjpYrRQLrCl=qP#i7=>o?UJCzv9fmN$Y-3L^3j>rQhOwC>+z4|5kSg`^)|7<3AO;wh zY#}IQenrswazV0YugTL?^I(8*w+@V;1IQC$`as3V7!=MNxPW4p}WNkwgRls ziiBJNR;$t@N$XtM?cPOR5U!&vt~`LhGf;})mwxG&Bnt3qMt*>vG7R<$B{q>q8p;ef zYpC)_Z3Ymq#gMB#8uSDk`)J1%2``fT?gAbI`N~oe-je5itwPJ)>y}Eb1dUqN3NJ(Pk$rwTx<0?H8 z5KhHsB*qG%A}YcZa_M0YB_zdL!b+9;B8*4FAsYu_RI)^udR4E~w^jm}S#5@39+OOv z+d0Z|vg#}|>(g4bL98)8G=0Vk-6QS@2!p>VbL;%T_R7Weg(r^fF8g`oBR}vbmv_E> z`Si~m{*O;>EH7-XT)Ob_mtXk8g%^L~;!8jI+zX$6{>9JStM{h)yyhObA3QLdADI2W z7^uJQ-yit*M-TnK#}A#^KfSTGzOwfG(#o?Nz7tqJy|T9NXLW7I&%(wTKfWvQGyi^I z0JFdtL_JIIaW>$ITTu9|^Um=XJb)GgV`?IYqe|EV5Oq0H39C36VGku318f9K zfFG6JA_)U;(3)cu>7~h0%NPJJOzYAI%K>#DA_`SHeDMHe=>m9lfK?1kXmkS^ntrBY zm^Xk5#z2N+b{1+4wuQKqWK4%K4tJ{X<_-8N{#sSirji&JnSv7KaE|3VO(sr>l0eA;^QBWO4eB|( zR>GRNhz2|XRE^5?V~j{%en1Ug*@zgz#%*Xk{an!~45O1w6Jfb2XFu~?RlHn!7={Sb zj0n?U$|Q5F%2ZKXE0fr1P$Ob=rx1_y;#FeCO{Yh1f#-WWxg8(s_Oi5sf(U@bs}DwE z^1K)4ReGd~erEd(QP&(x(WS{vM~zYw0nij!r33@V+G4T<7)rp-Y7A%hedt3Ua`#67 zq@Aw3E)4-&7!@}Jglies&zoY-dEqG@qOvUQBdZbfj<<1R}e##+Fxlx?jE%zp zqr38p+i9!Sh-B~#V3k$|3l~b+4CEG8>aws?C@?{c2vAJJBRmffvoRfH#-hZrqRH0g zIwS(1;(X_n_`{{u3l|s>KyV-|2w(&g@`WkP2rPt=8l_&uB9Da*q0CG1j#!ncEJP!+ z74ZlUCD~T|FX9z`sq&(A^oS@_s;NGviBLr$UT7M<#Bo5yS+R^%>M~}UD;#a& zq*-%Iq-JvezxtVhCX#70qk1KoLv$z1pCuNQ9NQyCE8=H_(NU>YAQe2VdAU{z0VFdZ zMTSbiswujXoCNggX9+rHSUNqTB0Mo68jrF>m#N~(Uy&8Vg=;dB1LX&j&q5P1O}^zE z@02GkDx1qfwL~p83sO_|i|QlphzWzgDRb-mz{cXat>p_xca|R6IQh$m|H^;=!s+ik zduE;=xF4>H^Euv!9=Ox|faJjccjD0Lz5TV7)#cUa7MCy2^8+`+VAri5kZgeMAousB z1Pc$`5xNVojh)xEzsg(UPa4Qjf^oJw#X?HJ5+L_$zxHddzWOSR2j6)F)qn?wyHgK? z9Cip)KtPD2uzEbm;fO@eN$r4r18nL7CpcswB}j&hN=;NjDU`!+qrS)6aoQzNFp_C3l+c#cvFK|KpH%&JmSMM zrbAv|WEL!R#3PapdQFVf6#N^gPYoH5D1fIU6aj1i9-LDphQL5gDs|+v?7{OY4;aF9 zCceJDKkVTFO@>xafVHy* zu#Excm7Vk>!oA!WPM{6x2*4vRNH3N&TsBjZ<(7vgVji1UH+_#}OxdgCc22|7Kv+HU zn#ilf7*weX0p93kv42*E2E7LX5XR1%O)~k)@*2i^Jqh9RtAn(qmal zRdsuEf5E%XcywP2?NGbYMz8_Z;O*sNwUudi*k1yI`-`Azxw?8I$pO6RY7M)>3$3!Rc&mDlJG*sG z#)5Z1s3()Ke>LFX_=R7X{NDq|$`2?BP+QJ{9%*L=i0$2^3i2!w##5u-Y&L1-3>))heAh& z(gqhRM8YBu-wFk_;st?-nDAI28bME#P&tSmV(HXGxG*^TURcOB?}*I;S|N*AeERWf zOvD5`9GfORz1-fcR*XuKa8MDFS_~!X4P<%fXeDqORVr)3v~ma+T?r$tYE0AAa*lbS zcx4Pn<*u3tv!5O%o=fxUa3;5NzPErd9IHmaR8oa7sCqK)<`%rLi7b93IS?~R5KPIV zR?$_MwKc?W-HqG3qufB16lz7&kpFhkC^XY!II(&*ML=Fh+DtibD7{?M%&V4`cVwAa z*j{c2jVZrN`GKXyv#TrTPi$@;TVMa&!XrQT?75%1c;S@=9~G@FY^-1KOOls9ed&e2 z_0)?$b@|0lKl{@B`+?8ihnLFvliOlBbEmc*_j7FP%;abK|1aqKftB?=Klj`B12?}`52zMGyB2uAmo<>#NDg4+ z3c3pbjm#SebJ%=G3{_w;Jw6)%34E6CBLS%ZfDMoX*xb0GK0p!lA^=e!Cp#bkkAits6bGIph3bt?EdYQR!+z(ui5S!w4Gkjadyu2E9u9$L$UF2gtR)2%5sqwUG#-VB zc#J^t-d%v_Bi+CQBQtOyIZzlcbc@E3w-$M)GDR{2z8QG*(MKPf{+j|h0VF@5losgv zV}V&$tySB^!ftoikH{{t7YZY`;ba4UYVv`N9cO*obQW-z@$TbduUq-ZbXmz3wp0Le zGk`?Y|~z%)bfWtEZ!O8Ei#XI$>kW!y z9+d?;C4S7v-P0`UrDLzyV?I$fU-F2al+cVfbfa?)$-JR&^*SO=Ix@B3iP2XGttKa! z+L$9IGDmLVL-RFpq@F_xzxXO?K*PPx$H*(-@M~W|Z$TgxtBaq)=12vUBCsP=;zzyM zD?iZgFr3#!b4rxnso{)UiBXBN#6Tr)DY4588rg1|i0N*QW;EV4-Vhwcb(Wk3W+hv+ z9b{U0%)Y)ssJKb>t-l{wSw6SC^o0Dt!p_bo9(~}mryhRp=wmM&KQ_+~+%s3g`9$U( z7#_IO{J{Ud`qBSm?cpc4&g?I&udQE{A~?Bu#?L%IFpI%%bd?@x4Ne2FXCe2%-tQS> z^zs8P3z&?lWS%Loc1-F2w*=@EgS_KIOakW4mIS^ z_XvkL_&W9AD{vy%pb6vhfdG;jvEL(0*rPJ5)RPbL zh4-?@+u;-Mf-xjjnk+FeFIVsY*sm|09Ih{GJt`s0AsoC^LxWN;I*B2?nqGHP<_+c{ z4q*Tgt{44C<#^GAJ+hnzVt8U&@w6FQcV_gcFSih&%{%pII*5|y&UnJ=`B2FQ@;TEZ zBCL|Ix$udBXw${$Imd8_x6^>>wQ2b)$tCZR zW35b!&@IXJ$|JX1z%DW>HL)Lzlm{4?6T-w>mc9!IWf2Gpf4T$u2j(LuaFZ;7fKYzG zMY2d`N28)sm3WM8eiOtwZ+dS$;4R#o1Zq(ol^N&_ddm+y@W7EHN2CHQl@bDS0+H*F zHDmR5NwFra#u0g}aMaeb0^5ler`RYy*k~9##g-8>EmSeq?b{vP8lFbnD=7kxg9ykE zNDf%)r3m7kATIl8njV_tcw?fFd|REjWH}NDzXGGKjmj!H0I3Q19K1Dr5@-n56u4k0e^fz>frJ# zKeoPq(Pse5Yr9)(r?=P7y#B<+S06vWx3<5zxV5^!bz)=rciXbUKtLYLi-7}ACHhB>ZX9{E&x5=$W9%#20_W-5yr2pD6hU6 zrGv@wUrmgpG*cLzRG{W0$}b z>`bno;0+lQ!P7}Uv(3fmhK2zg>p?XZhToJdH#z}LgmuB|!hT|AM-^*x1)xF?$uNLc zU5J5&I%*|JXZk&Y5UIk`pqD1@A{?}+QgD)o((02xze1OF@eikK#hdXmPXlZJ*MLx8sl z=mG?Ccxnx#i&ig%29j!8lj(F3uvEZEAP~iK$YVY1!*-}-r`ju%j&f(BQ>^+ zjb=Yuigvm!ZyTcSgBT%H7`JF$(v^d(-Vz1MuI-xoX24R9{Py3e(KiFq0)ylVT>p^_ zfR6+u5Qw4V)kqQeT#bOrzw>t{e`9u%Blu4zUkDhNJqGHj&qe{K#B*qV#2w-Tie|gL%?J8=Mw!xKr8>tjJy1n8Fixqs13LU&n z32)OT_z1QLQ@j#?$PY=3nk0*pol`=kN~D**D#b%aW~ayEw)tw+adsA(8gV-Eq#&=O zU~9@sp5aDJp3&5)!82Tn_>-g1kXK0wV@%B&Yu4t-c%>u4X_U`Q0^5Z!0Jnflod0G-}E-H~lvbMYLb*oq`Ruxy%BB_OvsKv{?3eB~hX*i)am{wq)9(EqHC%ZWxVzFkqtvjQxLfk1-GPGX2(Q^h0CjeLlbQWu=ZU z$*Nlv$)U&-xX6l(jEszojEs!TbMCFoTaaXAFaou44KakE7ed|l`M+zsyT5&*1U7{z ziawfdzx{Um1s#6@+*p(m&xKrUh-5ZIQQeADKxD?CRcVy*M1Vp8=K>%^UqGh5W<4wb zafEgDv3$uAr)66vwR|_+aDxyrA2AMrU;TYRR_}?xuNZhDIJL2}vVD4G>w+hO#rwcd z=+$qb_QC>JwZKc?2l`%t_kqnbmwF%YpA>i^_>~)v{4clMzJ6k3+3XC*%+8=hT1Rp$geJWRG*;OuX#x6dd0#A4*-gd5;fGM0sz$-D z2|_F(vdwgZlaJZjk)OqMfzu>|=!L?J87IS{kZD9+7&aR=L<(my3;^8%Wlz1BQ57(( zz9css1chXMiN&C`OjRCOmMBG(VagKagj)HA1d@}Kwd%`aE;VjUu2H7xj^hTzT@jgu z4mkOnE@al1LrOKtm(V6z2J53PdE=Ge2Wq`?wY-2M5OE0QYnKaSsx@yA8Rpa2}4zyZ9|9Y>#l@E<3zh(6BE!zr6;yqHWGs zZ9_p-&~RZ9S2-<5<+Lv8o&w-K5kPtwz@Sw$#=yzDFX&#NY~^6!2yIbHmx9LgZ7pv$O{o75^V#U3&53{#IeE<#Jrpf@k7KMAk+vc z?!^R}MHe*m0#RXsl^Cr}TI9FE+0afORg_|a5;2?W2pC_;0&uI4!G*7YdML#)3p7AD z5}>rUE=o8G&gd=H6q;vXg5p(d1d4C)R?~E})K!i>EqD>L8t)U4-$KVm5yS%b1KT+XAE`)m2Xm(1<8?HwHWx=1oMA0EV zn^aLfo#DFk2gV6uI?G|1Sk+o6tqYS{K^y$q!_C#-2X5cqxnpN{Yvq1FCpY(&w)a=J zFP>VzYi0Gq>e|IU|6S%|kKOyoC+>UnlMg)nQ9oC`dMp?g7Fbx|O>Tj!z7H&~?e_l> z+`P4a%ig&YJNqYh&zwAS;@I9DOY5iooIiHApXIF$KfBBOe(u;l=V$T#fh*)}nr126 zi^=wtbMjZ$IvxjfAIYIBfDezn54g_5@o1uqRP&Xzt*M8BI0r?Qa8<1?Akq&xp*Ml= ze)qf2KmYvGPd_b-^LdT)OG@L^c6tJ*xpTbZ5+WgS(kY#8QWv;V<|fH>>LEJ!We$YP zeBd%Ahhxc-5~Xv~;afHvgAs|+O2Rlm%XXwggi9vnjpeJ-OSz5H7D!$2%L(Z~0l84e zuBHS!;+^2-Yz}T`x2sU=my?nB!x*#?Y(l9eJ;eZ5kfZ0hHO__aSFn8&kERlqANMae5 zN;H839Vup9@`*}jHYZKrF%YW~h(~KVXE=c=raCA_oTfDU4I2%qAvJ~TYns$f0Y*-9HiuL)AUaN>Fq^n3=%PEVbVS6H0&r~j>q0SA zDj89i6d;OZi_ZDoyns|t_9#W2a9d~r`IevWleawM4O_mVGFdQxxEc2Yzi8=tD9qQ0zC*Q15vkU0TDQt?s344-t!mm8qgB~SLggn zOYl3#L>K`_M{3YPcRc9&vWzXyO0%di-3nPx*k@HXWI!8S8O8pMt_i)v zk->w4QlUohVQMPPTV9kC-^3h<5)KJ03T9oT~zT5HUSW@GrHC!lb|CYL7cQ5d>`Pp+ou1#!!9T$+YxpLXlt}z zv)mVu~Jj3xkEA=+@gC+Ln&pw-7o_@v_O#kdLb zhY+GH7BgB+D*`N24)E@Gzk7rjv0~s?M6UimaBO$)){RY%1A7|}9pBi!eRb>P+PS5T z^NaU^H~AHBq29s*ui65Kc^}wV+4FOB|NMKl&m7-A?Z@N5sk0}SH}?H3-UsG0w8P^g zi<7yzrz^oozpK86r6I}>T?%B0eRIHY6qe_MSJHeWnK8tS*m0A>PE7g0GtWHp?Qehk z*=L{q(wCMAd;qG*H@Hzh6fB-~7BKN@Kypw)7@=&BDQWrUxrVdu=1kj}{ z!hu_rG}%SO(L@3{QX~9MQljJ}vKk2d$(zEkj7jgh3dbtE67>FH!j?x1;o|!^a3CEBS zrHKcK*bG4$iXkA`lW;(0xgwiD$N}aesgScVHQb0y-K8wxghG8*}C$Pi*&%(0~~PC63{NKj(XF|qj5idb?q0sQR7 zP;^G8jE;z^q@@xBpv>o8EsY@(ZWN$OJ-y1M^+M4RGd5)l1gAC~fT4MX6;Z-1vD8uC zC@qvs0#&)9(v3_>0#5lMBF%9sP0f`D@J}}#h&z!~+{MQ#;M7;93hcr1QtuBQ2g+a( zHOW7vzP>;3vM&R@5)=~(3s(p`BS1lff-B~ni^kX30=*1W7KabS?aq`+3pA=0)GE6; z{Os)iF+6(osC$q%f$l_n1LFGAJ%uZ_aX7gx!^wFjx8#t3%c0w_wzeRkv?**5`$E+= zwDHAQ0oFZ{uXc;)y)Mx}6}VSA9o+ie<;M#EmsWMJ2R#v}iqGRK1n7N#0L2y%z{yE$ zB}#jQsPVku(h6`2^1_{fMo$2-gPaKH0HR8Npb40o-3MZJI(YX`*4iD}1WiqMQx;(~ z=`IK`8ek}3?>i1`e-}L^OENDCOQJBTGGgIEEE+(FB@j$Rl@X3IHLd7|2-v?>5chCe z9RLBMRtHT1&7@4zEC7VUI+CN*mnbFq=q6|`a4^iJODo$7vNrHm$>0{$DlmmZe=_Lh zCjy2=0XhPPB5;Ia;gNS0r3GhncrlZS7>boL9VEMDIz)~-dF17rIP2BKm|8*RoyFSe ztNSPk8J5@NVlGJ90@EAWvFUGd^a7xSN9=t71&FJKYkkRY$wu6Uq$I?=OoRhu`PRZ5 zO|bQ)22nPha4l%lFi+4?FMUmi&ZYxV%`ze6SYnoJr7V_3Gz8-7^!Epr_V(}C*jit? zYkTA3hi|+2<0o!?Z281PM~|$o+~q68XYYIX{ttZY;`={(=>w1Z&kGj+f5EH1ku5qd zEb!*Bz+v78)>rrZ?5%HaF0Gx|-aWpxb82gOWp{05<1T-hJBMo#U{m~L#dAZP>Lco3h|+m+(!1;r{oS<$&8MARnm$y5**Fb z9PXPwL^g!;-KrQjZ;UBquf!u$h8EH6@KEjDVTgS|OCwh1)2BWhJDJdZnt45I)wLVjDvfP8ma! z17}i0FchNh*<3XPvKW2ftiejeqUZ&1>Ow5xt&u7v34s6%giGEa>93dWR8_@5a>F6c zXSp&!U}YtQz>VHQm$*W>fmTErqx@4x6OnjxRJpgC6kmndZYb8ypps-6rfulP2a)T_ zc=eTelH+jzUG{tA$Ps^kV7w1_4FCteKOjDghssxqIfWFh5Mkjpz5p-8y_^N+p9SDW z<5A9sZee*IS}eWMcfQHRXX|9BmMkYEr`jTL3LMwydfmAiYW@>TSQ~Y6nZJh~<#F|bDo3bimbR{R@7zDOJWn7(uc6w1nta!O_ z^0Kt6e}CZQ&YsNQ`@rhboxiwr`x6gb_>BkeedO5D#rwdU=Qg*{WMP5V)&hrlAJ|ws z?Pq&sV|Q&!l<>2(z2c7$^p{B%?*sE0+O^`+xsh_eQcnKr=)@-Z#dm?r$^Xl0NR5}J zM=Td54O@qf(*42#CoAxUf$x6zyWjlgH=lUo2?>L|#o^^R12V}{rjg#1iXcizoRTx&IS=NJTFfX~$#hC0Ix*uxQANazp`1!KDCd#k$n>N} zl2|#aY||%AvKRW`mlx@%J0LAJ8oj*E*-f!jk{&qF9pd!FgNUc(L{1WphaKb(5PeNe z_YQqCG97&}>*dggBLbrILd*z+n}WGen?dw4cg!>-5CTj*9%e+RKju<*{MZo5!8UrC za#^vC7N|AKR^=N}8j(PQHgt=k8j-f)X{Z-{S`iHNL2q%4N~Xzf!CgpMxp%|Fh{2&RA&cZuPwk+v+F$Y{M850 z<9)!Jz>`lt`Q8jXC|@0C)o_K~)IFy1xsC zws{drNq0swH8HGKWx>C=q0|bBBt;>*0h$#03`&_1{hA1^05r zCW1_X^)j%V5a%M#MIpkPme@qdaqEvgA#lBvql$A{fSu|0xuQb|>}7!elMf$H1onu{ za$vvMH2@Fh)JR$@C=`#CWmVP=EX2H<@e@^GEi8@cQ<4NolTyMn4xG--5fAx%Cg4Kc zgFSg>J`9;H`}=wy5I4Y~1JTvr2mGS3KS#E_xqD)D^SN98hrfMr`!C+N`-LOdt*^Qr z>|eO}!S_Awcy#yl^s~3=XKnSOpQWu$Ka1}Vyiyi7Pao-A zS@%^xzl-fKB~eKWQOXz%H$VDe@X-Y#HFf9^2uFLCp{?rbN0zb zoL|m3X_EBDDJJidgg`(irt`5o6dot3`~=0pDlc+wVhbS(z-3TMoN^dLU?91)jldG2 zPE2wz$el_EL*yrN8@UQ4fy_ttB8~Al;Bydk3X~<1RvKp9)SxHHk^u*F=eRT41RdYb zZYMZA_2eEt>2S-7UReTwnL%)ZasUYVrjJdN*#Sglc0iPM)SXSrI%s9$dZDm}D)rzH z)-ZRiHNmBPk_Xy0G$mUIJf_Jq00Ufi5FLe)Sp%IY-O+I>*#XhGY63=q-a(D~z8j0naji#*)5eP@r@2t1kJ0<9p&wo~jl8=rI9fc((2o;#ob>mmtwY3|ykQWbDx zP2D9O9DKMNrJKG8Jia;Lalo&qef6tf{o2>Q=G$mr|N7VADBcH()q=LmsgJF7Cy>~l z2t@e41|W9PClH0iz<{a+EAhdOw!6&&Km;g66K@woVo(-{Oc`#zB`W4l0A8>QqvSq=WxR7 zlFbXVF(@^mKuGIBK=6bB+X3$S4{Q+orS}0}Aqd(#Hja?%ZGnbq(kz^?meRUgN`__9 zRv}k0eKuzY&Iur@7Lw@U#b&xfzpM*@oZ%jVRiSHPh?BPra7! z1O6kk>CcsK?VViP`d9C{?%!Wr`IGzCKYP>SePHntvarBg)&ehmA9(5iZ|HGgd-LoM zF5LIRU6;;p@9!;d>}{M|Keg+9;I@ss7ViTiXM1&s)UK?%i~N=I^TW4F4(C4;G=za< znhO2AM$ zJrQL=PCDl!h^{Ps!ZXf0h-!2~#MnNkTA3TS8oOQrBr&nZkRDT=dLt|E;@@qvhJ zN1h|wk=4Kf9zw9`)e%gBSr{VqoX(O8>S--2Fu@W(bUYFd$G6gHt_j8TOJE>Q^9({J zHm&49C|uSAAzUjcCyY*lOh$lc|d;g*8zUf4Fh! z2H1oelHP{EW@?7Urmxb7ni`tGT8V;d$~~rmXLCnsvJiH*eA%B3b)*%9Vy%?Eh#)q~ z5=fdZL;(yIo#yyKL#q;)SPbyIf=grsZ0JTr;X=|&LJUNLq!+Z-{bqqKT9s_; z&BP^$m&(2K*gm||ghxmDs)SZatSpyg1Er5@?*l$We%HI+B_{Z)fYL)j2pqueYq4cq z|6eK232aWs zLES-kAV1`>oZLpUPXoA3!I9E1X4cShce=sM|Y>0SvS z;M1S}^yfeS`KO+G%J&5N&VXlu-~R32{;l8oEhmf8`+!zFzUx&lPYR@xMyBBe_VEn? z8&;H1rdv1-RfR7A7uE!gLWg()k787|8m&l{AJZ`@YEYg^0enz&1ZD@cqU)Fu zbi`>mIv7i9D>z;TST$f_k*C%4EMWPZn*d%Eic)maU8Dj|TVpkJlQIe)6R$)+;9f7> z@jVs;5EP-zVK+()nu?HhDQqgov%nCDIU-X7bQHZv2C4v}iA+r^D=Rhvn4SY>4+8cG zK=DcdAoh#$z|(<(=0Map}JM)s?;?CUjQC}8%UET*)cei)W-LZA|t!sDw&JEZ7{e3I{ z_MXkBuD{NIaei#;^qKn~y7vPgzWb41zVPU;-1D&iA^j6?{AZnu5f>I%Sm3p?K;IKc zTCW7*_dNW#ru!fHsQ=&4cZ$|F_t%zo_IJ+zUpqJcpBvYo**UwpvbDKBs+$>St-~K0ljl+kW2K-ybM9le|fi4}ZmeDQ9wKnca_4yOHBv6VmfSrEI^? z3QPNq^3tIXP@2e?msU8%(50y~ap<7PFr7+1&H3K;h|O>599j0~$D*eV!#{)fz=6Gv!jVUyba0^o>1Uu@EnPWH;#@jiXJM9*>n-60glZx(U}v%sbVnxs8OgvdZpC~s;rlRRKh zy{N6brpzVx)5^A_u@yvjBWj(m;?HQt(yEK0F#y)k#Aq_TY=WqJ<2E8@CS_p;#B4eS z!VD)F5U8Y~l6n}lS|dQRRzzZrjz?*N%tZ(~g_%Vcpb891NuqSo1OYKC5tVu&lB^es zUaDjQ-Sxs?AaqFl2DN0GER(boP8nGrFr2xNLmC7p$3O(S<5VSC-vnA;G82mkbRkx{ zOPbcYC=De4l%QJKa$Pwma9;xrO^)vLr@0k(E#j`6wmT7ALeBnpc&2>SjZex7;3#y{ zkts~a7t4hLj|0Fv09;I%9tCF5%K(bFahPZ`ZlFbmYq{($c>jq7rjPf2>M9@bVHk0^ zXxvFrlpgUJ(%Q8;*3?@2=D>Iy5VWV)f!Tcr?n1=TfgV!zBcgm(@#57 zya{+8@Hn6ZU;p~oy&L$81bu%%m+quJ4!DzgAMiRMn2YeV5~&6VH6T?fN!u8NFX0Fq z+3k&1A-(ZP&NUkOam#2GT1$Z0)Q)r$8 z&jt35Fq@JFBDUBLA)L3EGQ(!uEN=nRy3`?va8Nnb9ZG;3xdmSy-)PLj81 zRRyYgS$A^UhPk(mFVGZQD*s8`dHKrKf4^XLZEtP;^zEDHeJuFh8?XBh7f$@urH!xM z{L_o~f!FFrwve;1z?;Vc*ZMy2k8AJxKUUv)cK6QhwVmzNdwL&OUEg@yz7NdbuVrZS z)x+TK-C%H%5F92;pXV95eW{~7Uw$}}e^qpn$3U-yG`iNbsuvuh)Jm+wRPG@?^UVPu zVUsz?3Y=3;F^8kG*dgw8bBalm9Fejbhhw)|eLMR)g5 zlyW$56Dz9$7=VOCE>v<-5@o~^IXoSpPG@P1Bo><{2$_I-#&rWuQ zh3Nno9}xq(F0vqx25jCMAsQN}BGSzijBc7J#!WspLQFvuoHSjip;QITr3-^#z)1n1 zHN`OKi$RrqRVDcpWN{cWFK0Hl}lOfrq42@g7=?*PztXl1@yO~fvft1EqpSEBAp z<(9;rG{jGHpgTE$&Xi$+c8WoL!`zondmj)Px<8H(p*mv7d|-K5Tr`MYSa|tlb3y&F zEg-Q6h2kP}Wnp z(R7N*s+#yGu%U{v!YpsJk8ETc3fS@h!W#uu+uz-Xmv+bGt8SOh3#FFH~YVI=|y!arQHCTobZ0an4)3G8{8V(qaG#!}>Cu6de>P-BL z->{l*B7`&)y@;X!t7d$NUTiBsfuSCqvEi>NIwEUl{AQ#zNJzNQ+60?8Il9mpv|b5O zH6xc+H+>NXFt2FSl35zdhgd7RUL;f4C}aYI()mRV9-2;klM*uvgRI9gLYZJFG!?8w zEjS9gR?I?HF919fz)>=(R=%n#FzOP(Q38~DiI(U91wJ?j5yj9#r5nG%2xcz<(f%HWu$D-sF%JKUJ*Aj%T{yyM;Hus0eSJzIjt?&PDKl_fq zy|DjR7tcR+{W~|7w>MXI?z;D(2Os_LrH4Op&m*6F-_L*K;fFr@=DF!CG+9_+VS#J4 zz_q>){6D9z`|l^NJLeI1`kSwpmXwNxBT}9<}cb3 zw)yH|aJe5CoFnCX*|hu$L@xkfFu*1JlK+wOOC7ICJzABTrVH`HYfq<^r1VV20>rXv2|7R2?B1 zL@UT>Cd=|>YAme)9cN}?2Mml)nUPc&aUOJOb?PEr@!=7hFjVHnAa9iFqu{}8bjEKi z2s$tjdJ{JteQBi^Q7K?)Oh+$WI1dI@+Oh+ER1wLiDo#8=6_AWLGt%@yNe0miqI=5g z0%tnFTmXL*W`wkMQcVi*2PJJ0<#m~zKx@kWvQ}&@u8x3Aba|i>n{3v?HGNGO8WBPu zY5Im^16oxrsE&psL_R6KBoH$S#E3*Cylm4Jqls1s#mK?HQMs;ko$K01(skdpcB^75 zJd#!6n6zF7$RR;V9|kmEtv0Wu@tyCSey2bwIJiPC-UqHFe}3b5#a{5TN5eQHIyF># z7N{)p`<(*e`lg$1>bIvo4gl{1J{WbuaWmo@xjMh)r5vnX6V7SvP;R3{ZwF~YDX!YE zKyVO~ZFY#A1)@Vl*RDby2i%6bW_k*6wRd*#ThJ>3BE*#w8{pU&JOcQtz!OhA(JR3- z&phKB1#s^MUJvqo+o2#M&e#z&0T4P+QuMGjgoqJLIs%j^f<{fkm!0K|farp5ceiCs zHe6ZoQR-{50@tA5_BZ6zSfTZrZYdI9tSL$HL@JQ>Nsaj8FSV)is=*s zGZf=AcZen>n{?zUXW?)aILJFbETG8zkp>=?&)`;m(RM5EOvk8Z3DJ`ExQ8GAR zojyxCbNiG)*}1qZ>t;KfHeL z1D*(0R`-^ccfNJ~KmXq!xclGTf6o{H#XA=71J`=UIQfmU_1*TYD$@TZC?q; ztOE28o~3P0rx>b6`24oLLZuodc_5v6IV@r!`8<9c@~j zda?^J9ecC)0YawCW(Fk;&PV(tgP0*?It{yr%0-=tBQ=%7prdpsOKfDScp#=A=W$G{ zN|OM6=tdxA%3fx<#`FsU#sze61S?U>OfcY-Y@p01gj!2r(4Fjhp+LIdb)c)V55+pf zF-QQ+4iDTY7|an5qAHx-rkT&?ZaAO`(KOA7(MU$j=FDPJgtLIDk)uRpPQ6G=4gAzo zMaR?XFrdDTMH+rhlZ|G7SinHkh7)dda)@mf5tY*t&b~r95?4c*g{c`%mlS{i11Zss zPFsn63o28E%cdaaNGyhCK_AjAN=WvB6T*P#$u~PzHK>&;C$ui5ZCTZ7+| z(UvJ}H=FL)er@{f)y>G42V9iAj8TAYGFTsY`PhpP`6`N%DDKp{_*S`ZoQ?+ph$zwH zz<45<4;ps;6`*K?0pbq(#$B7=HY2erC=|~}@9;r^SOU;u3EEcELVFqT9ORn={=gcT zUI%WQ{`deV;VRsNYvryvDktQVc|Ko-b5yPi+Hu{mxUS7;pW30o_Uwjk|H6SLdtX(6 z6?NS-Ic+yhvDd-j;txSV7m7U&s47)4i_Bsg9EFFwNjYx33HZ$d(Bpu+6(J-P#$B&~ z5#3t>oWlzjg-zNHKoPPup$HnPf|Ups!0Uw$5uLCplVcAGi2%hM&Dz#WVMB{!%xIgp z_ZhADrmunY4G8Yz3*px zY17Yd9=YQWA9&){MS?0{TJUK*xlS)UtZe2_vGfK6FYmiZ)}~~+V-=#a?a1{>V1CR zZvTJ5NYbv5SHG@JlEdBylm?PIzBIjjrDuV8`pCh3fMrrrO~<8#?eG5X@BZd*{^q&o zo^!xS1tl%A4hNQ#s|?NYBWP0Cqp2n;}~BgvHHXodSIME*l(5>hOch?Ve^mMEntRO+&c z0W;moQm7$C(dyKW2OAy|(4{MK5{U`~1DSY8gNy^6G?^IPAeaq@M_)WdDM>RUQ-(vN zaAv1F9RP!1GX*nZe^sEB#mpKffDlfCCelW}K}k3vW&yO~8LOaml6Cnz`Lsf5eeq;c zC5kf0G8{mX15}M}3Gf)Gz62VJ&Zz_^Ie}(J8Pg=ea_geI9QluT;13f**MiF#p!G&CI;KV{&p5grJlzLLFUk^q+w8mk;t39wDZ zn*E(aVrx}WlFfKHc+Y#@<7)%6CxNN(wE^I9;P~vz13Z~~ za4n96isTnxu@Bs`a8c{G2zCw`q7$7PcrszGr1g;6FsMJeRPP zn&Pptnk2Ti{yX2mbr||M=gQue)n+YjbiWfhd}*N?J;0Ov==xC8TL0q2z~T{7oMNm>u$WvqqC8IVJUC0cw{mAktqe zI-GqNN|RoowLsCN7t2!>7#9yAh=!;%qH$?!X-X}~G+#gh^_n$NsY+WNwPH&eoMcmz zp)p8Zh=Lo7lK2V1hG>*#tx6@76wdez#c0D-G#RcYoQ-I*WU5NQH2Kzw`5K)`%Mu}4 z=>`lzD;^~|#8WR6Rhgcui5pZxSob8*9J6fDl1Vfrjjr3}v2e^7*iA=l@YdQ`C~#Aw zdG@3;B@Gnd(S-t}Dd9jb1EJ8O0f^wOp2si&S&@(10i zM{ONVkbFQ}GX+`=ByqKoufP6B|9OFnURo!XTVx}4G4Tr>K^3#((XIU%gZi4Za2Jz&-1#OCr%HZpn$-! zAsmkv@f=71=Uqx3ZtL0I#Ti=_6tM*XbQ@5Um@Mk@TOP}GK~DsZkKg!>-{8aJrth+^ zsrLc=ZcLc9irc_f1%OutZv}XScVaUzu z5bK34Iff8S0RGI*)MKXgMF$k4=a`ETK{GOOIygoF#JR}`h|!yG@s`CXLkEk_LoWNm z6mm_O^W-YLLTg4q0Yy{}Bg6?og{BdmaxFZQ+sy%rA+Xh@*sCugiGt*lb;6%pqGJO( zj!{MzNPvw@*Lk}D*bcn_h?B)(Yy^^nNAL%b-Uko`Re=;m88RLU1`!VloS_BfY%PSf zV1K5z9eBH4AbN9h4$tf@1OyKcv7nYUPtKWjAKr)=gC({oEC5)ZW1!>!N{%GjzaH-c zyG!T&Oz$Q;J9liXo!H*IWoO<0X?|*LcWHg^-n&2e=tIAF;nBx0zW-zQJo2G?A6m9;i=zq!1(daVklNWD$-tP(sp~=y06nO4Enb&N8AS;$)^I zP=f+ZO&3GZ0Ry6$0>T;7^yxq)Kt1v$w31Q`CTK>$tP`%gp;K)1)mVKKPz;J_E@o$xD4N)zSrcU<=vrG@{17^T zmV<8DAtj?5oy-hQpzda!4&{?lGQB8(NL%wVs8mfNN*^Ho!vhd?k=<#M7GmRgKw{aF z$s4t5Dn)elF87m$QK=QA6`A-6RBAFhBb%LBV9UbB>3zWM$)Kc3*63V{tFKXHv#K&%Rda;&KJe~$zuP;2>!j}z zxKS!q2cT#Yd9E6N1_MO6xYDI}(RMfsh_?qK_6Xe}<3WJU!KjM-7S77{IN+-S-UI?) z7&!1X=`K55&Mx3!d~(_zGvH|eif(uCBA%0nBi3a1*^D+CcjfIooU3!%wxDb?7>(MxqYU1ry3tvH<{hzW$y1Yj--F-sfYeize3 z09Fzc7$=0GAWB_`BH0uQhUoa~6~B_41Axa6MG{R!kzg*V-NY$lP)#Bvy17#r7!*L7 zQOZx#n}O-zWY5tBLO4+dGNPp~)EBt;2H+%I2$G)^sn`K$fidU726V)U0_w}7FcS_S zss&PDZ?K-hA8p!0r3ni}!&;Ubq%)3k&=NS>RgV2mbZZpLt>F27jt_YjyYd-dRrs z$G7+W&!=zO_W?HnydA#OWx%z*3C#1CE>_ZqRvilSxuw>sS19q6eBN}^ zO)><3JNgGd_`&nfKmVQYe8-{YEOVkcvt$nCKX6EAlM~G;Cf|TKzkpN+gJZE1O_GDN z%VVW8PWnNbykb5(f)nfDgOEd@bJIadj?>mDNhT;&Q=*rSYLaR?F7?$*2IaU^HJs9U z-MB`SLdXZoyTWxD84%uLt|_1h3 zIQtN3`qI8x5T(SXV+@8P9H%LmmuizWg;pU`FjP~cK>VXSQAXE`CfKwZt3;Ik1nOw| z7TvQzZf^sA@rz&l+Sk73s)cUu<*qu?*87I;=BvB8fYM#xIrkdiBW9)Rq&I>2ay$_% z-Ukk*$8ShotOgw=^T8Pz_Y-3AMniqF2SWa2~PkJ zkRRrCTnKPBAaLd6+!8ZKZJWek3)p=H)v_V; zP|q2G4&ZbnkUqT+;L!>asFyGZ+{hexINjj7zG-sqzzJar8=p-WM`@n|TV6>+0KouZ zt0DmT9b4(ybaa_w(+tQ7l9NCbjbjN26adq<2~q~dD4GheC=6m=Mx4!TIyZ~wl!w$2 z4}&mf9ciV?fJ7PEpn?*Z_YL7r4CEMGsFK5E0VUudp0;2x=!;FY zoic{d5gkBiQfZX5Qmu<#CdGzK+Cnfm%k#H9yvG5-yf32UV|;_xS*e^EqH3{3{@xH` zv!;BH0S!TauF|fw&^bS6c%9w{*4Hj(WOaeE5Gp_x?}Z^?^^`_wYyj_vk-CSD}Tf3kxhPaKHku^ge)o&%=*D`2LTr?cKey zzPG-0W^?tlpSAVfrDfmHx_9}+`BVGbw{NYUT-#sTIJSPDH%(8~5kiY=PvA%?qHPJA!I?`NUy>!Q;3+2trd{y-|Yk;$qOkdhM>#^x8 z8Gz7}Wuy%z#dLUdK{p&8V4Av{Abu;Nil_@PF7>1hR4PrPC!7K#q*!?%W)kpYhLAv7 zIWUz}nMD%{^>n8O1t5mbTyT`s8`efi2lJ&#oRBO@6SLDXE5UUKhC@L&B85pHhxJ+= z4CsiuBND|R)X*K9AwtlxVUW3X8)~ue0CcSoSs%+t6t!AzS)YtfIl02@HWX5thb}3F z>xG$a=AvVL=|c^rDjg_*huzGDR+NMol>VlM!4%NxP@0O4sMLjobbuJb6nyv9wT?36 z>q0oUcf+zG63fqg<}=<0l>CIu=F8@^bssF3);&nn4L97-mj}jE0K{9td=+lv_e5|Y z$Q-DO6;TQrZ^#|`tvtx=dElSC4-|?;8uow+fck7rlBA=ywWyg#hA}z;6~T zEiJiTxx8?yJe-elxe>u~FkY7*D#567X^>m$!ViTGajD(Py-|cXQ3%)$N&y52U!pO0 z<)ZFHz&!}=rq6GmeDX<81Yh{V^gj`JCGZH~almaIaBt5A0B0`-O5KSnLbkssAf_2k zfI^?nfR9iA!HrTC(TM}6!?+70(vbd2tv1xSl<7G1ucKc2b}yShcc`HwQ3ZBt*noC% zWk^Jp0rt3R@lBvJ3iS*@4Iu(W@Wh~__`t#<75hWj79E3u07MleN=ZT!?|4mrQ)B$5 zpcUStz*`P80;a$?nh2y}u`yMLK8REje0T^%bx^nmuMltm-@v0U3(yLJAHyJK1e3yC zl!G)!)5NLTb-PF_*aEm{CW7@uAc*ngLRrrRUCFWOODv=tI$VTTii%0-i2ws2868D0 znw!xuDV#Ehwh1;26tf&CB6b?0!zmApLKJ#UaL@$XXz04LXNzJ9tQ1e?b+bkICEI~- zb9FBU5TJ?U<;j>^GVX^nut7*b=ll%L$kgT@RvdpT&QQZ1?r3%q44@JjCk_dWXY-UrrCU+_M#wz>S%!Kec|w&)fWcpoIAicprFaqCPT4N#n>WA)N(?FALJVBb_xFkeXdgD-o1W875v`I5`A>TmckOl`%MxQ8s>QkR`V#;uwm~u{C zFw2fe*3l?{a6mGmqg-O(l!rL4o!t)cQWW_Bm1GFm^fHk$9IZ~?k|I1M4DtaI%(N!C z4V|6HW{n3O0?5%MeZovK-PnXEFtR~&#D>9eCP>xtD*}O52|z}pQYIxC8wuuH>omjJ zHD6zHFhESONs$ksYB?D7RLu)QCdD9Zf**pJJtgGq$&yB-2I4fI*(den;FS0oNOw(* zWm1fcSra*knlLnIi6UGtBWgv_1%ob1l!&QONBk@!4YN!%)I}=<9T zPm`r#b20tIQp_Bsl*U4V7%Snb<+Qq(Z~kU4aC-@)eA1_@z{jjUd*uU^ryf1M3`m}d zQl30{644wf@1FQ`KlgLKJTQCt`_bPdT)YolEn$8m+C^O;{DKjy2R>c~LShi}oi$do z$AMdKz13>~@Jiri0Kna+xB;)=X55|!@=spJqs9izyV^&5ue%S&RR8@NJkrrUZy}o zo6f%LWdNcHCmn!T1RyNKCU!lW00{dO;vy>X=tvEt&{;?N&%{i3|01Ea0Bmk)gpQf` zi46m>NMQKD5e)Bc?Hl{ z6_1WUtG;cr#5cImq!gXRI`05JkKnF?p(^NV??C|YWYJ6zQwCl^(MOk< zRmn+$NLWWi(nLt(3hzLeE!a|ks&t;M*!0&I&4o(wV1w8ZfWm>+=9}F}5TccMCefFF zRiUb>;b(-_k-_t;T+S-+B~Jdo&Vchfe^IoyUKq-7+C*&%!5^SlbY8)>gu{7hp06** z;LLr0p!g-c94?Su{e8eM4sWerII*>VYUk|5+mAlDbn>1POBe1qv3ug&-pRXu;m*fC za{n)1c;pu^KKe`NKJfTmA6)$Q{lWqZ3;YCI;L7gX*LsB{`mRN5bG3btRE^ z$(KrX98y4QnGyuZRUA?nfPAc5lJo{(R-)ihN_fhD^m4j6M#<63`A9;UCr(61r(@KI zP0mWEr2A2C1vuq$y679A5T%RL-(f9haCS>t=ns)CNLMsbqeRH0oa1mMkoM^1+{Z5y zfJhH?!A5z+ddaV3m}ZB9PDz$2b4ZjSOv)Ua@?@9G$*rLqRCm1?0kaaAf?1aYQYH#E z)=(PJWXU0+jFB9;R&oqP4n!(~2vn(*+NC%6byUi2nv_vkPl7=*qs_FKo^f=C<0Qcx z0|^p-6y2LO9`kJ!U37#4Lt|(-T>#uF0Ek{qTwfN}il61FWFSJ6#==|<2FdIsYlTng z>Fk$Vb-^>sJx{|i)T;@SQwpafP}OR3gAzqqTnHzTH)`S@@=RH!syq{-gyZBDMpOc# z%nm=RlG#j+O95am);;@c#ZMVTfHRd!T#Zh$L8(MTY?#YtNp9AR(*p5)TR zsBJDr732k50Y_-+T(|4Ug0j@vp`-1joKl|A)esTJ5IDq#7k6k_d;>R$6 z1brPwiB%e?6oDZqfxZ};vM$-j#G7DdbSOZKrAtF(3TCuM)}AR;tM^fN*S)-!`#XBtO_JA`h|d+&>nAcWrN6^giI{{*%W)e(vmJ`*(UGSiBFsWj-=qOk`n!VSz)w54h>CFYo&Of+Kr( z-@J3z%F=z_2TpFSAKzTt*t&CN?eyY(!27@(2`_ydkWY@R64IeilKIloF;TWzm!#3( zY3pG6gFpC#AO7%%fBBbx`IWDHMOA(RN++a|&O~RE1FqCaQ|T7OA?VCdY^33rfOS49qaZr+lpU!KN=Kms(P`+4q;#;#-?ZxDWULoW zoZwDs>4E&g{m#LS;*^)4DB&hT)$VSNeneVPQeuNBH$ZfHMOco_$mTj_6*&w=sfGSQr6s8O?BAF!6 zADe;nLcxh21%oNzBvX^_rVl41ZR3YGWvxW1njJax)WvY7LynRt41|+_*&NHY@S`K* zZ%|G6*-**I0B&evaT-oX5)fr&TJcku981RE45T9-0B3)zBl}X)1hbAHA_*8~gG`0B zjvpcyt#pr;Sa#(n$3iPnB$Fka<(AS>w=L-?eoeMUx)F%qKmZ~Yj85UyzyQy5G(e@H83?~c;6n8LJHQCqgV@VJr;Mi_zcb<~fPY$F zCGadT-Us*qAG57E8~*_iz*}s(syV04)&An5fKMtl<-ddm`=;UcrZE+}ze0bJbXx?TysF#8pQ&wS=He#^jPSMi*01214W-HdeCv3rxS zU{GP!Rw}{>GOBh52Ao}~l(q?Fj7v9>7Uh-2xQx=m%*6}Xwr95W%fpq93@QvAta2x5R^eD&58hWu$jIl3g`|;VGR_L z%`O;|GB5Vgl(bAozLjmcg`lBl1Bvs%aCo@TY~<+?VBoq0u_?KYa6KT8Qi?(Xn!qa} z&4Z97H1W~`uNVt>@<0SMO||CR+*?eBkGp>iBD0PINQehTlR+uaIYPaZkrhxtjID{D z#a>%R>_rrK1!~? zpFO#8=J@*lZ{7T^e|us7h4XiP;pUrGR?e=j-g)lcM<00f<9&a?e>UZ>_Ku6j0$EsK zVS%4G3tZuS;L`g(>iYwmXD;{f; z*4D~7KX>eI``K9aUl^Qyn|yzuG$Ls?s zpGG;to_p@Ozy9mL{)d0~hwpvwdyX54kfTjH0i1~rKAC`HQNH19l8Tg;II7BjRGomO zF>vP~37SffG$l&nA^#y+Q`ud)jSLM)#-wC&Hmzko22z#0X>xRyxyd0Nsg6qtVfjx- zupxAGQakIV0gh>hwUZi!@(z7;B^*RA!=aC}+aX@IphWM)mm5ILLaG3V7)3tN(NAaU zF#?KKy~?Y#5`w77f$mtRIkQmDj99?j%Sc&`oogaizR zfMj0gG6eambVDc5G*xjL3#C>iRm%w>7)%)v8wr-%tkIRFRhk$)ew?gI8P-E26WxrA zSc1fE)G(w=?-copJF-^V!iC6yrrB_uK2mneNJ-7+Pat#RjDl{R+=M$ zfRJOyj`=vr$IV^_ya|BuL~sCc>l6pB8pK45cnTfYo`}BPdx*?JE;taDJ5A$|VCgA1Q*iX9q2P%ww%4QzF)!0>rkViCv`=OaXe`Du%*D2#MYj;v&Z29=K!|a5 zG&GpWm~c&a^x^|th^N^j?FC<_dE$vDM0FHi#~W=WuLPXgevyp*`mg_bI|T#hF4 z6ORMFhoea@giY&_BS)@1$X@+@;I^$@?*kqO?pWRX#(UoVHxFIJLZ-Uoi- zu6_%J7Z$jx1+M%);O`UmKHyIf_~QdR8)rYibMgzjr#ud9u1=2wepZz0dvE9W0XZAE zYEu20Ff`VI1ac&q2XfAr=AVO;9C&iz@>SnWm25ow?6ZII7k}Yz5`N4)wS(d8vP7^kHmvd7Y z7>I5ig|f%eHs_{8)6waQW{#2M|lcOsV<5H3XHKH46Zv&?-6|FawCbI1P%2GBku6MHRDF&@9p|n;=q* z8iNfFgP0?kU`!tc&QNS_AYce3dNyQpt&>4#A1bLz&*0XD0;Q%9W=}|&TNWk+J*z5p zM4>-r(9?t*bYd}})0}Xv^aqI4mOaWL5s6jemqSWf<)3a<5>yNTMUymAl8LB_t%*oS z%VTA&a81}qHdDhHJvUosg1J|BZUvm$^795DxBQn1% z(i1_!-x~GJ0aq$c8@Lcblspq1!Y4U^eZlwmPafEogtt4Q$I#yAt9A;H60*3QQnbMg z&?E9;3|d7Mp-EigkZwB83vTH~1G>(*xwxtb)LnLz*aA3a-s?u=rOU;q*8ul%GL?F{ z=EI!}VwCukKE=bvb!vbPj(RyYx=+zTcPgP%51Y~%(dZCrgU*+TIBDf@(F>#r9`en! z04Olpzw|+ju8D9IFz{4mu9(s7TvY%`X986j6LWo)_yGzwy#Qi!M}(LKmEy#cR>@J~ z35b0uST(C@9j&IN7oEfnAYNI0ORp6ahw}&iBXG?F7Xo^TEdxX?&L%?gxQe{;{)7p}kV=+^#iR_y+V?)|`rFFpK;dmj1Z z&;P<>554chSG|BN7#0>-Sl~@-fh)WZT>OQPcpvER4|pH&%LS*m@A^+$|NK90{xe_O zl{BARz1z>Jt=*N~{iUr9KmME4>1XZY^z%0O`vW6wdrj{ChY`|<<&g6kCOYCga-XcMA2s#QSCvYV;2POU}G8VXl zPnUX?-jrFPYX#C6`52-jUQR-$RLw!D)LMS%)WsutBbg{&9Eh^Y5;-LXO-lSmAqShY zTOtH;I!h8H1F`~VdS`U$kgTAO9yFm~!#tmOz)5q&mpehQA(mOuSw~$A1lQzJMm`3k zYr>CHRVyB|Mkh+Lp~|GxrZC7X3}|+YAX@-TtqG@AfG$UKv7j&bb zE6s>jn&_aF0yvExz|&Krq8DXq#c2r4<_W5TGMU>fzK; zmu~c=={4LyQaY~u^q0h98|m(R9*eWo7Xu}6s)BCi`s!sAnrkH=}Pdz0we1?k+vvDj~?y! z3%mv_-UkkyEx%rjJq{cQ#aFJ5gT@Mq*ghPz))v=0fc1s7h0&J3oHQACjCOv^s01XlGDDh|os=Av6IdBv* z85Tsr30M_i0J;Zo{N&R!#Z^0#S&NmVuNBPrvR4s# z#RAsULeB#S3lKSmURj21I|Vp@Q&5_+Aq*r|n+Q8_Zy@T*7I4}xQ93@_K1>1Z8nz-c zTN$VP}S1tZXf@yZZY;e?-#zz#ZFXy$}5DrDK17Y4gb& ze`@hQ@TR@uEfiZ=;8k1T%I^aYJo>oz0gnT{5A5%p_df8CJ3r%nVEQua*1gLcmyWG( zc_Mh*z7O=7&S9?huL)1@0Fud`0+c0|2i^zDC$ErmdKmydin{H#+Z?`*B##5W*ybd1 zv^lVxT+Yo>N9U$f%n_!^;pk+9;{kBF1iJL2%tQu)0-TRpB}?SXbKnvWJo;kR#lfc) zf>KW9s2zvCR)=rrF9~ud5&*gd!&tg2QgvV+*k?&zm>84l$;^wCkwNN!**rhr){ zAU$wQ>w=D%&Ui`>Xho)3lVBhk&a#8)djbF_IR?U@3QtJM0}3OUqbh-zOHqhIOl|X( zC#&0f=l@BK!q@a}SyAY7u zZ@=AVN!MS0y_W&|y(a=?IAk6W7r$R{=ydwkFnS#Laoz`fbHG zrLWr6gCp6$HdhX2GXgjwKLH$!J8`^r^w>Tqc8blYw0CS7JC5Iin3Ztei$Tz^(S!?8 zLRmC(H*rJpGVrNSeah#d0N$NN1ar7xA3<901Jxg1fK*w<0Zic3=HHDK?jhcZsE5l0@Bcn{03zWqnkJ!q#k}o zfK!rIfE@CbI)V^vg(DJ}H0$X_=FGIyd#@=I1t35xfQS_VAp{cMtA(ZmE5$@s6F`V% zu3(HvPLk z2)40}E=A7H%_1H@qy~i<#Plr<&k^DzCw>XV#}iDmcyAN6eY8TDg?brNNl)v}RX|IxYO$D_8JX0K z7-ONl2#|c+5b*X3$M#~t;cLq6m54y=`1=Erz(dEW ztG^FyuWanCZy((`=jV5S_PW2naO&URz5Vrf|J1EJ{%7<3(+@m&&xann|KU$O@W>}G zeDE64p#n>(8;>no>Eo%e&{=l0#{=gt%7{JdrU|AP4&cXxAv z7t#B`xcJZGgZNq@g!c$=gs}eXywc?Z-IoF(hc+ho32QoD0DR9OS z4v|eEI^7(OPCbV#Wzb9iH0h-~ibE4K24W2%anj`McAz_UoyCq_pej=`1qf}2hO;zk zdO9${IPsWoX;l-aEy^6$NB?i-$T4HuBC7o%Gp+pEmJ|5j$ zDH^tR%^E)*`YHJT0~>_!>>rfdqz)FuQ2O~{lS0-35C7LdEjU}d)8 z#O&`6Afk9Nkl#Y2vYPPAEe+bmUwUbDO(sYgWp^~naA}&Dg}&GV%9{oAQl3gop`;A0 z$N{Dd2#0F|lq6pj!eZHh#kh?PVqeICWy@}1n5hR?PifqM{=PhLfj@5$GU-;i2=-w?1Rn|CgO-P2)xPK&%#@2V~wD;OGTyi+Jhk4f;EowU_^109m*by2%^m@KtS!@a(**b!U$xgjJ5lS*-KOst*uq>?$xC&|sTErc zWODTpC(o$fp&)&G_uI&wl4S-+BJ|=fD5`@BjYq z|NaXvyb$6)UsfG}{)5W^_cxUKf0sNIkjAhXiZh#taB8Q3A~Qm{-n*wgb?@DCx;tUeqUtzNheQ$-L_{Q_A(kY>5<~@w zC?FysC;?>{$$m?=bZ9Z-8z57eSN;~&gX8EPG>jd+%n02>Qig4&$FKO zOly6f^{n;%e7~Ejd01cqko?9`JXwx~IZ%$f$v_rEGL%f?VLZj~h~or8)d_{vlt(On zz{zohxe!<$-<@WGM&Ij7Hf%AcXo&4ed zv--cyxBK16TFwU=?MA&--#s6YR41={-t7AOAV`*&MDZDk<@Il+qZ0mfOeT-stwNGeG$v)i)fVk@`NOa4Z#TZ*~GlO~pO ztF4t+Dw3659%5O~(hOszmiACdT_!+P+*k_q)e*f`oMF&}SW3VIm~>Z%Nn#fNAd@p7 z&=+1wDCTUWGe6LiXV64vuCRPF76An`@r*ScrCW75KxwR24E1Fx8?|aurX!)Gqe(|4 z5x_XoBx>u60Az5rW~8DgGm#;NSAj&SkayfM_VmK$L@E#l8D#ITJpm(c8&!0Sx z0N$;R*ph<3GL;MgyL16$=^}MRAGafBFWYGtair5(9lZ)-^>~K)@jstHng-D!*`SW4 zGVt;=ph6ZtLJoZ^8mwvE_RW7_wMyU zl24p%Epq~pV}Y{FLBZ&Fpm@7rCx-*u1D&{(sPY^M=gST)Cx0%Rldf~uH6yl|TmrAg zu_#rtUKl}#15R|E28@l3DZLp2)NRD<&J22jyawpDz*_3g3t)IWCbX!yCp*qravIv ztxCE7B0|6kK~$m@(IHR=lyMtMrB(nLP}f?5TU{8%B97(5xKTZ0lv`d!rbJoR6WGJ5 z<>yB5XMgr*slWuDc;bn_`m4YC z>%ac%Z;#*`-}uItNASfje$nqKNpC*zfe(1Kz?>wVKVu-pSd@SqN9DOl92VgLngnOh zf?l4Kj8{2JISs^toUB#pR*6`z_>iD5AOALUqkt>wgjQ8RFbZ-oW><-@lN}%q-54IYqXVGUMGQ+Sjy$pftqtxnFE5Jk-98jv`mSm3~cokVP8I;l$brrYaL#dU490ha)Xn^mQk!Tnn|`z36#_WL@OynqP?U~ zk$kfthXdC?A8=w&o)0{4Oe+agM3rqpdbfIQ4~WBH6oYqkK2QdH9(HJB?40vB4e)`i zV;^S%UL0_%gfYQP*UZ37JP(eCI?uH^V+xsX!0bW*qs*gZ=0KW?9>(p@rn)(14r@|3 z<;+!cFOftb5_@g-odAg5P6MnU0rdd9*lzQV%zn@k0K`3D6~Mt`iyKfGDO(g|Dam4j z$l&RKLE~W$2%h-ZU0O0Qw?L@p5CCULxA0j|BFmY;NO&Qg+T{@e9cTjZR8NS``lSv? zq??KdEi`URcv_=^hK3$P{&@yK78Z_L8O4@B{HY$dm%i0q6Hw7N-NPReaS_*^K4mpD z2539*n2`lW92i*`o(zB7SjQZ;u$muAt0R}^G1o<3(MHTkFcIQP5MhKb;l-@Wfq;OP zGXW)}C@1Kl5w*-N%20q%BVtNe*?k=#rvX0YcNE}#fRBCbW1slMCmwt3F*(VnKJ}?j zfBMtT1WNeqXFr?M02NKw1g8Yf1pe;t{_gMp{_p?y5&Yvn{^LLY^FOOXe(PJ``qG!a zq@(u`ypwRxJ@=S4W&*3@QqwGt0P{T^Rs?2xri6DDeqe~_g=b1{>w-9Q6%*avDuZWo zJn5lJJdZ#5B#ROJXo!jeXI{#)8UE@)Vz?df#5r?DMH6vAB}fErO_iJvB;f2gL|-cd zf5j^*^^RW^t2Ad^&IiW&GtLJpjkyP2`>Ib4JHI`c{`p&P-#s6AIqxEOZGWkH;5z36 zzF%n=QnOt!9QIxBD!FUAtp3LZzxr?YEq(4uA7WetK^5( zyn$G&{EcX>Nn`j;f`^8}Y~&Mo#41FfbfW?8TDcgR`^g15;qD<@MwY?O<=e*TEWm$NgqwrAPA_CP8`lktcWv7 zB!QVBy0Dt`?I1rysYG0+!O~+2~<8>2ScgjYA%5R5ryikcp# zkhx?EnG)iIXV6qJPvA3!GRM%EROroNGe;8)GLz7hR_c`)l}dtbO4Cm$6NtoZ+iJ+m;fkG zZN?f4^_UrC2)1L8Ar8dbjMWi_TMQ6~0Ar*M478Gqgc|Mw>W~P;5FyBLBOr)|lm|@a z1Sd8e6&Gb;qEabBNAXi6F{wmC!A(dh!J;4%nsSZ;%6O;_Bg$z_6vBZf29ybWYchCA z;QjA^zcYc4e)OY%_=kV!K){CGTLC`$w|Rf^$tVBvFaPojU--h~k3X(-AfVNWfun@y&;MskWr zK65~cjN5O%`Q`*1<&I6BtqUL$GiXj;=lJw zH7Vm$C#A$vRwk3d2TvU_r(`l2brRLBhGoixKfEQ<`eXf>noI_A=@W1pV)WRuE)I-_ddZN}3ngQT%cG$?O8)fR`KVVGO<`)Vf<(j!=#M@_ zqc5IVkxofM5vZ_8h4NvmJK()cKdmVB0z}w6`efOT(!SE(U#|F!1A%MamgfV{8>Ymi z(5NJ;>^KE|nG#W1J%mP z%k6yNc~j^goIrjkVcdQ=@O_*Q=n_7ucu7@0;Ol$N-mQ!lTi^bZImlQnQkEEtU6KJPGU4|x$kZnpQ zeDrhQefN0<(WBBBG7F>8pYcxLk zqKCl;nblbnC|7ozBZ6ro$welhi#mn`QG;T#AQ(+@JSFvb7@o1gsKX?Ol=5*7GPhcj zE~*1$a#wysK%!Qh)iEcCp7c@YMt}naSWQDr*hsM$!c11+0CZ%UTMDZywQ@yvopG98 zy7LA~p2?TFl)j+k7s;*)4g0an0kEx3<9dgDeq=nk}E1yD+Q z?ceRc)0hub(C|Yl7&3}E-XF*Yvpf)RTmZ`3?UkGl*pq_mhc6)| z1S-4d13SsXZ}faX`5pe8pK`f0_x16 z3>qBDz$h3BQ<-dLoiiv?4ycr;0RkNwkYfQsPsqvwfgAlf%?j>i{@?hG-+1JaM{LGz z{JkXLtwkU1|IOe0jZgX29SHb9-`5KAs(>?u4}S22w(Y<6YrkguFB9-lLe82@vrMWC zG5)b4yz5=>BHfXKR|UK43rU3Z zm4uiuMkMPLi27U zS{IZgy43}qI0TsM`wVVw5dcjAbtl7#OCrxs0@R4+`OgQY8q5A?S-sKgbY~`;-AcQ^ zuiHN~oM}|2o3)u^3l~qX|HQ(XyB5#hy>aq_>*cnS+O>Dr11}{HY(E)TJ$cy`>%2d3 z^wg!bGgq7sOf~wI=AcpQx0}LQbrgh)js zByuzBqvRxMgI2eiEQQE`?9nYUOQF@xnx)BYQXm|XJ?fsE#I1GQnl3qkv6@RBR4l|+ zd`rJH4?_}>!N>=!?9u~zs#xfyow|@qB0+L92@la0LDDUtvJ^>jR#i*tXc4}8)Q?QM zqGOg+`deY`o^(tTwY72!GOfibJ3nvH=MYG%E$d>h9Dok=Bt5w<&oD%y!fF^M1ANr! z8DeHKP%najzVVL=aWIIf6e)%SCAP^4NsLzXQKu(OxPlZIU1*32Bqm8wU;u{j>BUmE zM}#^@jdrEQ-XBsgvH+{O4nPuwIbwAlNFt=7BLWUrrvtfUg^bUU>4;DGtLRR2nj!^T zWDyY!afqxaiNB7zxFtnB`I7XE<}mt_h>78rxxpJp%E)z13{Cn*rI6tRu=Poh{gnK6 zl+_mh(-7!hZ0Se2ZgyTtgXPAMNzw=crD$vcwaJAHAC%^UQ zl&+F6Pg4r zt&rKCXR~H0agb|!1?<#>anGYbhaP`y=@XUI2{L2pLzz4y=50VLWkf}NiJ(alG`F?{ zMyo^iv+62TD#6O4l_uH#TVh0AnCu)KVgOr9T4jT&W5R6sv&$_|fr*WzV2gwBu8edh z2O^q=dg&q(Mo(opU;@IQOS2qsg~wAJCiDmhB@08GvqY-ntUF5HNHp-UC-CxEhB!Vn z`i4~<60x8f;7=8T!k<4$p>3%Zo$*JL5y1q1A;?S<{cJQ90w3Aim4D|u-%;A3dwIZaJ-;020Kr24&Ue1k zTCbz?C9}wo@rKDpPflYR{(zaqOd73FCX!pon9NuZ_bT<`WOLQnNg>|;_P0Oqzyr=7 z{Jwz~7#vLmd?kT;(ZqKj97??Pt#8$ZqxjG)Wuv$)K4%Dc$=3R6B#cot`6t-SdH$(ynmVmR%3T12=R&(5w#*bzVEszin^7 zF*e_CR*HXm*qK;yy{yg$lD}O)h5i9slPF3c6XBKHlgXXe@d*=^JMOr{vg;dsUe8mJ zhgd@`aF$@}n#EMbQmafZVYRhNN-B~_xYe2!*@|X$v+7ytw902J#5h>c)#W65NqEv- z!r;>-$(uw=T`OYJB>)mRlu46x)I|y>RdDR@1Vgp}EbfRgr>zWxdUUo*f}{;}pp23} z)=GE_rP5*wD6Cb*8mgmJSQBCxno~IG2h(B{0vNqi(CDj|bzFsL`44Ro$6b_X6pPT% zjf*Vw>MBW=XwI2Tlhd*eeS89mf0AukfnJ*M$DDI?PacQ~8;N#HD@|m<=&J-Yfmb46 zloBfpbzws6ja%3PlH{NSGEW2mF&e3byaJL?u0X(<5*4j@>KFp~A*WDCu+rwsaRGvC%2X&u5a*Dt#7!47D*VaiF_2M+0?~m{ zS^@vyMhARw!-RS`gtH38cn==2z9HZ!Jk_}oJv=G=Kn-}U;m_NI#-Ev)y3kO1|GLpX zH?-x?Il$G^fgk(-{@3C5^MT@MU_^QS@U?qBP;C2m29k4-Fn*o5oq(T`dku%{r&!4U{_CM{($fr$pugwCcbaErjhJ5s-h zV?f79S)Y{VIeWB7}!j8d{L z^+fC(4qzyH<4G&s!#{x?A3@vm7*MA(h5&PQpovi)SisvO6R+A!I+tS0oTwLBq+^Ai z>-Z{Bg1b1-U>PZc$aO-BV4^g{ki1P6p8E2qGDFE;Mo~#qG~sg`GA{T;L?)QPC;&PQ za4Y~)Q9_E47Kp?vas?}*b*B=!L~zkt-trd9_k#~U_>qr%#7q8m-`?um8Hw`i)MU&uaeXF?!M;TlUh8AVR69EWxdSsf-7rNioAl;8rgao@cnx zSa32yZ+qL@eDvUj0Sfqi11AGC^fd=s(Df#*6O@bWzb8L%ApqyG8|+GWI?)1ONfv*_(b66e(vXFcL*%IC`lwD$(Te-QY1k_Oc`}KhSUCh zjzD4BN<7e$E33g!cMGM}S%q|KE^uqX&BAJ(b!(kPmbF_+RZDR4VU$^*@q~f5l!rh^ zcA?jV%qow$R-$=^Q50rAGigF$=D^5m*scqGka1efN5DBOO=imqtvm_TGZ5+wK{G-Z zzdWFqIw=?eDiMdCM6HP3rj_#K(k;eDTc&~1gd(dLeKy1jc@7$V5wJ@MDffuqG|``E z64ON60N=#%~BPi8ve}qZ?M-!WO1cl2`R5l&mC3>WKM=X^8cui6-38 zV5m!Gqwc_@;zk%WOlCWM%xd)1gK;Zs!d8VtaEM!AGL-O;x+4Q}D%}YMHeb1wTsa&7 z_VU?|*`p!D3LijRcKRsUjx&2H!wUA6L&I3&I8eznl$hukZ5d7z+*pb;4(ilUM}R(4 z)IiWSA{eL_$SwZ-<2GF&G2}*&p}|d7?^N*Sn|Jj4134%t4hVMN9}qErU?|Q7MkfQ} zaLxy|mx=0vbJm(fesvWCannsV-FDk;HfY(DnLL@FCZt(sBIUs}XUqyCo?VqE*E}@( z=7t%i$^02jnc{60x0y4hO<6|_^wQUpl_2av6LPaDRtnC-vh5N)$YPI z2N%#nnRuA_nVD>IX6m{Pz)+I%Xm@DqM7)tj3*)0GcLuG zxmLW^#o;^yiH1aMsS4sfL7qd56#s|=KyXWG5cSnj$(fKQfD)eHa0A>GD@KkfPIxe+ z27>U^5$EvKUGxwM%_z}N#1k=uI|l**C#9wwFb~BO^oeG=C+JbtF!8PR-R|3G^bbG$ z@MDiX_W0wE`+(k;{ryg$V*z#FYVj(5DnMVAI6?m!O z^Pm5`w+m?aTfg;NH1r|?yNo7FIT^5>AQ2lRO6L)yaPW|504q##Wjv-t17ck&v@#Y< z1}d6##3v7XlxIs}-pCN9X;qS5dM0KnGkkFo&qx9jz>);+EST-|d|<5AaP4c=Ds#gF zv)x-e)!p-f7w;Z$SMyyDJeLP{az5bu1?Blbx3<)&E;=9Z|4(a;hRgXtqqXo7J0D2$ zR+dTOgj|qB?gcERh!S#d_Totpp(#u0JE=rBOh!4WIKKxIY<*ma?Q3518cT+}A~}-v zNS0!01C~D^;QP78j7g7jn zqtt~7{F5|8_JRPgJ@q6i_)tk1SLl*N1r2}VjFncz2=Jr~p~zq&7sI#|9xDWtXNcir zJ9D@<>5Wv!xS$85DDlBW1qT>)3X=;HC5fg0(ah%!{80kq0vSF$0GNgYdQ9X?<^xE& zn38lnm6A*uW>QVJWox>mL?AJiEdzNnhP1*zUW$4;mVGtRfoN)|AX7rdG)R=B(_9lr zX<}*I5}&(8hC`U7o-Ub$>gcI~lG-IehMQ7fB9z2Y+xdXUKYRZjmb>QzJ4>gpN0m6d z{Xk%QJs~~IO7QApc!IX`oZD}|-8Tzt)-sKg{O8O{-ME_rnPwgb4~0i8TXN3`jK|GW zV9qE5o}g^Ov;vRkcECYANk9{|#9L3UkR^!OcRSQox`oUZJ3CO1wkQoLvIU>5s30i< zM2AduWvNWmKmh1KXyRn_r-`VD8xTMsfxt)>j1>W>kgGNElQN07QJ6BItfSNg4Wlpt zDgaUwRv|`@Nr+3lJ-c@jK+H!O0^Ko;0+i?clvL$Lp_>()054FhxD6z#CxpVpE^-0I zn4=3CL*^0oEQ2y!@L@u_j{L@rf`$l_kV`au7?puDWYlI9RW)U~M~OahTO<)fgotu# ziFG*~NVrpn$zhauh*;l@qxlnY)b@JDJ@?%6u6Mo5*95%1@7n}l{Nfk$9sj4EddfQk zPd@pi|5W(MBahgUO8^}EO9@!Y3KIZBYy~Tpn$IS-sGIG-O6sCCO@y-TiY0(k-f99E zlBlTS7KZ>bG>{@BDI9A!IEt6N?sEVA_d5s3zf|x81D~sA!T3COio**NapCuI>5H2kz(%_77)ToLX(X>qqzgZhiid>cai6+&?|u znVIO$9XqwMReZ4M-=eK=oZtQZf#=$G?c#Sm@FMcS_EUnW?Ex>}AMpPR>aC$Siu?M-S-Q4CQ!1% zStQT-fO>MpQu+;5M0!UJ%IIt_;Pq5X#@@Yqtz|Mdxsa?za+2lP$|YyBOk3+ECrRz( zIaWh;W%3H^sU*izZcSIWP`XVm#Q}d92@;G%MP?$Kl0P^TxbMFE-u>=(TX28% zSAW&9JbV&14AJKnXLTG@w8|o+H!74#+M~3-TUD)(EV2%cR@ynMp+z=!K?1GP0~roV z$&6l1*3t5+RcTq*l!SpF&`8WEW0|(vT6PhjN5DlAHb5&W8TI0v=t(F%OZh~ymnN=| zp8d?v{0uL#h#Ofk$^l;=O5&2n$7FS!k?{koF)0&B9KsU@=$NE}w(xrKK+J)sGtB`^ z$QZ6J%Q6kv#g@=#0w~#wX9k_BT9N51jY-xK8lxX2NyLQfB85ae1u$7& zZB}G1(LoYrXz=7cJhSW99XG5pxX}%nF@>bO)(i?tU383HOmhoVs6ngPh&j8GRq8H3 zw6RL|n{?5~va-z}l}R#_14j_)guYiD5EOB0V?UDN$!dU{b&LfbBsz% z02vD^jnc#7BP2TWm3bSV=uVB)aYMkC81VWm6I&?=yHyG0ZRq=yL|qCCxSyY04D zzxvfXJQ*m-$^doEibxfFLe{^_F?VnF6hAlswjT&=$80|w5UbrP<4Mk1u>uSzU3`%5wUIS?5DC#_CyPDVj56SWD}g-=Gmu45Y%xp$bvkpMQ4ppQd=gznCsRl?%hbxg+w4+F z-P|+N1QWqW7k$Ma5(%O!7@D9K){^Bp@WWb*KbD#U%*S_{O#{%9N@H+!Ok@w#U zyv(0PpL_MigfbMsnGT{^f*TPq32V_LIwUs22-=4aA6C-P;~-!H`Xk6=BH|_Pl}z+1 z4be&*xuR4U=Mk=FUmX-sW0~n4%Q$l*-gJB3VZT$X#m?Idc z+*wrK(fPpM{;*wdbsFvWy>|R_N6vie$oXG-&E)R+z>8?Rx2x)|2X4p%*E}CMa`Mjn zKB4mg|G&WbK<X>-5^gnepn}WPQQmfHlVXz-`0kOZa?14h-aPcHh^`mVZDbw&9#y zG3jD*$eouov;^QYQnvW|>cN8tB?i(1OONzJ+LKJi0&QWk;>b7D5oE=;{K@N5M+wx+ zJVz2D1(L&{krV+ub&>g?lrYGhq*d@TC~1|1O2zss%_CYm;n#=!qaxorbYd@a(;eVO zgua$(%#(gVYAO@Xk+h;9h0de3wD1J+y&HCct_63pZZDyby*OI`Ro2}}bys`pOw(um|O=@Yi} zC)c>Jh~bz3+R~r4DK+759La)IajTbc(Zp&)sTXcB5C)}NnkbXSnFF-V_DZP>KJrZa zFWF-fNLoSa&LR$p6KHFmDCL26*>XPw1Yw9izNL9QjFLD!<*o=2Ga=KG$2bQWmEuw& zAbAx&e%6I{qyx316=a5$0;IUrstbreN!JA+U?4o5X~Il9&DXy6wQ|LBf(Roxc%TxUJRp#!R=`YyG4~MXVR7pL5m-bd4?a*SZ}D*}APe9Q2fU2! z(_z~{M+A0BHl8-io@>vz_%nLSi$ZV?2i*k$Dv=u?%T&+80Z+PHLdz~HSt)SP9jF9@ zEX)%;;YC6#h0Pl2!V$wE)h#{nN(8A>5~yPpSy*Y+*G83f*-Ep~L9WuRpsf`|MCzCz zR>tJ8BD4g$1!!vs*jR+}mEzS1R%b;}YT_9Rs{>ua3I=7CA(0_VmB9k)22K-?3EhS@ zV}}oJkdcBL(^%^C##Yxb3As#QENAM1RpNsQVA_Zt=8ste3- zK}?_kaGUjo6#VnJJ^dhF{SSttfi0fIjEGxcZ@TFwG3N$D>GPitjCFd4TAj(dUo0O!_?rLpmq&-6I=1xAn}5tN7S`(B=@T2r z&RksDeEss)8`d^1tv~&1=Qp$&*(Kifz^(`WgLuGu0zW}iB6@LT)#&sAsoW8Fi|_C&XTpw~P!XjdAGu3E#F4rVHiIoD)sSX|Y{o;^Rj z=ZC!GbTwEdYF#T5T?@A@!09O6Dl;pUaznix`NGyEZ$Kto?BPeC{(?ZbNegi+4N)oU zH)=>aa+r?$_U*GqNEM`Zay+GFT}EMvmsH3QtR@yanTh;FvSEpo%mA1oMSJ?A4NXDn zizdmQY$WtaQE-rhl}VQ@#nxD^g^W0@@)_w6q@={8$M(LI;RF;K6@*n|2jIBI} zbV8L$gd)o#2$@7h#bTOmk&5+H$u34Q%`ysO&9xn~Qp2e52IY}y)s%$9N{XR6L2R+M zYK zC>g^?M|C2id~}BA7WT@iq#_vV;x_3Aj2w*BkPPGvczyuhK3X(c#K?4G&FX`Q66P*Q|AP!mliJ;B_R0LsSri zbIHf8RzQ$CJVSVcCee!W>Xb?M=*I0C0tT{FcQpF40>%(1bqw=xph=jh;I9k*N~}~^ zjX#JQD%41;3O+PXZY+^@Lg;+pmRoL-EB@yjf!*&HY+H72tZI=0ITjFy%kzO}SIY2i zeX$A{BX16P$kTSfe2u+z+=2F1)Gx72SWuBOI zo<5H@5Lm=0fm*2X{E8|{x1L{*?N9yGPuXvJcpVM|)NQ46MBo7zxOBl}6yAy=QGyzz zP(VpKar9JDMoG^IB3ckj9V^R$l5{$x2}70KMq8~RgN#rWz3heIwPL8uIY74g^h_(G zV6xx0NZCZQg+&&l(k@2<4A-g`hTH;F0721K$>ivxUIKlDN|rJ?R*R?{f)b4`C7@J? z*BW}hGDe>9JkCZoOcEkWo(7k1^}<2WR^cCZ#V9MRowzbf5B@r4=!G4e1r{N~q$;CC z5f;ab9kkdeWNFImLa!s~S)n+AL%2mo;g$RMzW2Spy#G7D^E|E@wYb_t1^+?xOU_wRQ^pia+dOFfT( zrf6H73yi)EfkqRCD04)x-8x+WL5Nvb(!>drNoeJK{xmmCcqxisO=OxwkB@!qV+{Pz zhd$&52}cKP=Lcg-RbIjnTMC3ZxdF^Qq$P7P96e_O6+;XX*gcPFr2r2AUgC43A9^K% z0AdaVZgId0giHleQznlJ0%yXBT*A?gL)f)4@K?N|Qt#B7y-IV&HQwzXZg-szOf?3- zar2KnvDEvcrMX|Y=|^|Z2mXU>=yuiE^}q}0f#*6O@c#{;eLgT~&;4_!`%lf*a%*vV za&WlSnd%Rn4;<{bUP|W!#TNZXijQ@`3vv|jY$gr| zu0b;60}+dz({JFbe>P~AHo2LtoMlCsdQz0_dq5bFv`0lAqBVVGcj|JIq&LZYR$h&~LtW2tg7|_SZF;W-ntn5OLVJ()7>5G4qN$M!sgON#6k8~BHEuhvu>!!8O z0tzYfflL~vk`+^F#aE`6R=0BLES)kdg2I{RVN0mofQFi~$Xcd}#xp)i>&S@W$FkhQ z7Y-UFX~DCCrF?>CT2Us~g^AOo!H}fToDQr|$Aq8L9cKVZ0bOvzoF?dLuDg;&`hqY? zs*q%o!cqv3oPo*ekZwn*MDgDVB`t{Yrxkp%Bdr*cs7V4D2P!!n9tWx_<9sO=z}zhk zT&;``c|iK4WF}AntYDPec$nHuzzyh2f70ort^!Ht?2e^aDs&)AD}Cf$^f$Lvq-W|9 z!eoX?$#jvS!IT*zRnaJAm2ykDqNI)=(otR~b(G*i0%UlmRg>G~d(ngfw2c}t)Cf>d zMK7)NXB~G@7?P68@5~r$gCQ~#TA@pAgFD;fI6!+p~OVMNenR@Vuj#fMhR|$o?vJX zZpsOanRQwX7Gb9s{Z4TKknBCzVemgUjR53@czJ; zzVszOLGXLO_j?WpOcgl*RxB0Y60s>j9O+SjCJAEnH0?9nsYEx^o~r1D^e7xv)sZRj z0l7s35QiRtCL%CVahp~TQ2?3ei^N1x&NrQy%wER+(l7mzGl7R6ewd|xh(M|SzW2S) zTLh*Mi#V3M@C-Ms+z*f%PkdsvegExy#v1*J<{BwYy)yt;#N|T@UPf;Qwb29NoI?dbZG<53FrnZVig}2dcH6_XnoC3;(^g z=YQ1q_#ms@t~YCQ-PTfXvg4X+EEiX6=<;t6U0xh>y;$BKkhvv=yUxi#nH66rbKXf) z4hN*-Vz@fC5uK7I-^cj?wXw1yST60sE#ekv3%a-a91h5T#JIfK>BQkX@Nv>ojwuf>F7>lgDMH*%?MH5P`l1~`K zd8FNr~s9l3P0K0tpkhunT7(wcrp=<0$qbi0#Y|#w`MP zU63hpC=(21p@-B&0X(VAX>KV~c1#|E6%#m+Pm+j^v?xCQ&?^dhLvb)b3F*iIoo})Zm*+DDK0i$o$!Fwdd#>6_6@-al<8FUK-6Jf`+5tBh; zo$!(8@5h%dlzEn)&8!W_WC&HY6I9loS{N(b>zx z2!Jp|2%d?kw4xpeSt2CeMqP_jR!xb<%!vnJ;sH_+cor~Wl;F&Y(FsBEBZ@>=bbv+5 zp4!m|qu3&JtH6}42oUR%zSQF-Jh!`=tSFgCt|?magQr+&uwr;=f(jaVL+N1`6+`JM zRu^m&iuGceu}kblpK;VzIE~OOD6vjSJyzpSE5w*%CE5rG0#r&9OwcgX#1k<@U`cEd zE>O}$UlV}geBzCf`|i6>7U7k9Z~fWwdsX1mpZ>HT8SrcW`JI8Mo_gvVBXBbCg)e;J zv!DI!Z~yjhKk&c9!P9(5R4;=Pq2iL#w6}$arlK(vvXix$}qjVb#xtL@oDAi2{C49y)3q;%)wwwlH z3wwzpngXOKu@%g7G9Vo7IC?$*`vZp??P_o6aNuBV=Am1P^MOBHY2A0*?)ktq_E68> zRqbMSJ@Df4!1r-J@NdmMl446uZECvRSm;l6hgGi|y`;_uq{l^;{B)iy4KCsOne$Fs zu@$`~>hkt7dz3VS+zRQb+)$ZbmLBW4Ma^q+KBkx9WI2;^Sag)hvg8uhK?#`5r_6ce zB*{P|LhzCeDt zAJCw;_{zs*R*)bWl%1oDh%BnASQfJyT3(YlSt3=kB8M1FmRHLnVr5odUDUM#T_me2 zS#8lXia9vQ;#eJ{sKGy^TlBTkJc(b*q_y(??d1j|%JPnOh}oS&f5^97{0-k^vS;2Gp4V=*($S5jg|H)maTlM}sX* zaN||}!IKDpAWYDN*sa!V;nflAf>O$%L|&ka3$RG5I=L#+ykO*zvO9f~8X?dm6@&q0;#8)TW&Wv2 z77EJb5C$3MlmsYYlmsb3>1qn|QglvMNmZVKK?5)WZaIhTfTae`ElR4=O)Dv(SJxd+ zzT!6}H7AW!M;lNHJ zm|z$(l^e-FcburcXbDAZ4%rTg;iKq&HN110C4lF>*Kylzx9!`v&ybmHCIj#YWC9!C zOi{O{w;}fIr-pd2FPGX(lkBk(t!gB$r=SepqO=&YTp_@f!HBCqt@pMrNk2Hi-s^c$m;%`O3 zmQZ+6k!UKZFd^MF!Dtm~JSmrCFGyIG zV1#JI%Fv|L7ZYm7fyBkP$|yz<6KG4-D8>~Y`8>;s0EkDL7C%DBAzUQl<;iu+dvP7_ zscs`432IYZs24EUvY!yN<12^n(U|)?jev z?Cgb$i{~yZoIO8(`pVqaW!z3|-g#{6g6rt!Mc3J5moKc`?WdzRHZBvraQf`(+0!d$ zw$|3(xW4|TV;h%Ur#3I1Jau9D)Yg&B(??HVIC1XM>gJ_m>*p6w7uShX=T^5aY#n>k z=FvAUZr!zf=Jlu6&Tpnov1BrU06JQQPauQbL%UYHaG6xSigIH z?XLBWyVut5I=OP^*7}vxtLM+GT{wR7^odhvwoaZoxwhFmeQNsrnNw>QU49DQ+uF;g zE+5&vqNDDsE0@<+uN>QYz3b@u<>M#s+FHGP;}{LE9N)O}==z!CC(j+^kfiIZ1~>+~ttI=7!Z$5Gt1a_X+t&AV3_a_W-qM^BzPwSMR3#-(E$ zR|qJa+!<+LhBQ zm$r`Hb^6%doeMwFI`^g{r{1`H@(um13p3{~ub;VdW%K;<#%0&B(^rn4x$EfW`6H*! zo!Yptv373p+$Gn{`8$VaFRX5yW!=n$)3X=P%%8q%ZtKeC>c!LRmzK_+T{wMuaQ^gA zEg-e+&xWo?5-KaiaJS9mNOeo0n{#H%?ty<^NN6uWVdd+PZY)%oPSMpE-YGb8BVm z^ycMR*RQOuUOaj73WZOdzSCrIt)4l5eDe$|3PUz8oY*+KMEaSn z)%A^a!G6>K0XchS<-ChHLYFr#dhOriW7@BuKEJkg?!?A9ZeQ6n9G4f)+~u0vx^w>Y zXi{xlTs?U==|@)#(~loLbNU!&TNjURoMp@A+FeK2E|^qX>*qJu&dr`XGk5;%$x|0i z@A!nnkDtD{bo!iYaPhorZS&Ic_460j->|WCetcb&(`7k7+pkrF`ue}KS+umJm%IltJnud-zkvuNLpkOatSGiB}}f8 z{0d%bkpx5T0iSF~7G%9cBjJ&9Bqy<2=?*UsNxCJ8lFQ+*Vzd7Xzwir^M!A+-9I%xk z$i&E%Cr~NLo9^UVb{#2LUa@kEtuDl&u``lX(9OyEb5=RFF>5}1~Fn#z0USdOSqn!N5ZBk0eB#m+*nh>fIFlHylFRWMHIOCUO=9LY9*fVDjdNF=%ny8S z3h^)uKK!5+TOy1g4C^pa!H0ji)F`N+p|A{)A@mFZCJdpWE;`bX<}?A}slqgn!vUXA z3k%nWykH0EyLH?a;>2jl%&WWt6jn$OvYl zW@efs2HKo4k@5(OOCX!gJVc3RB8JD=GcGO(M)pQxjWL+Hfc`K!B4CcXsLmpN3(H4~ zBMgFAiq*(H#am=#DWkuVwsANsbfhYkj7T74>PCmQiLM@S&PhB}2f|<~@gy>Vl#S^H zndN|`)F6>Js6<=!?G8bSEuWh+=91uG{$x6d7%E}~OhTMnfQEEqVF(-!Sk3K-AAa~@ z8{z!$U`__SA>d5`#{&70fxJ23tiZ`YK3I2{@XNpa%hCWIrXGb8+sPu7APSi0K=>8V z%zWnqjsn~YS<1Xo5Tv^2Lg-7YUO0qLq4WrFW{U?WPmNX>Ey24bF>3)n*90OWg#tvN zPhVl#02wbM%OWpfvd*^*oPjtf_}$h54lyJKQLI>-=81v9U1E`AL`A!8V&!XxS*`}7b~s#Nw@9A zR%hvs;q>0=nFIadzHa|uf5}xDF`Vknj;{I1?p%Lje!8;MY%aKnKG+*fc3NXC3;GGy zWOKpQY)!i+dxPq5=3uio-kq+t=Un5%;;MCL>b=>S#>Sw!I@UjOxVPM@`Ns{@&CX1t zt>a9i=?8!2U59$Ju5NR-Q`oZ5ZY(wGOT|BNYb?21)wxc6pOZ~>tUj0b5z2K^KXI+)< z^hB%QnJg~f`EE3qba8Q@tJ+?w>Dz8hcA6A+#aC0!g^BuHvpwJHEKGHVIJD^CC*#`7 zweHaaeqUlReQ;*sb=~1)Z*jcilbxe{IMtrzV6RjgIpB-0QM_cWqwff>%e|mf{bEr3cusiJ676$djVfEN- zW963F)z{9fO!bQEj={WZsx=s|cPqW46YZsm?t*K)J#@93Gp@az;r`yt-sw4)f3D}c zW4e3$pnYg?# zA5_{)=0kVtXs>dt)>?KQw4d#F5BFQ+!_N5hET3?!VeK`Kbm~i(V0E}PODhwy(ORhT zLu27^cfPoKLszBKt#*5j`eLhDFswG0YV9M{*0PuCTdl=n3Uy{Cn_ZVL?6};vdvmq+ zbhR}cAND6_hRt@T(P}rE-rnyF>$8K}%v9ebDWn$@rZYFuoStfStL=WZHC=1ZR6Aba zUp&xT+}D{uJX{)^UM?n8cd^kqT5lhzG)~l7s|Q=n!=1J#(Z!aokM)~#9xgu}&}+`@ z8}|1OdUgMTu;GgUMs{hUGwqo=)E&5Poi46=XWlhkKQgE;-QJsbIUm^HpY0!LEZ1iK z`^29AySk^<>DL-<=L6N+hQk3z1TU8J0eRYUfy}MUd*#WpxECC-edQ~Q|7HjL*1{^U_}QQRS!?IK?YCN?Pfg4Z4 z0QDH2?$p49&s6{gXh>T+(_iYCgn<=F0AS#y6WB^8@K+*65Rd5_Z-fkG9IKKXhSTCq z8~{h@f~{WJj|9VA@Ot4xF;et$3lI~B54moUxkW|+rSAMJd805&ttg{E1xRt5CM78V zo@n`x)J{jGv?{w@Sr9y=EKWuzX-wh=50Y5QIg{*Z1?o8;Py#d{eeq0p6(Dtl#~FW8 zR6x?Xlr({lw$xS+e6BKBPr-hkT!<{ z{2&x7OW1x}hI(P2pE=xb4%~kG?PjKtGV~@@HgqPNDQysynO!D;=gXrf!U!FrgfJrb zfW&GM2AE(*8Y0>c}8LIF(lRq6|=B$rR(iXv8yR?1wy zV#okZ5YRd5(J-;mAbR$JO6rMkHv2+DE zCGZFczrnZ#@QKwTv!??+{lg@D)B|qWm`4T%a{vhgudX8w;a@BRBf$UZ>easyhb+ek z38$Vu!(kN63f8^j9q({*^3X#Meei=Hba>)B7mq&rs1IVKTW@>Y+oV0njEGSXlk+Uo zAqs?Hbc5vo#A>5pyhsTcXrpXQ^XwQPt+*iz=p|543=_c2utF0`rF9C3FhZ@+bRz-x z`OgPx{g$iKoNv}<)+&?#Wo_ln3u~vw+mp3I6)vHwc)%`P_1GC*$ebKqW;r6jZt)sK!i>}GW^hCYz z4A&iQ+WF2*bqMPDP_^0aHEZ2Q)wi|>wtf@6nOsgV`jgYc%51Z7v{65@zjy3F|9HFY z*D@Cm_A0K4?wD&|zu~IYrd?yL#c>A(qyIZ^!#h4bn5hrF?`^Z}az5kY_F8=~)oi<3 zRkHijt(n$jyIJYETFq{~*6Ou7ty-hgtko+Ml?Fuffb6W-sW%4g&TO|cXw=&W`^^Kr z#^G9}-tT4~;PAQ>}0ExEu-@Q~wU*V6)w9P1PF{gX);8Rj;%g zRUbeXpFwx4V{OSFK0U`T&S!>GgXzk!S8orzFVh;f8~xtYV!yJ~sBXCYuRT+)KjA#6 zukP}*7=9>T-NE(dbMxmZn-q4z|`0G}jun)mCG@Vn^R9K2#C` zrn<#tVwk;$I&)*ag>G}c#hF zp_QWR_EK-=e^zh#f2Llu(5Vk=69@fDNq0Hn$~-BiN@dx#ueabz{Xg3K z19G-&f#Qn`opNyeowkcE;(EBO^X&M;9jxe&F1g;Ks`l}u8klzirvQBoQu4p^y6MbNud zSFt!+SRv(9FxG3gc;cU=#Tp8Uo@cVDrvrw#(UxZbJly~@mFxu^f>O%Oy7*103qHEb z4U)h!7Ls!~GpVLq9doM-o|K97xI*7}2~tP&)Z+pA6AJKW0w>U1g{tU@!%B$^l9%v_ z$!td)dJd640I3C@$xPxjUC<*->XO7mT_EB~OyVdGp=XpNH(fMgq6`xiy||jVmjh_%32Elb_g*&wloCF~ zKm{H^-f_nrC4s&<5YQ15b^B-py5L44yo$VwCT`V{DH$S*V+-BVSF1WQKza5uJZ^~- zc!m$-6J~}iX1Zmp?h%T4Ob$a$xRtKM6GOLvVx(iG636l(o^dI*w4yK?M&+9Y+5TVW zd_a>E%iZ&V8_A^$+EEO?`rit2EC7>A8Nj#SiupMlaBkz91ty+ZXRr*q5j3DGh7SZ| zd_9I9?Zi5dUZRRp7)f+e2?#HOjL-pZV=G44{3bq&*kW=%CAT#O+xN=?n#i23F%AhV z0#P1$4?7UA1OcsLkxJPrE(yzkk^rS%h=F<{17f;S4B#MMp%KCGfv0?;E49^O5^Z$H zP-sdR*DF?|+0F-Z3YUBslAV5dGA)MyvDY~OOdx*XCAaC7a|3mnh}$57=tJAsr2<&T zaEgIMen@1ji}H{(7aq%J-;?XvG@vlTNFrxqh36Lt9k{7*CT>^()^UQS&?9h*pv1td z<5RLCMJOFXr-{!( zv>4?n$eDn$1W_7|;H*2qhau^%eA=vk_qX6aY9fMY+h-LR-Eqr8KvrP1G86?JN(i#l zK}APyWQ&3G40=Ym%V~fwZ~E7VPEok)^Pm5`mkRtthj+jG-9P=)KaIvz;a&sH)fojk zuqEcO1=2tW@;Hn0+@&PKXqqhby)s^#ssY^$}$>l-;=Q+Ek1H>we8>zw7t(fV@r0ZF>jmPnp)~qkNCLO{>y&fhws^8Wshuo z)vOkW1C9tNUtCT9wZW#icxS-j!075u;OzXO(>q-6*?2Z>)hn|(A2{3|*uUFXIv;r5 zblv6j!?kzVx?|8}vR4aoJ}@)3;C!Icnsr3rlV#2+ju)H*w7O%>PNmj#+4j1e57+}b z9B}dw{=JFeU}~mbTdq}??r1N&at?5KP;*W7CtL@HEtj`1T+T+=?q!ckt$(1~c0@4n zHOfitLkOn)6|?^MOjMv+jrKCa2oXMhDIKOm}jwKiO(Pjo%9^jyW8gbc|G|SM7DCI*sbImlm84 zxNM^N)A@ia=L1e591&FO#VhDjy_zEe=L2*rUf!q@Ct2?>ih@f6s zclli2d6WYLSKcegXXVVFtaS0hA-|93e86RM?eYP7arvivwV9j<8N_;}IB2TYoi`ai z*0;^H@%F%u*wK>-=AU}FxY5;|nrT&LdsB1W$=S?Ob~&XmD|0^Jh~RLyG1hCgt8 zM+z&A@nieDt1eq|Z)McmEmzL3CY#;_IC7}HvA?lenLOr*!1;hn(2)2|w42_9898-! zzk`nA++(g$88#}tc6~VRo3=hAYBgP6IB*T8cw^d&1m1b5RHm!dnf64lJ2f!b{G5ox zfyt)xjoDsf{@`%YJ3I~tJhKkmn$0-IGO3F9r01!w&P+Cmkt)ZIq)r6Q7St3x;1d>;~MT{YF zgi6e;p~bVMf*R&g3=CM2Ijvd(K)7lzgIzlf!}2kZ~ZI zcz__?DS%i8h_fNa1X5oW-4QF*bq^nu=wkx!*@5Qe0ek=J9}bk~13QdtB2Oq)gfb!M zWeDZrfM}d}uFUzsGeS3fFr3EKzVYFk1!kQomuYWe7&!AvCDY7+8eCJtgYN+sz62i+ zdjgACkw`8C2`>Th=l^BzPM~c)szOmO64IXJoU_mF_g;P9_swokn?M4gjeubD2m%46 zlfG}HQLdmUC`uz;0!SC6kw!o?po9=e=t5``K!PG(-y6?&efN&>#^8Nx&#*i%3M4#z z;`7c?<6pJvpEYaNtg2bF=3jsPq0A*xHFT84FSmdd&7RKwd2xHXKsXItPyQ=T^UF)& z7~_hgUZOwaL4?Ypb|m6Q%1r0z-oRj=MM4*a$_m9B`VHHv5UMZIrBJZ6B2WvJ3Jt6v zC886@puCurYvVz*d0(o&gbi1{_G}SVHd_y#DpC=SJ}8+`|aYfd@YDftpN}Ndp^rz?&N3 zL1)GQ{T!vc0$jO<($@cJ=2(x1PL8XTP~AocOhkZ+>=Bqc2O`C-83ck`KoN>o-@tc^ zsz(`F#RZ5>pFR!yUOFnFH!w5M^8@DezefTO^>7%zVDi=Xj~ zXRv>CEi%!8NrNUgqH%%^M1pgFjd!x!IoQtE>f6oM;WCbD<=y%9^VbVInToKvy0V)}T6GG!&IOs) zopOU-re}&YpBCGtWUIJ7$YqB4?9lm!>m|=Ity8AU{`( zl8yZOMmn{f%Z`%P_Kj4<;iDc{edUKG>kJ81B^!jLh<=ATF{8VGD z(GfD8fsh+Cl5NZ0tgyM3-dfKbP1X*tRW?`Fch=LRLTNm83Rpe1V;4a@$Dd@2gJgD` zNeP|8>Y$QpRx*upy3oj%TE%qFcKYc<`RQ}{T)CUC99}O7yUARHo%L+&6>nCyTGj1j zduO$=xtVNlr8(m$UPyN` zNuit04)aAW0*~jD)o!je@);*aQofbbGk232;Z93wVJDT@O=q`KmCaFwmw*81W&yR?yC@!(y^cZPg2mG-VTJ4X58q&Pl4UlMeK zNj5!7rG$-aQ7{gjQoYjeFB!DOX}I%B{rsisB$*qpXIuG{;Mu=0bx_#4-?q~4?W|P}Cu_%7vPM(M$l@aDcI^aMX*Jiook6O)k#9|1BKh*}YGr%5 zbY!8ZpHH$~yZ=4S^CnKdH4w@LS?fkwKbxKu*MweSd01Z4dD{7vOrvFJEb#-3H1y_r zd3-G0-&t*KWi!H{u-wZn>R|0!&ifJhdZSf4Tq|vPucuTQ9$u>-OSSgITxr#o9;dfc+MWAZu{ot_3*TNyL>g23SzB#%ChJXA1!lmRqdl z(TNlYjIPKVaevX7*_I+m&49hf@I&MlOL1jtpvGOd5 zE20)|k(h=9gfKJP-1Qd_3$a5Jf$0iIgy>|6Mn^D;kc-UWN4sbdk|%#Hr~~UNxf_gr2?=Hd?rICRTx)Ni59LZO8UI!RCer-;U66skBBxcChI zMU_t56SC&eF0pw)?}~1(YlVNnRZ~W<&?U4oFpdm%dccSaWg#gegi zAS)3yWl=}Ur9x@NU;qyiqia#r_*7YwHEY4D)_ULCKRg2*0w4R>$3Fh?k6(G^mG%#C z3%u)H?|REy-txNFz0P|F_SJh({@mw2*8zqeqw6_jj$yn719%9CxrQ#)!*QaAy8=22 zNT;djd8!qJnstr8bXO$8fvFaeaYjUn^tcswX9$QxQ){qS)U+%Gp-IoX0>s6m2)96_ zm=UCdz;QKA04Z>gRVmdZKz%@0Ve=5+i(d31&t9dduGWkz>4{6E*yEOTaoN>KE+FC-Oihm;2r+9wn?-1QikOFwl;oz==wyQ9~d z^;OSZ8x^~0&fD%E+vuFv@18&C-F2{gL3iuu_=Fd$)5W&sd8*p>vU4Lp8n=$#r@ec> z?vdl0@OyXZb}sC+@7mwKu)E1WAT;Z}ap` zY~RPr_``9sYEjng=ISf$692$fxp2|O=pMt)-TJKyH~PXoJHw0nlbz9av((@m$do!> zMyThywS0Bd9^SXRd2!1Y%GS-0crXxk52n8QE{ZKfoX0B!cq>=O6EG3FnW7!d*Mvdk#kz zu&5i2Os}?F%Pmw}`~&ulGzXja?(g2SyM6E8#yvaZ^IM&ZhT}VJY+ty2*c%qYe7C+d zXmJh*Cz}1cjd$)cu3a#!jE`0ZyTywMyf@iw?ld!)eFx@6J-u;!e9{-r zAMYOSXyHzw)Gq0g)n>YxOEt208g=fnIk-!wfA_)o?#)f%zRjV~=rps%T)J+LO=G#) zSnD`PpnXAq_t@6qBO5zE)jfQ1XICfx>DKNAy<=PiJ~>`0_0qLY#_pX`buye>FdiCc z7ml04@nQA+N#n$%wb?36-!^D<=G!AK0?q+0f_ryP2-6|f>)vTxzw@MVe0OwYtKS$5 z393=qDdooHs=m=Zk?CCAIdXiwao)z(`Q6?HgW>Uw(TUCRk;#~gAYUsL8-!3#{6*nvW$BQsQXBjDfFh4(U zvS97-|qbHkpMjU(T@%nf$Vr-HL(xbU`j!pl`F+O%dUuNF$_+V zT^La&J|-4q=1^Eo=2`5?0>?ZEA#5rLCd!DrC61uK2m*J_&PcK1m@x<{m$fNEKKKt# za0txiAroRzWpNOKVh>1B>#)yNia=PBFy&GswIfMHLgvA9$W~r=VJZ=(TNn@l*ua%Y zkd-~Exo34wFOV%0R7V_TbQGrw(qXDs7>DA}#PtOAjqFhn2@n@>i(SEf5Funn2q03- zpwH@Hfmms}D-l;jjbO;o)n9<-R8o7L3fm$fPo+oez{CLhu2N7&mYv3a1Ly;6FpU(1 z8Raq{nQ+o2`U@@i+{2w-Bt{$^rW%8dIR^&?$gIkl9T=-Ei3mmaXEXlZ2vh zohc}aWd;-!7w&8o91CH}8Bp2|>bIZ+W(vBReh%lrLm&Fk*!o3py9?7~LBG*gG#DK< zV<7&wSl2}C4Vm1yjf0Lf_3P+YFjxDv@HMyp{f(WsX~dMKbD5)QHmN)Znw0}aR< z8Y9F`;PDsbAV@`o7Nzm@EA*pKEa6k9(yThhV;}q2U*Fp{FngiEI|cR$*gU{d;0=Pe zzV)rvyq-9`hK^GW}^IqL?YVm}RK4&}KN%y=i0oh+{_F6-W;q zJJVNGmbei?<+?_?Dnu69V}L~Mf{1HO4RI?8CyXYRe5LdvnpZ#o7vW0+)z*U?V<>^m;T z;5B5MjXg{(mIseX?R)uo{hJ2MU+pgZUG1#DZ|wVK=iINi_C4BiFL$Ozw3i4x2N#~4 zUU=D7_iK~+uZ-sYp_2H=`W^nRvGkql{9CriFG{UAI?btY=}JFW8*Wz)U3{ee_p6!z zmMwp6bjO<}r~iHDj(^)oe4(4Wy1d*Udd$60Z;qyqV#_<#>fx^z)8D8SzSW!iX6L|n z8mE1?b;gbD!q-~)U+8r1VeWR+Uc0;6&t*0$zqzpXj=|>Fn{zic4&K~5SNK2ji~nb7 z<@dJxPfah{yOwe+3Z>3`Qe>&D3$H}p^Whg|o&tJRAKhmYl~1UJ`f&U4EPuT0Iq zZ?p65_R7tz(%5pYN`KG zIp@EZ_uW`O?WV@*9~;%)mYSQiE4^y2R5?~C9ofw_PE>k?Abepn@x`sg-#5n=9x3_wrf)qjL7u!^|fK>6Z>_Ph2{up0$YF z$&YK^m;a^A>A!iR{*}hTZw*(!Qa$~~##w(;E8JYpUOBkn^2PdEHs2Xd?sfFu7a#wr zUSa9jp!~P>)^{82zp9?~jq({c)lR>;bIy(B;ur0^=;b=~wOV%2t!(8RMQ{IqaHVi< zd-HGW^TOAM`@h;f`@5Bj@XX=pK`X0Xf)Li5eWyM?IkWF~cB+3OnQ^g8YA14|dv#8HX0mkc#`1UT`-JO93&J;ws|(_ z7VNlRY;R?+T$}$=r}~}Rq5s-iy19Q)*S&6-y1Kpmm~Que%gfp7(RBH+vlAPc$>Xz! ze&^WW=JqLnJ2>N8y)(W&IO`j&yl}S9_;(a%KSeR4_@6JelSz0jcs`-)#_cRb2Qqk-9h@Zsq9Vl*4GH7rrtWzJ;oxvrGxo7lu|EgX4TD9=s%4hy#<*ctX&$_95?q5#QAE+H{<#vVm z;=r)7cx;&ePICEwE2O{KPyE#&VZ_}yKJD*H?Qg6V?mOxq%_Oby^MzrR2dJBQMQYy% zcIsamoqfZ2-~UxPOZe-0_FI+Ii?_Fbab<;H%L@x<_D1`L8@_*&{WM z8KW)4J3H~^0?I-7N!vd#v*l)#c!998F}e>bX@U|rYVfw zVzOo^|H7T_+3I5dWzE3#7Lg^v^vS0WRU#TfP; zA|f*bG8S%%5OEC?7Xma4D-PdFh5_)!at!4EXI38l>K-pCjSn}u?;!0Fg%tMBTpm-qbD$%&;$6c5z$a5I)7qAt7ID~)TwyQoW zDAcA1B}N_nX9MbYrp!-{%+hDNT?#3Y@V>RNA(9?hh(z`UJmeu+iPUqC_n$jrK z^u}PQ3nQ9x_BXVI{$Ny6IQj;i45sVky_e`+!xa#ofmray!kH$wWDe(m^|A#rkYcUp zF{pK)$H5*b^A$*;#*tM-s4UFjBud8#{eVebmu}JJs3w0yYl%qIv7yNltWqF=;xa+d zy5dMdpm~fGl@*8S79~mL0!71DWp$@8F#th!iqwpwjx*N>R)N}KSWTzm*gJcHE5HO~ zwhAz3sk^0|%1ZH9^~ooYQA33E&{sM(FaY*=nI2b&XVt+fW^gM)2tXC+Lv>eWS3m*; z5<^&n8llvJ#s%UAJBfvIi(7E~r8%R~qs55@M7v8z7C{+x56C1>=YW%2!L3lO)B;sA zRVCT!=Uw1O>)@P7RhbYx;I?hR3kCKDeBc8g_{c{-VygiE!293-ex3nt0gGG+mc4q# zrI%hxm|+Q^pzSmVYBX3(F^X0TrN=dto?0tC^ma&q$_iZ?$}l*jsYEdBmVsbINQn_4 zF|^!FbWzYuq@iyWCta^27Lo@MaV0b?$&NV6MqCWKC{(%9f#Qrurqs+8u;&k0qCa`_ zT-}ld1Y@#bOzB!g5n4+BVe>reS9tm0=JZ|;(-81WY(!@o0(4j*YyuH3q$^aN^Sg0 zE2sb3sBlg0w5w8g`08pxxHgseTsCp(D0%nfsi|7U)Adf>OZxT4ES>Xf?cz0+Q$LYU z+%%u~)=J{~r90fPa_VckjbEAHZwoya0slb3=D7U1_t-9fdu~~{DwnvrkoamUal=~T z6NQD3uAjp>P_E87B;O15mCCMg)!e?%EYE#5lejLO_|jV9%gMwwsY6$c>0{{vWd?Z5;q+@Tln@(*|mn{%LGeIa$mb*ra-F_riNZr2i@ z&)wlgo$_Os&b2?@dl`A#|7)Y4KX?B#TkS8T=B`~i=i3X3zgbFL2S1niU?cO|xzpOE zv{0@dFP4vPXKKev9YVNv<@*8V)(xPCeD#ihh&3W-l;6W7nr-?+B+ghumc z56wF#A>D1SHF{hGk6cK+Xps48`rzjl&-mqb2FR+Tm%l2^f`%4W3JR&e&7Bx zuFkK2Y2^-IS-+#s^Xc`(pO^MuSw8THX7l3t`Ap>q|G=Pfq?Q^zYVDjCZ#F)!ZzmJc z(>}Fw?zPFe*H;I>dhSZr`3tS~ft}H5{l@(dE&X!6eO-D*xHg>-zBxY)e_E`*b8$7- zF0WU!^~Ur7%xYt)-deee#MaZ-tepC}^jTk8N_=_cl&dqR2@hx$&s*Nl`BSZ**DCZI zx$Z0Wo%)_q>Z*3)&&r7#*Arh)B|g7)hc6~iRFYFw_v9Jfz^8Z0sGgU(%$@B zdi7JwhrYF#`1W$*Q>nzYxy1V_``@&j;2h`_jx0BOss5x_JhahRy>afGZ!8@6Y(8;a zE)gT{#^vmn=GN}j^)-tXZxR)X-qA_t>Z`xCaLN_^>?cZzkL42Io|}fxFQ0q;+QH`! z2EQ;jXVZ(XFq|{mXVE9Qh< z1nde|xx(aAin|JercfL*s8~2AaWkE1E=(O$ry993y}~Yvc@RFHan2@@C8k2zSx`Wh zJ$q^k9aE%f)L+#%fto#$Qm*=nC^||Ho?WG5OqBt1)D^4p5)M|~4G<3tTsmqp5-BOc z#Fe`QB_rZea2wVgg6={KamhuyJWPy)in65Bg zi5DOaUy8V^B9LO!k6euu$o)DQc?NHI}p@ zbdeN_7eqQGCPEuq=y48+&}Ni5-EL_^y<0WY>Rh`bGyed!7WxVgN)!h;(R=9uom@W* z4G_JWj*1kw^lg}~GSXV~8xWyjMd&ECpoR2aq!3huyQ&ac7n;8)z*MNX`l>}#S?y;0 zb8)DYE2n|#sFYjcDrF(e-4XLqMAQ*T;UbVLTm-IUA`1~I0uSg1NKv9h3}Bd2HDFzF zj&1b~JsDb2t;vA|3`StshEg(kwJe|qw68=!DM@ilA{oky6j?- ztGs;$&wS=H?G_*6P|NQ6i-No%C{?2jL!{zSgsV6Pqyse#$;_@~73?7u3Oq)fQmFTcyBdI$zp=?1 z5WpuOV*eH3G;o)%cyDLH3gpO$TTBL5(FyGx0oOCC| zdk0R;Yt#?N*Vde=?%1?J@klqfQ>YBfb;t2ddZ}S2H|Z5Necw%R)||uQQci1c_m|s! zU(@q>IFIl9<-X(9oW&>j{G5-_E!TaRZ<1+P*7<(Huu+;G6yW54=khs!Z@$y?^*TJ{ zz1m!xpuE^bXkMCkdwK-aDw!xBmnOCQO5sX3=hj0j}!Rezn|nq@hQ{ zzB-5Jer_Omvp{gbpfGSKT&m%V2@XZfR@%-kz`SkYx!N(0s>`LZ_x&v!1!pG;4vlv% zT(7VpI4V$Z7DK*QEjydvX?c5GWvbh02Mg?dl`mT!`k-N_)NABg=|;oa#d~iUb<0YM#Hx1QJ*_-mMQK3CvYV@6(x0G%CmzTZfhU>rn z*=uk3)V0@IDmWjHcpYN(;VZBF$`?NO<s%pdq4CcSKoBwRiC-; zi(kF*(w~1wEnDdoeRiSSDR1%*BpYRCD8%Zy*o*6&vmxv zd%OCQuL0VzkJ|dcSNxiBnqRfn6MQCP`lXEOt`KKMI!G|vvAw^Lc5FandcZ=txLqmv zMB}7X9%q|Az%lZ@0Kq|s4nrVGK^2yJ(}N4Vn=t)wVWZ;%nvQTZX!IW&Z(7BXjW=2( zzL*dvTRIQWv5G#IP_uj2wXB!If-OOs$hd#$XB+;t&9Z%tyM5i^D8q>2Bye{F~ z&Ps7m&}xo|XgF`s_Y%atBe7jCZE*E8^V`He4UTrK^t}`0%n+YMEY^8od}wk!C~eyl z!w+DeK%+S6R5_d`f{$r7OPe~s&bHhdue2xC;-psE;22Z|MK~Za+Q`|SKL6oejIP_AqV|6cnC!c@DJ{Wkj>cV|}a4>yKy*WEC) zWkEb3vj1>?W{jO2k%b>X3JR`!_U6>!jEI8Rjcgl}5kJ3qhbhInkjSVAGlo^ewgGGd z2(d~H(<>4gB#@!8${>XGAg>1K8Yl4+eKgGiWLk2l#*9Z?f;3j^p#i4GuQuxO*m z=$1l*0)v)u8*Tx%;t%oSJSDG!*M5rTb>OTqa=&COz96&{XKRW&Omp~%X zHGrTapcDgHb4xTTsh!Z<)B^29KTuz^ znTWfg^rQeOp{^-sN;@V3DHNIoHFp7BZFOS_6aE2c^mZsfy;RYml#mj^1|H}TeGgz* z@71Nn4e(GJa?LWz6EBa?pgvvLx&vr1W*nj84*gG5R{Iq zsCYC=R9}^;Q_LH`gkUg+HZW90h(bze1EW&Q0@?t?APtQX!t6Tvx4)fdAl@c$ z_`sXr{ALfneXQ{L&wu{oAOCnWxPGGUQ9(u1PP0OltHfEMYNXsfC3nk(f~6!wu}gyB zO08iDVBP@zL0qa97^!i zr#@BR)7dnH;i>cBP20(?*0YKSpF~7@ZuuKP8fpzcDjN~yBBF^wbT*=k-bLZl$@JCi zdK*;qZFs-n2lxj{MK7)IGj8_y;WLO0DsFd%WTUf_we}3rQ{lC;to9*TSK8W2x_) z|NhKBu+(g?E4`3G!=7WfAQ{sE!ToPJTk z`p9AXSjDi_5dT2C*z;{Tr_c*o$0|0*aq3!p^&nI2VcW@mGyedGfW_3XJoKi)^dt3q z{(cze<>xF;7%37HD2kiX_|9}O!5Z~9!RXB)l@tp7v2=RnE*O~~N1A^~X2pcIaKJ^a> z;kRKt37iAVokp$Xi2iP|1&X~8{zPWaP&NMh;@sJEuybf`Hl!@Cl;h4@nBNN@n)^sK+V?{7wbbKC^~fQ}LV z0m5(lE+IA=RsI2kl#5`!IW#o-#jWY6tZX<@q?R8wOB-q5`=~jkbF1b(lf5rdat?42 z@DB)_1Jl5%Qk@P5Vdfv;BCtcFQ66&+oa`Uq(ECaA51eea-6|et8$%A<7GwCw!wLGc zt3q$Z#t;7+OtM8!j>sZ~XTSqNlLfQq2~T(eKR;6^%q_MGb0XG&Y#50Q17MEUh2ex?pfM&V*i9J=haL1VWg;tQTesd&Xa;j`a=; zC+r!w#9h&p;w~#uN`N?IS7w_O2y8i5fD`=V4G;3VO4;iX(-#wPj$6#Tf8D7d1mMrr{eIspFtbqfSOp3#Silw8CZth!>AS{(;+IHvbdK$^L=R%&s#{9x1cGB2vyg^GurutUEk^v>wqk0kJTNN0Zu43u;hJ zsk<8K#+TtAVDwQSKtziE17_>Tsh&E2`jDMkfFnX{xk?lPp^B+!t7bq6hl-24loCZP z(aM_krs1h~Xw;*ON-^s93cuz30%RrP5TCQrM-@;Y0eUzl;Q%b*Bqks#R3t#rZlSCq zNJVv|Olz{IF!yxi^nyJZafs(|gSZ0h(c7E@<|b?d5r0imY6?tSYQzsiU_Xt^Z>Phz7=Aq9amhD zttp8E#Kiq8zcT$Q-y7cWhIhQ<9q)ekyPZAwp7*@Rwt?5a_O+gLKj%5mVNO7UtnQkF z=8t+sK~ah;IJw-YlybqWf+F|{Ok%;F9!?F?{~{om^jE}Rc|$UCL6%W2byWALslSop z>Mk@eLknrUVwj#Ju8_RH@MpqNkP@*G+A`)H(oBZ3Ysq)9)9? zNjt+kjy>=B{GV?HI^KV^J+PTMTOZ|{mgK|fN7(n)fZ1xr_t#2IA9SnPbzs3_L1#&} z)N8MDbrgEtd^g$Xr<#LOV`R6$R;nvhOTK+KeJq}Cd-S|_j$dW^h}JCV^GiNHn6bd} z@wn2cpW5jqw-=f_OYOspz3u|rp_CV@*j4h{0@c2@A<-U8ooY8Fbp z%w{*eQ7w%dj_GSo@T@v2)hS!zHSJhfbPB$&+Ld~%U7H`emR%NK%l+0;uj#P9)mA^g z8nB)23h72iIA?Qkx^Fc&x!u79)z+R9V9LLb-<55-x0kY3i)YYQ$_wothF6ADS@DyU zOS}gg_0sWj?yyI+R$=6cD^HLG%i;B=Z;#v7}W4zLwSO^QThruWFgj(@% zwXoYLZP$GHLA%whj?2QTw=lYyR@vEz_5JEN9uT{g-6S(O(Kzx;k9pEFpZi}fy!U<9 zEoCd7M0ZyU)ydKGpYW`wKI+Mj+uS*l$!pAEOJfxq_j|x4PkipPfBL}>N_Tw3p<-RX z>hpKaEvrsjCWKDjj)J~+5qK(uYK1e0bEF}J#5{E71&aQbX?6u4p!5|#EJ?3en^*gs zA@)lo?bB%YeHuWBuUPV;*kv(4NG=Rh@m7Un0X@#|=eLE0#^J^0k$UM!CBKuYZl)_6 zdrR7Jy51B#$M&XJGmfN!~v$zNU{C^mV`Ra`^b^UYP2T z@U;AU?H@SVNIN;sV4JPkW8rVP4SqZ)zz@$gD@dUy^Ke_@vTy|iCOsdH0#^#3NpH$v zBk@Rc4#aw#A;HFAn2E4hSOu&L_6AEMj2!b32D_zkj2 zxl{^34he`yz0gDuDKZox6Be3V{^BGI19lWa5s_O`5JX2=j6HxLY9VlU!^9E^8zW5I znVgYgY2ZphvM5peA|--bB2^K{Q4nONnm!peAtQ&iBOZ1gI^wLdFw7WZ%&IVim}fK7 zNV+(JVathNNkP%L>KKy8(#$|&2#I5Z9DqnPjf{9!Sy?2Cix8kHxJGY;2|+yCg*xQU#%SFcgj%MbXK=DUmpJ6Tyiq251Hh2hTbxz!Fl*4IOB#p%D5?0xIO@9 zg1IcfU&~>0LC}>^L5jmF&Z8oj32ltG5Cxg2Y-kJ>Cko@#*fcPKVIHcVqp!GN zK*V1)3LIKa97u#fCYTQhb!Q3)oX7}mN_|fzK@%EKt}Fg$dXEGmT}0Jp6_+R_3JOv0 zb;;>PqPrkCbOp-7K+Ht0QLj**hN1BYxCOjlKz|yulqv{~>aWoX;JCt{rGy?v4P)4d z>0bZQopeZ@kmH4yfSdt8j2#*bDjhYfBQ;fhyrB@%Aj6r=BO(RylWS^5(1ny`6uW9N zbfWsuX!TH8GcUny(9J)3|G*FO5A^aQ{sGQ`jJ@Ga?*;T7>~96V-W{FnAK)UeH$W)( z)O)j0@U6glwcPA_nin_ z7yshRX5wdKF&?I9x97at_F~Fe-+BAnVhBUJ0*p z8f*%K+;%^^RVz;fEAc7MzE;ri^}}wv)L!Ve_y<}QI~k_V0m14o`~xe4_F8+e-Wk^F zgKDk6o1F%GB&@CWZS>Ff!gs@G?tCkrXJG2z@V>V1&kNpi4F7;<&>lc@5d_cc)fQRR zYulxw$HB*I#befn#m1Ho+2bm9m~#%;RNtsKE9Gi@3y*(5uy_GUhdA*#o%4@WH#eCCy7PiV~3-x5RyjCu**2{%qH{I^9d6A^Stzq{_U*H_D zOb)-z)Hz@mL9HS5%k5st%Mnv=fOh8^ie364L;eB#*nJ99I{!eU=HR~RW&?-vaS`}5 zfK_Uexad%MI;T%|QA8S^Q@ss2mJNyH-#9J>rV?VDo z>(fX1dKzbxcIOug|A0me|A3GEaZO;rD*(B6*OwE8e5)_;4>b2)jtKvNXZ<9+=Qrrt z+aF)LRB_dxAB+$6M?}Ftu-fSgoCDr`iFXR@TA6O_-`i;rJ6qP<8(ajj&m?cBO?}$9 z0_Q-n=F6Xlg=}N$A_(saw*dcukm(fi{4Tz0P(C7f0b`tVUZw6dnz{wP?;_wIaHK|K z>I`Xf4y3w`<>&@*h~q`_JPs~j3re_HqlVs{YVh`>3( zMevj6A7Gn-nW;95FxbFsT|adV?7=MMUpJzxlP$&>8$U847k%yu==m8wW=&6wtJpC4 zkcT{k)yJY>OE6u+He*AIvvADyCMkx8EAUsG;m5LK34|SGhH?vjSep1>jaq!}b#iGgYFRs*V&m zVU$WFI)Hy{hwbXGyskbA?hRFgmvfzQx zlo)rRNtsz+cndU*B7z@mU^Qw74K*2=F;=WhFD8mxsG$QST3@rx*gx)uwc~Frm)v55 zvD47OA+oZ&;zw}`B1tt>UvY^5=ZZr=;?Put++49r+TyN}P81}dk7*!u{EcqruO6#Q zizq^+q^q4=D6`pc2ylyS?8V9s&#L3fEOb>JmM3Hp2yThveykW3o|kXL2R%XgC(}BLQ(Tq;+`=(JwL(uTC>dqKhinCfpB}3-b{sx zP_wte^862s5@z<^d~(a25^7o9f%r^0i_HGU>_c7KsB9gfhX+K5kCg>Y9;*y}M&m}8 z(8={rT|!rMHEe+tSN%bU(Y^I~y+ve(90;<^`njcn@DE5g=r9SCg-L8j9A{#&kZ*`uCr)>4gXd}IBV@0!&;fA`6}ey%yJcr;yW z`dDJQQOXXA>0W-lp0j7(Yx~p3_XTUBjZC8^c$hjUw`(@x*SZ#cJ`88Y;m88p2E0}u zUq*;kt?&IBr0Zk*|1GZu#gU*OBJ$}vo97$lO~HPHQn^#Ac!WOf|C&FZ z%sLRB47! z7dp)Y^-5+k@}a3(R zYFo+1j@Lj0(sRB6fp{L>ER4M!-!4o##f_3TM{3r~ZC{A!6>XZY+h;QMBQ;xghS-im z)E3Tmf_R5zy*@~)b-Sk)-gn4Vi=KY>ibGH5t-EWrQL#C3a=ybNybt0Nfr8ieZO(5L zbwoQsS{zD6N9fn9%kAn4mdg!02keiq6{6*oj9h1s9*lEiF9J9&06}Z{e6vz$kxp%p zo%RfGN!Sv=0m7AJf$SU!&-eKOBGBS)n-{OIK;dzVK;v4fAD2ShZqbCqd|Tc zPum^2Iql~qCn!2ApeN`I0@saTP~=(-3vIjlJ;x`yLU}Wt^Eqs~vy^X?i><1<W=2vd%LHT&35>Zrh5tgz4i}GExA+v$v+Slo$IYE;XU8L^m428f0e)g+$xQ&F(y8CBU1_miSSh??#gbuG(QGFU>nESuQnV3^03SkscF$R0Qg_ITQ$bZgIm8G7 z$btys%nZcMK4FHji%do+$O|DjbZcffiL*~!*-?;X^f$_4d`2U(YLLaxbW$sq^-pFM z8%a8{kfSV#0D=;cqSS(HSX0m{zQ#53Id{boL&2erMgpBHj2fCt5t~T4r1X686BNmXN!^IFC9o}TdnAF)~d2A+TB2asl*tM zG2C=oAki&67(ucdO+blw2yICtQKweiKstctZm<`144o+sSuVG*4GprquJU3DZ!-uF zfJw?=F&_c7;~9v!nafn=xh>}a9Jfqr^5RYHVuF*=yas}T^x%At)9JSzu@UU49S%tY zO!df~exO*$fk2FCqc8NN!3d~0V6cNocZ~>4YE46U zgPi?ECp17PqUc&whxA~BHc*5HRRsd^9KnM0_kaKQy+`02!jF99Bm4sn9JuVV%U=4@ zms+l}BFKu6^$JC(5w@;K9~C+ij8Ae=5nN=?V6aSnI@nsSs`#kU_ZuvTw`f54)tU_XG>o~~2#mOEYz(rsk#6@6ZIi79K_qq9OrR9<9 zEvE`thS!`NPz(P67r|V&DX0rPGVTe^mSV6|D~AF#|U7plpM7x}pYCj0}L zk{2a5JK0_@KV6RRE!L**!k2RnbKAfY|3I;9)jsXuDir>KQoHAQy;JqL2sj5U_BjXE zDm7jU&X!`iCZwBDH& zVY$^5ETjd?Y9V%p#2YKI_ud(pE0ykA-ODE0y~@i`YVx0y;^}-mm$x9zR0oY*TU&Gc z@DJoF-b1OiE3Ia!;V8eUi-2HS4bFijuX3^$9LPCUr&IUJmK z!I_ly1buHCM~y{XoW4D=-tgwifP*W}ndBUh82$n4Zo#WGYO&UAuhg5iWY`+v_yQr$ zvE=&__`$dcs)do@B?W=MNGMiI!puM5aXhCAx$zI=OB?(H9t~xxgdb+5)GJ2jzFDhu^mi+`Y;_nJV*>mfFQ zgg>p8?bUOACy2_$Kai{y_y-2%;zFl7-@Zi-`~%(cI#(fu;6#z>2SdG%^b_eH2s_P{ z%?84p3$ynBgRA1ATny0CGiGjM1c&TWM1p@;dY;+Oim-Mt%RK$*PdBsM7HD#bRUwmu zy#ZL2<`L5b>k)*}B@sf{jZ)YH>=4K%CKeI1WM)3Gro#H-3Sd5QeFJf`o0sXH{NyJy zx~yDev4jEQVM?(uXV#svm`^c#|)NCnka{*EuGb*?(WJvvrz*d&(ck}BJx6m zfCBkoLn3|%O^P_tAtiz`KtV;6B_j|)UoKUf-Nh>Q(2pv^Q5W^{S0YR`QVVtQ7r@6k z%394`vVtJpl}W>N3G<0a5m5>>fThR_O_s1=VVZP6m_x2iqcEAwM+`6qN!THb6L;Z9 z5z>K-Y(**3ai}?hjX-l(L@ss_vT;R+g@d@i3W~B&fD8xo@ZFs;uL>vwxky08fl}0q zpooY(1EiB19>_-u9C@WkkIoPjqV9p_E;)#kza|FA${Xz%y_bZgD=V4|O#*a9R)nz{ z(u)d4jZ_VUFjo3Y-hs!0=EnFFZ);PcTi@)fR z6C3hjd!GW)om5s9JjeoH(F90bstkx%S=g{S*8Tx50?q+G0nd{Dxo03!I0wM3^dYr# ztCU;)ogs+aP80O@n5#blxZxZ)S!st>KUo4&W(c!5iIK34%KAWb9_?j?68$6=6jmHk zG^LKA5p{BdUH7AB^Z^hZQo4Q{o!?#hNAHc^E?rzAog)_zp#-R=J!LSx&{VV*Ev-{g z+SD2x1?fwAd(bgJVrWEmBLYn+(sh2I)4Cc&hE&xU`% zEGE%i*#T;#Atl@k=*TWnS!9JtMTiHtc!-LSm?ltb5DLdo)oRou?FY2-$q?#7id)9! zOl~Bm;tJ9N1M6BOm9BB~kk4CJ^XE{lvnia85f zXi<^K6%uoGH%d_iK^b%)^l&WyqiRtRS3HEqo~7^A=9X6{AcV9HSWW;ii*O4V%l2!5 znU}!bC=OX{;EincB68LgfwOfe^kjwj%XOecc`<`lI~=jcQ3a)IBWNAum{|3O={z^z)ak9{k<) zLzgd{D!lca#1#h8 zF6C2wuRJ(gzEr4}pMG%dg{jJAEBju%aK<0aC9XJ-c*~(vg^Swxqxq$x&%S$~+Kc4* z_Qk8KmsBcmSULB#i)X)Y-;~?eE+pQ#mUv-y^%)E2#>oZVWe~R4i+8ScFF&~QrbBCQ zSWXD9P9|Qpo_NQ;gKt0kK)aT&m(t{rtB!q~v0UDH*6JNzkUjJAl~XTUKIMI9C*Hp= z@w$bj*Um5gT(y1IrDUPg;T&icvUYFZe{tc_jr!Z?&V2JZr@nPD@wTPJOV<;>mreX; zYW-m$Z#_5h_5+DWwo;em=1K)GA>@mlVYxTHXm0%hnc5o< zB`-U;_Rf_v-h5E2CEjr;@rt$7i_bmSEw8qV%PYOQ(5hzJwcKwm&HvWQ;@jcOB`#Y^ zykRl%hWXQlt@f7HC{K<<4tW4<5_t5|!Dm-;KGpZSxx|~65`VaoxZ0V65)OH|``Y>g%9Yp5@1F)V*Aj2m#B+&PCJQg#znE+kv)o06&35&0g@d74 zy6nKRR(sV#;`M9OCi^`_tQ>mn@|`TW^$m^<_B z^NBa_PrQCUarx3ImsVEqzq&6~Elt!^xAXHa$SL= zrS&%)T2?7l%XD^=%`LC_c>m&87L&h`tG@Bzsh1x(<(>NET;jLWb1z&xbLd^ke4SIm z)`d6`vE?%yg^l=@!CJQ_)Qg9Of3N)mCmU>RIdCfz_uuI6%-B}q%vStC{(%|7jN4hn zExO&6dY6cTxVh#T&v=GIhAq+=KRnXx97cs1By1Zt29v{_V!CIC1elnB6kyVch%9Ck z*~6e>DVcg06=oS^&0-*)ygc-w4^e8~Z9qA;RuLgfYWV z3G+23JC=`Gl96D#G=rPj*#K}x{^HPIbF07P13B>JWuApdArmh&fIWXn7_z@)MS!yV%gV)! zN+C<0+5*oYtX!nj9nGi$`anwX;EF z0jfA;n23bA6_!<)aA6Lya~Ml3D0UZWdY48a%rL$D4I3#UaHK;ZVI``9c+d=64h7bu z6cIG#jf@hN67*4sX3`DZ6_DDO0N&wJ^9K!&ID<0C6d9Dd=PbT*>GfARd%sS3u}n zbwOX;q+@BXM(&D7>1xN7ed(o_+B{%-GH^^}Qfv}%OJ0Dcc}j{EGzzi@WyS63o9QLw zrfMRX!ENYO%@h#AG3Y{xQ8hCN%|lnj7^hKVM28Si3z~#LK7b?vIcN)V4ke5lI_PT% zcQrK0#{j2E0*rLyT^EwBnJ@-fDdr1)`zJl=NzZ@&^En5+O5hyAKlzhC@p6Gz3|{k^ z*Lbaf-@x2W0wydCgt%Uc4z@!bp*&M%bhtPW(T!&S^Hw02yAp9lM*%_zIYf;N1h*hS zgFM3w91M^r2?VmgAS4;Nf+ix;F$^>0@9Hmckwa)gH~@WYPaU;;u3B>QcUJChBlbRW0J)N_VgLetp_r(2>|6od2`!@<+Eymkb-{uN<&0E;crsYyDnk z@{H=>73bgc`pMwa?fO?bnVSZM4m6Q7Qlho%1tDhcMJ~OF4^n#r`*HVT2 zAp8TBTY8KaHy_#HA_)J0gANv3ySu6KeMW~r z+8A6tKK#kUt5@x={Mpe(;q$%mRprLksNJmCS-p{|c=voqc=aUnren3Mb}FCPE`Oz+ z7d|%GymGwp*xeI%SzM2I5S*MK{M_owi!QkHb))7rz3OLoGS_aU-n+Z>r+3c&(UIMk zq?4Qj_QP`yEH!qv^K19r9sT8~{>hEjCpXKVm=r%ZsC{A7_~^#gJFE4hBX3YRT+mk) zM*IVL&}76v-~|V7F4$4u&y*j&zV_;S z-2Ht!)%R|dKfSqp&BoGaho#Sr$}hUx&I7XtJ&La~i`s*=QvKqU{G*45KQTP~7yX@2 zk4v8#7Ovk;Uprj>@b1yeOVzDzfq!7BQ{^Av9OyO*@7f%{XM5wiVeWI|!d2VT@QICv zaNfpw9$0(3W8kwFdpiW4UP!(Ayu+W|%6)v4{PgZLT-RuPso#I`dB-1?Nv+m~+3t3+ z)lZfi_sQiSd-%welm5pyhgWW`U3D~j%`p4vQSL*#=e;&p)`zT_e-^+C~T_-MySF72z|Ri^7Lb91=b;9tc~VA^$+CG!Fkj zvzdNb@zA@Dci+F8{m6;(4TIX}+r`fe$HEi0w(g%wt=6kqyF9#}P%QoO`r2=8Z+&L7 zea)o#v90{aw+q+yYF`+)Uw{7L=M+->1BcUzxA=LxvP#W zU9+?Pm*d5&Hg-SM=r+fLj5i%RyQ?)XQ#4!k-plK~D~@0IiGJym!^-tL$!kZ8?>jMm zLnnWvuZ0`FB(mD+*_Pp>ia(kD0d^XgS+g^v?%yuL-Uhca8fVty$&ujgt4XgRuvgluWXjox>7fX#j}~0~FX2uI3|V zlDMnMi_yh=5@A_+g@Kvzt9wTnnX0_5`0Ky^>t-~wl?jeB92!r8>5KuUAjTULD9qQe zY?(cZV-7Jw7@|xd=@QN9IKdLbh6SZA;xgh{x`-=Gw?N>80U%KX>{+r$(PR}M9++w! zR+j0Qy#$a_9IH(2RLuk(^hp5Eu3>MZ7V>0|Nl}aco4q^#w(O|x1W&nsaT$Y@QqJ$a z%s1S3=i%LZ-#ldI%S@$|gOrjorA(!ylrl97iNOYgED#t22Fes*W^fsUB`_Eap0F|H zvAw)jxq7W$-Ce8Qzx3*=`l(lU{}KH;_xtkjEWi>f)2_1FD^}b%adzz3G40r~Z=8sf zMRtfN0t!gM0T3jFAdF!M*pPL!zR*`3M6^qqLnKU`$OvW>LNQtpaUfpuFf3k)pm{47 zEJ?`sNHwCy&|zphiVQ#eNSlll95O$;eW`F#c&IwkN=V6}%+PS6YDPiYu6;#eLr%=i$Ms`ZAfK*Vm${L{fBE_haK(tdaQc0`q6i#6Q0GSUHWqIji>0QQ`&xq)d z2A4&RI>8LUr_xCxUjvYa9?6N%$fO`J%_*Z1+n9 zfq#bffwK7OL^!fK(mP?ky44CggC3$&We8YbWLaU{=@ObxtLYDVm(Ho(f!?k|2J}zO z?QNERaJ-F3f#4BB#t7+Q`0F8jU7Exw#XG6)(TbRqCaVc{t7#@&vKq2ZZcyk^hL64n z$ed)F0hQhk0UJf<8(mKzJGt-?$r7Glti4AdN1{?6Caf@=av8#S4u^c8(&Q;sdXM$qOVPQt3=d7Esn-zyiwHkvv7l75b3TL{NNc15H_D zK!spNl?vcr8B-83YFjI)AN3HQR8cv^f<`nR1Hu815k7EKsUo8WkX3IUBhyrZfLbDI zP)1X4(Iq0;5SOXk`I;kxJrbL*3lSrv2Q)0{49F^ra#T2H=+RwSN?*hs*q*J&487T+UXi+%VbANk0y{K~KJ-7x_)t9WnC3*eb&o?%-6!GG7gin|j0 ziG$T2g?+#sY`u2FeP{c6%l)az`N~Xpx-zU;pU*8<`mgUVJ$vZ*>lc^ayuR^E8%N*T z8Cambaed>ax&HD@#n<0sQ!|d@^@Ys6bKQqmmY!Q)dgsdWGfPWvTU>m4W8)1j>^^dC z^`Oh^U1!kgcl*_u>eAHo`9p`_w7U70LpMFQu<`Dd&3CLGer9p)4Qne`d_Lb8IIF;+ zYK~rCnW-G>bRQiq{>$XOt>$)+4_e(z z-QnZwo9|pc^p3^#ch0ZBYhmL}8#ldv_2|jvLo4;}RK4wRyxdZ^+UT8G+kC^?G48qH z+Al1Qk}My3boKBB+DD@xh%D!OgTwQSm)8$Jdi-WtW8j(j)n^yiv4pXs?auP_OwB^K z+QGTY5T96RJ-yO*(>9SiiLln2nOSbPAMDM)ZuRhcha2x1tpC#d^81EMZ&^F^hK1#m z!}+z@YEDI%vGcsqys0;*ExhHRy??c{Rv`-G# zo?P2}6&)J(pTn6EjRqWy;T!`v^-FLRK&r#B9B zi^HR>`jX2690}O3wycrQwB{Z-bnItWH@UYiu5)kMIP|k?>sRLochvx>Kv%zJZS~K$ z|F-uZtu^mhTyeR=TQ`opv%mVT!P+y+N1k0hdin6NI|hY0)bMwn!$i|D8jZE?@ak~o zsf}arS~~RH!umVr*94wEbo}9kwT-!jfwj5Y4IJ<=I#c@Q{@}vqQEmFBLz^0xd&laL zXO|D%KU_OK)yVkl6|Yaf_jdrxoiXO`Dg z%RNU=oE$7tLvx5nz1?1#o;}v>zj1Z_&4-S>yTACph1K`1Z#>%{7@JR-{_5@|m>@;T z!`4h?zTLTNxNzn0=3CcRer|R7os0cs){Lqy2U8re+RY#+ZaT8q;N`$6n^+JrQw(XsgZno5v@i5 z542FP#GAe|l~bI6Ncu^cBr7%@gctx43aeXH z1V@blN>P+InjQtl9~}A1gANl_C+ZDNh6JF-NXQqKFj|eGk*H!o)F(}&a^xi=>Jyf9 zRJlX}^C$q5UL;-sOZYEUIFVj?+};83k0ua6c~m9EI!L{FRFEiye3>SrP!^UW-q7SD z9$zG6%*)y`-H5Z7jw?T|U8tO2iHB+|Viw2d!Xy1t?N zX)oanG$YOc)KXrRooyrlw!Bgx=xO@A9+$H@<$Zzv<*2Ba~!Ha>_-AG+Ce{3poM- zIf550w?`}&QVzGkqp+dG$2n@GT=>kwAGbiCHwR(+>eZ`!VKF8qLnGPAI$=5D#De$H zM~gpIpLpU4Rsy5up@$w4DHY;a!ZS=1M5+Wd^A;WP-ewBm3&T$;>?yLEG4#{`P*=hr z!$0y(Yo?+!w?GE6iX}ZXin>A#C~3-$rbhHu6C;i$YN_^8vLT}Np~+O3^dKt;mJ(zw zI|gZ-`_ZumV-3kZ~ewnTF?x zQ-Vk?5lu2mAQGnZMMi1`Q@s9MMn?9k5bOnn0savT5edE0yA)QyqgN8*0W;}u>3+h> z4g^X%lBi@LkW|7D019G^I6jc67;ljcWjH0WKx!59;a?KD1R?qI#fZnDV&b2ukBPuQ zHk_FS%$}J*g||Znd*r`Vh~U8x(^*hEjrUx)^WpsmPw&}#a@X$RfrAT^j{Tc! z59TNL?|0+X`(>o~^G}Yr}~Hr+1E> z-Fxu-t8e7aUBBz@8~5IMVBDt%mP#|N;@tISy~mQUI5~BC@7S4r z4o^%TIWT4E+M3+@zQA(6F+F?Jz5}<6PhGlk--YXUU%GA&cV_S8*|8Z1=M8=N-t5-8 z1CEKHKUo#&)#*J4FTQ5iJ+Iw;amSwfc8y7XeD4HOKKb_L0@pk^)tRoy@zD6evpe>3 zckkG9&(8f=!Wi~2iB$|^8}qm9{HfD>UUT8b8!qm=@zV9XRN9%{`)}Pdwmc1U(#PeF zinI3TRwsMw)BThC_MRTwe__|IyKcPk(vIEt-MIIby_3go9Ag}S;~WOZAS@o3Tsk;) z>#m(=(A;s|J=eeX_8q(KxMBC^_~g-vsp4?MnJSgeNb62dbEozlI5ReR<+^>Be|q*_)xV0v2I9Z$nFCTCnwaqll=v^E-vl8VdKEwGY2M4j_p@zI61Rt z!j~gQr>Yy{Qx55Hu|(_xxwGK-_;n`^?6|mZ=Y_pD-hcg0wUPcXoUP7RYpgVyW8R$# z>UN@e^H}}TYp%QRx*ZpG?zy;Y?=9m8PfkoO&iE3f8v6j_KxewDX*S0Xp4+{TyZo=N zzw*;Jp5H&AiI*lT3kRkh8lFQu_={5&CW3Pl2XEg$e*aJJc<{QN=YQ(emv`>U*c{GG zE*2ti^vzVYX4}l>!71*}-8*mJdBeRoyyo(*>pyzq4ZpJU#)X*~_5r7E&Qv;#1OK@8 zf$b_BJV9-S3jyLU(imU#_#$QU`##c6Np%VR3FsqM|96-pe(l$O z&1^!wp<-D;(LDg|f}*t@s0!Zl&Hkn#2p~zsuq4ohsA04wI+bt~A!PF(jd;p~nTz^F z(=c^6AEN_g#ur2Rfe9a< zrp{o}ixetqFv@uav(y>Tp|XY`WZIFk(DZ0x3Y#PX(PL?4DBy}Z8a zz8vXGz$@x^0^z|cF~TUI27!KvXHB41K?uqMnz!&(Z1iXN(BMmpJ!G-1$SEUyyzzmA zXnG6ZBYc1|3d$nJE1D0Wz(|F81m%vDB+`Zf8l(CF$tWrl#fG{h00Bk=s~D8kGlD6gK*-8Yd?+KE%GVqsJ*G|h1h1k|+c3%30R(V@EMKET1`;AG zt=hn|b{7D$<40A75H|8wSf=R6A`smVO_Za*(K7}32~hczTA_$F$UqD|ExgHH7HCTD z6+fkrdvf#^p8!i5R437S_+?+xBH=1EoJ><{nk2O_U||U8Y_bNJ!Iejh3CKFtB_0Kj zN+cI!j)}kqo{V}uTtjOVWtUb$r1+AclO?AZ+G*?q42*zTApVQ&19^O9l8{7ALV+Jf z|9shs>OVGOVIBAvFJT`@C1i3Tr~?t^D#vy&4WSRDakZ?b(FY7bzFr|lPc~-tG*ZPF z*SPu^K^k8m0zqesID(e90*R4?SO5Y6;)1Loc}NDr5Jc2lHd-t{^2j4P74dFDA@HG@ zAW$;^BeLWuJAF)_H%JW)T@jxd7aolW_(WwWTb^6<61;pdG8F(~GE%}Gu4Duh4W9~I z#_Q)L!&qgeW(UaPosVJbef^(hBWrm%COdKuC;|`@`#_MTQdo17Vxs9ShUH=eNg{@M zL@o$IkRzHnM<)b@RSrm6Y-gAg7uqXABeGE~5gNuLnUjW&lp_EmL$sHC)eQDfLm3Y$ zAuSuZhZLIXRw~Is1PFqNdj(Ct!lV}QrRNC9QNAK2B!W~a;!5=N(@*;o*>aLK;2Yog zhHV2Z1GW(O%D{F4i%K)N%2Z?xk%mS@j)9bgNRdnO;%8Az$mqi$!Y6N`c^f%K7L|EBBVkTK|O%&CIUm=00)J*-v)3DdB{>pE<0HpXu6i} zr>{nviiv90Ikohlpyv2r$*R8nq35N>?L3gU>vXsAs-;{3uD1E&&ZJk zBS+)EJc0Vs_5mlK7ay3{hqJZ8yRWjOpHCn)OvlOb)dO?&gZ+ksb=->J#`n8Tl+nht&9NlK^Z`JPzf{J?v+EX*F$+|=J8V6^pE(EYi-bn>*7uY$X zFt-@MP}B~GEMH`1Xq<#H5^WM2DrsJ zcd*-->=l*7b!)AT!{Ho`SMTkux17wszdzjVRt3w!?t(i7re@|E&de{)d8|`+C|D}c z8HU{M_Tt{|@}Axr=a5GCCfHl<^K)N5WD3 zoMZ4O8x`m67f0$f`${xjU2qD0tyLUH@3E-8mUHs!GcHu@HH(|5{43F&v&znC`A!bp z-x#*ZN{j3o>Y7ApJr67ERo621Ye+9UjPOTzp!j*PAW5+fGy5 z<=~I~+LQ{bxd5TnbQ>V2Hul<5;e!&Iz8a`j=cZ={mD!;)qsXpC)y8}Gf%*zyU#GXX z-5qoOe{V>j7yC+CH)d*P1h~g_vnf%(f2ZR?UiQ zFuUzeb)9qnDYt*F#^tUWQ*J<)Ciy0X>1HXX>HFc?ASSQjn+_ z)Dr3nU4w)r*Gd(Yyv|KC+-@ggC~8 zv&zF>=4An3IyOOL8xN47i8Nmm9pb$egL9=*7Bqw76*OTq5f8vLy;7V~3DH_M-IS`4OcmZ^PvZz3XQc~53f@_(2Ct_!LOP(Mwr)_?non zm0$bX*S`AI#m)hK0x<~i3#-AuDh?$8uS^n_;#7dheR;~~e@|GHYEaH5nOsUg5`KFn zl&=zCB{s4&jW$XL)4McH77qGAUKtd+w;@1!kX^=_K}Q-G5haMx^Z<@mC5Vr>Gcdi? zIlU4PsZXZo5N;87L^|2dEI@Qyj94BLiDm)PBmG(0@PGo!`g1wDjagmJpyTVP;$cQ? zT4j@^k!dC-VGt`pgdS!PRIZE^d4=b&CwD9N63_%F;EiPflUOzNm~jLw_7%abq%1}R zGzsN`2nNJR1xFbrd~mc!!YqbE#l#ZIq_KSY@X37msId>g@ra;!G_#gBwMnQ@@bRyW zjK@+C38)9YAzzBPLU4>$qXw@^Q-=~Fh!jp_lnPe^8p~TUB$bSao*$I`P<()s zYb+GI4m^4V((8y~-16~;en`mW6&{aTePzVWV9C#&^?vzGIPePFgdXGL#y zT{!=+c4t~vIh`3xwnn?rZuUpU3RlLv4!$rEWPgI~3``T2YmIJ25>E2M!cdSxu&@v0 zg#46fP`7d15^}OuafW|kAHW_av5MhJ)6#6&8kQ?c@9g5L1y*4nP?-mNE_3Yf?G?`5 z^p?r&1GR?#Z>=mFme1@1YLAJ)1qa-|-U_$7ySl5h;?e{r0@v1CoK4S8&e{sW{L*MK z4%B8{ZZPEbcIMd!93MBvntF2+_eyLKhU!3FYXRt%CKKVGifaL0owou)oNj*V3BnxMz1s0Zn6(d zFD~zIxh$Y(EyR9eI5_g4E8}{r_->=o-P`Vs^#;4=hP!$LmION!s&0U6^|XSU3v_Ts z)wV>gu&fV?J0fetvBtvQ)^J~YKKvABk#0xhvj5Do&b9rs-_xKIGsT4nj`u9CMHt_pYzojl$#{7r^G6J;3?M8qXJ#K&XgTmxF4yp0fehLih@mIh4 zRdWR0FDhbGFOv)1fZk;lNd*Eypfk`g>1F~n0eTTtC%PX5+7z|NR070HMLVK4_=3O; zMOlglMK`l^!0ZEGBxGuv$S0n7!dyl-qxFRixkMep27ZL;EwrHcn6xDH2#u-}6_M^F zfXU!^OJ4#?heH6_Jf5jsDik1lD_~ZoQSh^tl%4q0g8<4vrV6geN=l_P|AuVzKv@H? zs8zH?TAVsWA-OA;SE@w-9rS@ZR4vdD$4MeFDJ&u4UcnJawI@E5#mG)_wJi|l6*;K{ zqNpflYEoKgaz_&z>L1$*E};scHNlt4TV)jQQCcxFQUui)wD>d`$_ed7Uy5RQp(Mw)E#XBNeb4@bGA0+M(u zhOfK+rz)$?dkL?46zz?Km)VSfM%V{QkKzpUvWtpI-X*In|57|Bn3_1<13xQI+ z=vwJx-XDRtVuMk0YiNr{Ev~KZ$|Dd0H?zxYC^rO!||GY~Kzw@2%{Mn!V z*`NRUpEDGE@rz&l@P|Ka=YYylE=`Pqv>q$Y+i z+&R@kfqSI|Q*0|!DHfI7jm3_M7 zfbF=Wld>{a5M>)#g&Ww(6$8rX-WC#liZZyF8p< z@69du1}i8uS~iUjVNO?v2OEp-OgzwDIoMh4OwV^`7A%NnoAdkq;oj}<>GfP|c(C6; z;GXuDtpanE#>nBM?WBZ73vGAMbN*BvZ*=yxTKn7WIQPEUAb}KucD6VDZ(bSl9pxv+ zTMp*lrn~CeW1Ws=Am>zeH`djg4oF;-g=MuIi(T^#|F+Lf^m-hYxPA8BcZertBvoLy>Fm#Z!1EjGq;2U|n7muhX5 zYt0_!8ner_nZ=n|_KU9nd^z>Tbt+5U+2y&}m40>ARgzrJbv)RZKTsbYsLf4OdlU68 z=MFyglkdbeN~^k}b+|@-rP)}Wb+BPk8^wi^Gqrin^?#h52JW+i245~*ySmt#b@6@i z#XLjDzBwio76!K~E;;)Vt4^@5&8}A~YyONbt|PRl_rXE2!Gq~%fpZfj=b}BE@awHP zE9RWBkeHF_#>J6KT-L2~vrAm9G0%RL75AP_cXyk;W$u7GGh1_<1}d6qzU=nG^TbrhJ%hqc3VmGxF-iPQP@2gg1fux(>*kqyBP8RL4wou$3%bZv?2POo#j z22C!#F@663pZxYoXY%0!7W&B@)wD~uEQVt}rz6dvUTO~4dJeG>2% zrZ5FHtRfXar&P?81!c@DILsu04^tR@nBtSWgwP<1L^%qlQqVs!U@}#87=R35dId-2 zgaJv=lpI=A*6;~IVbMe%j)an9K)#UGM%aVqZPa@NWrU6@62k}44AD$`A&3Z?kR=3g z5J5aO;1L_*sZZ1i8Vg@4H~<}CDwY}!GpQD;7xjZaLxZ9(<%0rS1}q!1b3g$2m%&?V z426fLBnyzH3@3aAl!el%I>i)2r-dwuECk?Fa%g&*2?!t(^$%Cdi#?EHss{lz%ooPL znp8`&5D6bCNxTi&kdjvjDwlAnwncGOMnx!9SqfVo6<;_?9baVZ1~3I)q^(hU#qgm8 zpvg#fbVd1wu@odF#k1Nj8ui*gzgkTU97ThpI01DM&Xq!?0gPpxD3{b^xb-MIO)N5X zs~!RvFtS7<#V;!azEt#5TS535G=?AoB)bL5odXH5Iub8L+$)xlWkP{}ZuS912Ic&c zu*V2|j|?wHmM)~Rv_3x#q`9+3(8tosUPVx6`0F_WdJf0{@u)``<~mr0xvnK3hA1Og zh~wEcS6C62xwRGCP2|#vBxb05r%TnMw|m z=(e=?3MqcU(5Q^&DGMmGn8K!{;WO;1AAzz?BtgVuCN&~X04IuxbEQagr~!=y)J8cT zjq40a16C^&7lyVl1O=Cid@%sfPqm;!rb!jEA!JZWfUF;_IwRRg30*~4cM@sfZ=b2Dkce4w32bKxGcgf}gob&kLO~$);1xi@BLr_###B)v#i#`JscWTL zB$t;WOUp0iuo@WA+xp~T#LcE9#Rvt+B&T z|1@57emF*fffc!tiPgO0k&q{mUY=Q?#Cqxd1H+kBF8@0}yLZbz@WkF%?XEi5+=hA| z&HLlnpRYX^-C3q}=9XM2KRY?7P7Rm(r>zGW2P&0SYy8*;mjI)z83YUBBEdx2m0o9W4I2Z?foSqvD83&jMto5dAOcNdd+OrREmDy!Z^|q@= zS}ZNq73P#?dttJ_bf8xl2dv`TGmC|rT4+tq7t72FJIP|PvD|j?&T`hUK1`VI46AL& zEi72VS7#SBN~5w=n_l4D`8Zoyi1ol01&(2dvlqfHj&KfHlJ3kB$2h<_hLQ2XhZ0N# zEH)gV@-3h|fBTk03hzPm6StpwuyVlVn5(to#Ebs)6w}$f`b2Z8J>TCrdF<@Hjp63FTB@$pnj5W|_2%?i zdvdvXV6iqiY)oIXw%N1M8}6xh$2-377*6-*83zt@>~Sf~9sh{-fl@J}nV|k@!0EQJdH4F!)tR<1wJnmKM z)?+kD$x~NipedcAA&9FmrlRN-h(s5K4-F9vBMuWynWCon%9x5pgcd=aprz0lh2?@P z6(S)bI9E#mH3?N3g^I31N1`b)0$8xHHR)0DVr#SJcKv+#F@P>|RNd@9FmCsjvkhDq)yj7xPfh&5Ng7blL z;g&Bf3vA0pozT80lX=AlQNRSEyhSmCCIFw#rhfPyqk9Jpf=CD>8igk>phTABAl+5v z0DNLnK)JM?woo}5MT;nrN>f+`fu{IHpB@ba6jX~6A+AmFsVsakvIfG+Rg~7pj@QoG z!hovaCy>fVO7-GOBvNI$Xv-S?wbwo|__2MU)PP@RfcOPWAAkTS)k`QveHqyP%0y%H zfI+A2^bIYpfi$AFP6tbW)1xxVvh+@0%81ZgKw|VC9Z7c*2&q!ykpKjRE=N`n9l)bO z8o?z%J_HhJ{Z9I2K^@ti#RY*Qtt>z~t$v$K`B+M)_du}H7cdh6IYP4_BE$J8h#VmnMgx!H z!x#!E0~Fw(EMAh5RSXM@K`;doRz(rZ>O?^lcDt}r9PN^UtQCN^)5ICh8H0u`Fc`^0 z1D_~R`N+ynSZzpN4p^AREJ#3yAps(J3W+nlwR2vFiBKXIjC$fxrm`bLFn~j?%o1X^ z`G-FAA;y6(fBDNc4E)KT{0ZX#|95`pcN|+}^MK8VDpUPqOhTjzQPL>Z^}1ppF{LlE zLj?cfS-Eh5Ju!(4pM2mIv_P1>_O!LASImI;vZXLt zLdkPkU1`T~f`6${#)eWynCmmThvB2EWM~^T`izce^l36Z2k3Y~^A;vwmq0-^0@Vnh z{p3&nB*FDE#oaZum$nborU%X0g?;{JZFb*x{i}XwZT9mU({H}vRoN%dbX#0?eRj5Q zGxg~scfIwgcR%;uUwF&g-*)x>hkpJo&wlz}e`c+_UZ0-pS(Exmp>3~nm&>}lS{=;H z^lmwO*B}1rUp@Z1pSkz)BM)AF?EZTn{>In;@JrAC_K};;TBc3aia(2IDhp1|v!d~j z=UjchR~t5~LtlZ<%=EeZ$6B9RXjB$k)x~ygsqRDRdhr*wg=%&J)M^g0m{*Yc%&|NsETY|c!Y?p8NXrgdvT3=V1h0DnU z+3irR`D?yg^?`a7La~Om`GM0q#TO;rAvfD*V=4ar=0eTokM(J5c8Aq5#T3^)#7)&& zoQ)qv$7m0kO}6$MbXwDGH{KN)btVVhsiA!lE@#X?`;Hgj3ZqB6i{TN^0|!C)$xqcxvK)PhALvPiICR9EY@wchN2Yt`mC%lX;ap@a50m2banGr_4t3L2?%1nKk zn{~Wpbul|4w0Nt&;B0?;0Ic+VO|!Oi{L1}LuJjK1)C4L2;AcmO-vj^uox=P*03uCoD1A@H}vmJf4>l+Q1CKexS*xgZWH|CaF11BlAxvmc2 z9L?I?nOpC^_0CJ}{)z$E7%Z`Y%nlX{v)HJ8Yu$MVfcP|M<{;Ixf9#e!FW&#y()tM& zv*N^!;=7BU?<^Y40oQB|TW+85r9-p0?}IzFd-plg+c^ex+h#hu>%K5rP(>@_>s+ha z<~o%jH`!d^e$@L1=w{L1VgV>0DQ{vJ2S8pWCgFcrzf=?jUYRxEdsAWC)c@?W&$9gc z;w*naP&24l<_-ahM|3U9jA??Bz&E)_MFHSjvt+LE3O+T7`b7Vs7g_$(>!?f&0yZW3 ztbi5bvBw^xPHtdLcrCRd5M|6U7^;tjiQ!7G6oKu-0fm{g@X?2Wpj1G0QRtGCfxWaHio#YiiK(~>#YEc7JCQPD$4e?qQW6*Gz z`owU!4a4eRpv=xAI;vEu!wiKD&FE}2D;gKyBR(Mrh@l5kz{FGb;wzL_(t3xfNInFW52Da2m+ImxsS3xuf~SLNT=k#wml>*2&8Yvw3I1wp~jWky38PAHD)@T2*g}`!^eZb#I+pPq& z$5Jr90%2InQUNRIYwG1co!^mp;P2Q6lr(k#f$s%%s6N%IN;b0eB8{bSK^iMvR4>(+ zvL4ZPhD=06`i5Qs^qGKBV7!!)%5Xr6Z?G6aWCgi5k{nxK6GYBuH7abt>Wa|#!huLF z(!*Q;h%X2cAiAY|aS~?2L&j!$ZzL5uQlVf50p+4Q^AUziA_9?4=!-WxFdP9wz*?AF zu9{r@(JuhZK4zR^ReyhRo1qEF$~|E60+Qf4%*$E~Oi5S+giTE02b$?pa=zq@17f^_ zAOHk_c&VV7>;OzSh^sm^rt-Cgs#f+CL|K5a_|%eD#F_zUv}#Q)Zjc(7#%x3%1WB}D zss(Zy(Ocsb7~p)O1_UG;;G5t4<_j;p@Uf45>^<*!j}O%q5GRu38N*lwm?252!5)6_ zfW7b|kZvrMf};jf1Cj(Ef>hW>A6iLD3@FN6DVE#G4uZ$zA`23X;Tn+AfpYAG2SU4y z7iJJ(8DJj}C=-egT$Aftb_NAWRf~tfPxWE|t91G02Dzigbu~JD=c7t?Lk0qUOizbN_$sAGk@nh{qZ}clh7o@n<*3 zI51WGbzXdxkoqkCC>LfNXtaDU&t(Og8k?AFF%cYW6^?Ph|LNVzaL#8D^?`rY9ZJAH z;J<9n#|ZvAwkjX3{ku#A)Aja@wS22E5oEW6eecDJZ)8K*ZXaNa$RFi}m0)Bs$Xllw zpw^o0w~H2Gb|_DM>=s+!eJ0@8Mu*&wmh-U>*l%#qsus6(r#cJ|h{a&bdNbN3((s|jtSu#R#SRmDAvj-5*b%{c zGisp1e34f0?>YNGcqmL0HCBS5)|4b@YcCx;eCqCdA9?8UpSk_62W~obo=Jg~#=ex| z(1wvUDRv~{FxmHsP>F>O(tTyXQLPkqWE0A_Y8O4<>9j6OgkqUTV_0`xB07d?cIM|Gjw z&~Tz6(!?aB7NQX43WY19^QmY=kB;uvVIp|r8{f!8fF@0e(SZ6S7eK|LM@4s%7n+h& zO6k3Hr+`Tf2uE=ehynvgjA_ntiCTy&VIZDQx54cwqF6dnQz1wwxp;4-g-Me!SE3+h zyH*BAkpuXF0~rEcG{|DaD>z@IDndb|u*y*uG2x%q9VI+8v4L9%eDSEE04T=MrK9f& z0~MmKkb;m>D-q7&$OQrp#b8W~xgGE{BfLUI8KRSr-gqY`i3_Lag?1%a>} zfohjT)&fbQHWY`3%p6qiA7C5+u@98y0@b!~`j%1|hC*+2hG_IycP}p0;kPP9ICkaPtMQ{;5 zNh`TPWKJQ)u6<$#890IzO+(7123`8}gGKxvE;!5}p+yO{44{6-~@`P;crd<2WS9XG zZ@YaU2}4aP#6g)#yhwhCqu^EAqO9|9h&M%3R~k+eE2+|LRnX{X#C}oO1o)v)7GF&8 zl~EQl<%5T8e$F3B;u zhZFk;xZr0OJ+?W=@N-#VWnCQq+8^=7_YuK&t^$|b^IyD+rZ~%OZo1hj-01K7>@FB@ z_qcpZZoO74*;I0?Gwv1u%kXZ4)0$jTS@Cf`8!s+{7@f3`lMlBjkLV{RZ-eRoXf9t; zWOcu{*WeOPj;WvQvN+&SzIG#Yv}5T)A^6wor{F*39d9|$aDJ?<5x3egxu=a{joG3< zvMr>3Qrr3O-V&A5Z;P)>My(tQTRma)MML7#AFlb|?GM3BsIfsv2eCUb8r*5zH7WdCIPnJLWS4|Li;b)4`igNH}%r@~I2=7DJ}pz3|W@H{Eu} zM6J1g(=C@Cdi3Vo&z(4X=ehf?-2K4Aj5)(Y$8S4#?|oOEICaN`l_Mu?Utytg2S*M9 z9d~C$SN~~L+AT*`&eodUx#9max%>Z}+Ot_7EFExBh0h|E94|R?3%-?zJxV={T(`JJ zWVZgQSN+RZ{R{sw6~YQcYJERR^!?(J=2}9sZu@eZDWH552BqQ}_4P;R`>P0XY9XBv zc$9m|%qs{;u9T7L$P)W+dCObg{`R-O_r346a;I5Q%qTVwKU~~S#rKy%lr)Pn>K{dj z0z;RJ0z-L--bgv5P*Lq5Q-`eg=}3G^5weKHI6!$omR2Snalkr30fUS(3ba9_@Ic2v zO)j(}a~X97;8xh|hKHz9I1z7xqm77x?5*hx8l5UWWO@$W2?DZcLKZ2nWG9ukQc+M9 zhc6-RC<>djz$3K0l0{V9Xi!KYOM|6HMN5*15ipEN2*L>R6ULG{38rugBBL+>Cz;A!OmqXap$=hU0CCCH zygmQ~yizlmfhM4;DIQUicJAD1?f-+o5++6i2m%(8bf>5y6c1U4x74J3Qi! zx(D9mtM*i~0FbY8Vcrte?h);qBM4#{h;JE7y!=-R#!}1*{4o0GHfjFfb})asWx6Tm zmC?+iuqC`GhWvlcYhI(m+2wS?v_+api-;)~Ea_U>G-E-pF!q6V=SN&5GTk8EMpuDv z1nENhfLFRo1Qg%6BR5L$s5|Lq8LIjoap6&b4`25qh@g3tqka{sC5wRUGT6fv#!!$j zSxBp|BH}UONNkazDPIf#OiBoZVG@$$D&#Ei31L%=Nyl7c-Z4FSyyu>KtoKElq)1ng zCBK=7B$r$+K)gjgtAex=N)=2Cd;pVQBp$&iu6RTW2#Co%n5@g(y~QN931OA2;C%Ha zpdmzNc!~k4PA!p3+oeGy387(lk_;L;OF6z#>`^2fVh2DAlwsY&TaeM6;jI5a6GP_c z1DKJ!`cx1zHQWAk&pr3?kAM96=bvXEa5AC&0|Hk4N)Z7< zFye$jlZEbDLL%iAz)uO-APIp05RdJMMARat6cebB&_|>w=g3s6PzftbVx*NFfQA~W zZvHY-Na+N`05Kq8`KHDM@(Qvri3gYnfB<~)Sk2oMA&;R`hC|sS9F)UkvJei3nS)f3 zx+-f-0W~P*#Rs9B5#R``5E6iJRw2+(1F1BRsV-=c6(41h9??{L0D>$K7hhJRfJgDE zWXO_;0cpXsrg%dBhnLLXPXqsnpQt!2-;w>JZ}6vj-N|mp!E3&){>2-2eW5@6$jai= zyKfw{eZSoE-{QWp%A?P{ojbO1@_+shfBV1v=fC~i|MI^-{Pg3;&fNU5PkoAd>dO0y zyU z=F{AvW8Zb~x%J~`xz&+dKko6?jpL`kuglwOm_@2k*iJLKB*)|)PL3V9gA4x3iBsIt z&9`vJHw$;@c;Qw~eAjIpzh&f3Z5%IX{bfR#hRI4|g z;+AeM+{Q6XV)Zn)dg2yt>6R1R;>qLO%FQRZq}n`sid#8xnhOPMMsADph<;-7Hkg}7 zPji^$7LmQ>#PHN{F5%>u`f-;Fw{o*gkB82oW2Z_N3c!Y~I0b9x2?Bqi4CaVHP?=w>@99s4(IBJ!b&juiiCy1*Zq!t7_at+D>q-b|8+~tx3CW^Zl3I| z9^F%^Gm@ORaM#%fFHa8~{nx$y-Yd6Wyj*;K(jHp8GZEMvvU2pM`!B!#_)T|BR2X^Y zPTzC!&IccuSswO|A7&ru-*Vh33XVr$AE>)Iadc~^BLq*}ed)xx3o~=`Grj(~2d-?M zx)mu_f_oo+tiQSd+CU}0almP~{>M9dbG5&;f3~%8^whl%K0aJMGCpIQN^81X+!Au2 z*K!lb_q7lFUlTX}-v@UcsX6wdun$z~%kHZ9XJ{XYf=vk1w<+ENG{#q87N926MJ0?p zk4X2&9|eGY;7xCOlO;TDD%u^DfKEjhqCP$L*kk@XpwDKr|d zEB*I(kl7Nh;5NdAqy&{00qn>s}!_K>L{{u z^a`3+d@)iS#DLn9R-{s^7Cx1dPADVDz$2{{j#rWZ#6cb<2hdOu;LA~=mdn2%k}Av=KlPWmPIuW#?-Ge1=tz zUSUis8Vj{YKKh+CaK~PWxr533MC`ia6PE8UHZvylm z#iZj={HS&S^U(NFS%qm_^iMH-S`!K)DP|G^@lpjxB#;obQg4JKCK@c?V{*YyNs~T? zCJ-auW7Ij?no>k0{R0tDrHQ~JQS)Q_0KxnBz;^op;apk+)LUsHDCjfhI;O$b^jUB_n1jWFX-d`I#(&EG&t5 za+rK0yZBk2$3EbXdj;u;INoy*MO#ppBP(v02 z5J^}d;k-pwUh;ilWSubCd4!KuwWo6U>djc=tA|v(nirEvLCvTrV_b8SOGJvsB~MBL zA|~?3z$6p&2jf&E9CD)sJp`1GqzXEGX^~Ahk0@vzJg8Ny;+%RwPk8s}PD3XT{Pu7E z_8iBJsS@cwC`4i)jx2u4)ulipOMW6$3n@90lZvJr zgOpJuOhiIK>C{FFt4>6ERg~?T4OSq<6iB(`9-N3-W&uEa8A=HV2O^)t4W{YaQ12!wdjLhuNOFDw@UfGjap+6PFpzem<>d-c-x zfrk0bQG}xt@0Y8UWBuYEnWA*f;h0O&MmMrmdxQ6U=p+BrU;l^Ce)N-H{QQ?b{L3G^ zeC5$!`rwC;-Ewxi)*YXy&h=OG4YK|4Tu!m`sd%L_xZ~CffBx_O`ZFK>)epV*Bmd^T zzx?6%edy2s-JgB%eINMpSHAk#6HiXntJ95|lRA~KV}pTP>il=vcc}bwcXhqHa+sT2 z-sHNAhq>ND;pP@LMs9s>Var*vaov$?EpL>ry|lsQZHX+9n7l2K1w!F_@sne64=3?M zp}oAywN{q7h2aJ_m@i!L2lJcUV*ePo(mT#A%@uB;e}Wqfk8@jZ=Z>w+9b4*ea)bH9 z+*Wz#H|ORzhr_}RhLW5Z4vrUY6tgfm{34h5;oulI7#1$!g~2Ab*#E9e%y!JV`D3LE z55wVM?phY1P?Tk>6r3Vl*lqdc<5)VokP9Fo3B3dw&CK*=>z@S&pdGTzMs42+|%dI zUgfSn@YH?xJnHm-)wSbhhWYs;)0MtkCY^Q3+1udo4d)!*cITDb&OX2v;p2--mmWWP z;x6A@tS{aCz@;Z2xbJm$-Fbx}rQ10KVQPA?v3c8tdmne{oTD>*SW$cz)9`gnaR!Cm zCO#_R`&z`uCXQ_!w3q)=^Hu+){i?>I6C^5)T5&l=v(_zk$mC86Xtk~TDQXSZdN%** z?H?%hLjjthe~$RVQ6u?36vV1Pk_!;jbWYQpdHm_8pLS<~%>x$ilrahkplH#-00oIn zfD#3wB$)jv3=k+SR68pR8V)}S9{mkIohl{;x)#j}P_eFFy~->A7z&sO__F5HyP_{q zw@~I|BPt&SNfxw}s8aL|T4h#+0y4!vZlQsa2l|z{GFn#Ry@E!`r0t-FID#S(R|=d9 z#HXQQK*8ZB6$)O72TF>Fcz}*aXx<730kX&xAqnA!Lsn@K}NysAJ74r&Tpuzs!Hlv#2Wkle z*uzycpJ+9bC@dmK;aLIUq>Pel3&ru6mi4GO=%BAG(gF$#p7bc?t@?}I}!-EP@SaqUw!m1jiSEw#k=M@m6X7m&NA-zS7iP5iAzSh?V zbQ}2Sgp^7H!sy5dZG^ zSm`s`T8rxmTGl{_x-K%EL>JN%yw%|&*)*%h4d@#q8Blzm;%(U<%5cyO9GDF766l%fLSIJ6W=5SOj07P-?NY>w^0Bi@ly-|>wU;EDZoeB47D9W zLOF^AkWmPc$aZu*ngnHp8FT=GFmbCa%9s+VNo7niQ~!Kb3e=Ap)6f~?8W(72@*#4@ zW5k!mno+6U1qg?T4ww-jqjZJmF_Ah<9$|uXsz_8h>JM_qm{POwQxAMx@XmL>^An%= zgbf4i1NIMquYK)nFTC)Aj|)HZ~43;~hb83?yQE{I-(k}|;pQo|w8|kyl{6w0*!` z?(L>M?TbtV3o}z(a?E$`u@9WT|H04y=5PJn(?9dk_kZYDKK#j#eCXrve(wjDRu514 z2h(5wv)$>LtuxBD+Xw8%XCkOqx^I5t&;RaM|KNZ4&R>7=Gr#`)=f3#qkALdY-S>R` z8{d5J>O&Ki>1wCtNXOz-M<*G~)(&>sg==+ucQ9V-a83whtl$?%1?B^DN9Pr;Te_TJ z?-S|b6t(7e-2t2V8^z)FT!}1@n7rMN9}3@#KgzC`+`~!yP&m-EPrL0i4bI_vTyA^_ zz6BlUd_}G`wa7K53+LuLt}?sGZM~g#OrjI@9r0IuQ_pRcceEZ6r-%KaXWP2 zWXkIpd`@vVCrlQ1D~u>7>#cl8l(*{EC5(kD&ct(;0%ubSH=$w+SKLduRojhzaZlg2 z{@_#u&bRYiTKNaHZzybU-%+Mr-@+7bL=*ASUF#3u<;~YLg=@4N3&1|$WCkZOI%&b~ zefLC+*W8#nSUht2-bdcp7#^AJt>1qBp$qpu$v$w~>5G@nKX~8WR|mcI%2c=0-((+H zKX(4e%@^;z{H8|xaAk6M+o}5>zWlaR$1mS<{KCnbE}p*St}`d^ZnYN{77su8;8Xsp zwaLd;pW-5n=8`KjCTDx>19#s2h-(cS%~hu*T)zC&nUfdY6X7gPrWm$@3+ErYeE;k3 zI{%2<52t5_$8J6!`vBzP$j6zvcHP+yKhQq#pIck@fdf7Rs&2Ts@}HZ1pwtqX1p+Y+ zM2-BRj02FPY7*dtIWVJH2$<6yJMgiOeay85{?IqAM;oMfQPL=fR6a^eG^HpxQO3kj zjV!bw&?4YSf?)o9p%g_oqYfea$Rm&NSqT^iY*ffD0>%OR6~!Yf6|zy5N_{D+kyQ*G zlDZ<0m0k2+G1wCcjgJk<`64M)=1P&uf-6iWhQcEd9SmlWp@|e04?mzD=taVkAPZ7D z1;m~l<>FP4qsWcu6$^Z?5|1Dv%B3b#7CtSvjHe~iIVqMZQx@W*Rl*r9;EK(?h=*qg zDX$m^!rsbG>44gRCSIfx!4bd)nlOP^5Rw)Gd|>KRrSei10Tm0xLz5N-@l+0=KIs_I z>!=fSs=_+3X8a3N1)Wv zEyVyDU8(FP>}~WYN>>zGj{tHK7TV!R=R_(Qd5m@nADZ|mY{FiNR9&);))pcN;#P9; zY9I=mB6yTaa>#Jh3`k*%MjhRQrbJ4eYF8U74W#z8c)F+x6wvxQt@_u2(}hy8qh3?= zH1&zNO!1lh13$J8ygbGD#aIM#DU&1E3Heg;M`#oNj01KKFuRf4T0f1bL4mLqPbcvz zT|(;^Ss4pjFmg#Nr=cUDG-CQdG4_@UqoS5ISl}Btk`Nl{3?B6dodJyGP2mxSq++H6 zfg~w0;fDg6a?x|r(;{s=CLmu~z$^(0V^7w6)Z|!_@+u6-x`fyV_#{UDsb>u^@32S* z9(dpZf7zRlB5W4<4dkA$SO;ynU#VN!vf-Bf(e1pmV^u!35anMqR6sB zf+JEwxd1szp1Mk-D4IuR1o@`03K&_P5vS_3qp_@s$p@mwFbAZ8Fkhq=Ckk`}pxyb# zJDDJf5t@z>KN5xy#CR)!2!ce1uq4_=C($ml=4%B!U%h&jCEvu&0^q13_5o)OFb;g{ zTiQJjmr2+w(=S=nW|E&nF$Tgzu#RBg8Kfknnz)IFf1hz@r&s=ME zd@L|kU#zrNTnsl>x9qJ?G-|z#Q^U>McF#DZwbEZW+UXw}pY86OZskAI+|{1D@SNLL zx_l|`Ji77yl?Sgp@$EnU%P)WZcfRf*ZQSHq@Xi;o3!y? z4t^*nm*kkV+c|M$J(pbKPqybdTg{8z<}GI%x-KDZxzb#oZ4|EftGDhDycN#jhsF7a zqj>wbi!IzE$6~{U+BKZT*~a2bbNRb&L|-K5p2y;<$B|3ElWocWPW)7BnVW2X*Cl2< z1-A-v+v6=HxzJBpLO*`WaxKU2mR(^-L*2iYt;%@-Us1-_R4IBMM5uic>x4n-313On^;`l zeBjEHPXAk2J$mJ-x3AxPVeh1G^OtWscmMf&9&*ouqcUCSdGg$Ycii_BchlMXr`xNJ zJzP6-`(2mcuyE+C+d}OWR+U&2kZW?BredU48w+%89Aj!Thl^7ax0Lf93dC zrPpq)JBHC6h|R{TJ0%TRJPyDCqzg%o}+EX)5eRMQL?$_Ag zS>jw~$~owg%l#Dpz3(5`t`^1`K=1}Ahk&j~4qMvuUjY!^{+tS+Pq3Tu8UO7SeB0aJ zMg^kS&=~0hlolF`FpW+aP+BN3^c?d(y@j3zfks3@^2%ehJ2>MiC{gfn zOPQgEP-d`^M=_YRx6I9OKAaRsAlzmhtt^s=Q5(Q?uTCVCTz`m?sb(NsM0=GbhPPrU1~i0dSwF0O zz`BNgz$Xck%RTLgCXk&NS)>V6uj-28ja9tiBucLifJy2~bRO{%g3w7A<+MvWBx>qG zZL0^b(sK||aGDZ2QGOH+agcbbk@kh}k>UhsP=IE|k1{DBo+bvws}Kra9+i>m1wnPG zQp%WcG)Xufp+S(!BgK-Blo+oB#DgftQUCa8dL>c-%}@@*m`o|WQX<4*BIQv*f`hmu zc`Km2T2{TK(fPt+v_+ambLglV!g|Lr*HML4rbzXiPKYx4ipK0?i-^CrBc^`5f8hIT z#6KXGSO$f~_9yrVU0qWW6neh?4+KaCV4#s0 zK#Zo07!&~B!Zhx*HJ>mEaz$`|$m&kI4PO{biIG>r za4;hYf}k9*W!7OPTpD@CSeJo$q|-+avh>-~WBv34Zlgf7Q{2 z_88DBlt?S1fDJS;5Ac8!`38i`SN|V-cLJo@Row@?wK-ncLBL3w-oO6V-n*xl*)`J4 zXx}AZkbsed1cn%dEesea0}?wiwjoHt*h0vn5CjB-&1RJV$4(WdNbFRSN@b~vopPMm z@e(^mn*84P@4osx)6+AfV4<<+)T`U~-Fxo2=bU@*x#ynu`h7tNhin%E$gl)R+O>#} zl%$+7WI0vEqQ*!f7(krT>~XY#hbRy!O#li~6hb5fm9WMvIfEwVX|2UL2U8xv4{tK1 zBm`-X6nc-DjXrTzta^Hpq7b3NM(7l32i=A^%u*hnQAiiMqfbMbT>u+JV?oHUWJR$p54P_@=* zCq6LTT=4JGj%g#4<7d`u{hg%^^|@g`6hGB+#AtMuJZbe|e+Rl}kNE!j+~}ldn$@-P z?YM4~ASVvzCWofZ`26Kp?7QrmeJ{B2C09J}x=XLww{!1>o)n)xFr4^+=kGpV=hN=_ zCV$RrIThwqo-fxWR^TA!$}b(H+y~fQKELm3)gHN0lG?OQdNlZmoi=cn`*@(sO|`}mt{xO?S0exbICGv@<(qBoCR z-7hh&d{wXerM~3TZ+~mfl`r_E+^N&m-+JUqNiT&n+nZdy<@qXO=&XJnvHF%{uE?_5 z<0G=K%G;HwD|>MA#lL)kFlqFeFA(NShDq~n!)UlS?H$eJ{m_G}F&HlM9dxQn@V+39xIb3|;zcfz!ugxD>9G{#Rsfp(Z5r_{Ac3OY$;{y)wOm3WQ zDbEnd2p|+U^3lZyP!JzrveD-U-g@h;!v5Y2^n9O7!$sk`@CW#HTmlFjNFI(V<(w8C z4&RLD;Fd=RO_Lnuct`S_A1)AAic7|=a`5*wK`0m@!zBht0$)`u+(_7RCO%pT~0u=P6km|4`#T9^qrc~E% zp}9qYqnL9#%9^{?T&LL6g%o~3t*X!u!&o9t)$6WZ^7zaFP%Hd!M-@__eV-=LL`SCz zv)#j|kCRXNkU0#T4UPm4%4r4o$AM%HO}$-^e=A7J<4Sx0aqQ)cfNX9fg1)E- zKlE=t5Qk21h%vo~B^izoj|l(D2_mlq+c4451d)uCJZ%Hz^l1Vh5(@E=V zZl99M3m^nds;yg~JYZ+kTr1kZ2?{_yCAmcz=g|qB1LHzW%!Ak~8LhGtWue9JTBk`c3X&RST*V&Z6A$uO3WO_Ncg3pY zlEFsIm-*baVU>mK1%;{tF=(1#JDSl;KwkvuDr4ol{ph1y3~wkLM48pK%Is4%IF^mY z4*qI~)n7!k3U5+*W08SK*E+&a21uGN3fpN|D4?$weHFk!ffPc(SZ^L1=->qX45+SU z!drTTBNH6TG2(FW3EawuPYB_yP%E0GL#+&!H2J8M{mClMM!?R;{IX+5ZHJE>AE>pr zyZjrqm!(I>+pgBw=4Q?F#PM47?({@`YPL0Wc4J`2fd8av+QkLsB>F8smt$J9J-1=FS$%K6GreJ~Ef0Bc&>rd^8n<~7dU$BYx9B}L zcSQ0-gwxrPoneeJ5QzaM0m9AA@Z~zMCe}C z!_d{I)hiFdyN|-FN7#ux1T(EdA=E;7v^D2SkLf))xNRh3pcMrl(a2hQikQ{F{tE=6pu9SzSU$S$p zNZp<^YO9wKM7Hg!UWRw|=%iQn)UIMy&3$&F`tn5gR}Ld-=%>eU>&KW~tC1YYllec9 z6fR{w`!ny#4N4dF!D2UW6Zxtgf!kSGlTQAn}F3 za;>~ak-5=*+hkShN9M!oI}Fu)SRL`qlj<#$NS)YJ#x!qDf~1b#D6IuHAk4mFHb`O=o^nf1^3t zni!v5xb}rNU3txQe%E7UtUXj$*zr9CKV|4YdakBs>wVE; zc%&^T(eYt`NiY1=eZIrkop;G)doH@HF+qgsORsvqFA&x{bB*!&ORu{2IWM?z-~O8~ zdCoo`D)cpx#`Mhi+_K+Eyykf?+Izv})+Tw!I-3S+)&EBb(fF2v|CKPoTJ`FuG8Ws@ z-)r{&oA%(@&Do{FmI&eCczvT^%IM&AhbzB3S$(Xa?l&?PUB~Pr{Mox^M~jGh8pJjox-( zuUE@k;O6oAYz^EzRa(WHLc~#mdlT1-%fwaVp@|6y1<1JdWP$S_&&vYbHve%TKES!s zk+xhZoubco;sNSK*W5@MT0BFS_3ovNf3sYz&F z88X9xvQbWOK$=Vp*NOPR(Rj<8YEbOC_-)rtS5c8XRm$NLP$3zWOWleLU>Lzr=u%zz z2?JGbVUhx9i03dYjoKp=%~LxmNCZ*{Kh&g}Yr+5;abs$%1@WvnDbr;6TgbqOTgYnR z#AHcgFcYKL%1RWz!-62uVVdJFqz71 zt)6pPwivfkqKSq81tP?%%LLp8avQ4{nn`01HBZ;b>Xc0bko6S}BN8p)Is7LjMS-Xq zCQh`{7PZos49XxS;XmE6`62*`2?$Lb1j=o=K}ZH~p@USQQc8D=K}xN{(lsd}V+3@Y zuHk36Wm4GH;v;H|yrd&(rjU&37u#Z1XVICZw)+^m_?Aaw^!oaa93L2NZ0WBpd6e%2 z=V$f&oW0rk{h0Mw(`&8URGT2U+vA&x#}O%>x-UadcWG`nX&^{PKbFX zTdQ7dn9TRkoMNhf^lr_%^7{+^7rVN;zr_$7@d}q8MCe}Af)xmMuX+Ezy?Rw8iDLva ztwN!fvRA=f=`pcr&d>0M3VbMvW$c6H_J3i*`>uWD3R ztLe(GKZO2Zd)5_xf>Uogk9C@j>T+;%r93qAcK3?ZtqB9SdUc#P{ZO4trn-7`(kpvv zS23&RB0sL~!|_T?SLmn5aO)dPuAB`s)_gnHiY%Q8KexBaTlLF#;d!7VOteC6%>R%0 z?~h*Xb#<7MoIO`g;@wehj?GqASLdr-Rlls4xtBEKyE1~!YV=p7eq=tRHkhj;o_W&c zr!kec0;+#+>GI>*y2~s5F2MmYfzgf^KjsoE5JM2u^4h>eXH#vYBR(K@QE99*>Guk~ z>@iTE_uBy@6LTAC_1g68kk5UzgjOc!H*Xgo*mM467Ez-;<)rVk23Aw8Gox*5cGDSS zV`q6YZDQIQbda}>nys1Y{~GEoulk4&_;yEPJED13s~?waPc59`X;r6+eGS&e8C)*SAuKaIN|LBB&c`*0Zj1T#no)^X2U3 z+yD-V43CBD!fB}-%GIB^atjRt--chOJQ=MxPJ#ePamn}wGQ2WBb;L=F*Qb{A#!rL5 z&5&`+3*u#Q#!yCz`^25#NpeWA#0%x0@GhhPg1t!w12A=JZ{n@VV-;fnogAF8hYlCi zfma5y=5Dn`8RznFxR=_>XvJBDCLgaAH5vTKs0{@vP_8*5_(V2pQQpf2g@j49_>@P7 zM3s-*-CN^3Ar&=7;RxyrO_@~ThseAt%H`A5I9z zgV({+;Dwd}r39SgCt4+rk&TS;RE;CX__W+GvzJ%HY0+FcaWtfVnxPF6$;;rJ!rjsU zd0_$qq5$HWA|fy4J|U|%U0@IJh)At30H5#2G2>s60w%_=q#?BczL`AG1ZGkVd0!m1 zcy4aBmBuI3D!v?=Kslcc0#0O<#B-Bz3p1qf5Hx8@R4J4X@j{kwsV$Ze#J@BMkwUpb zIw45(Kpc5PKzo#F&}EE;iD#)A5wqH4vwod}tXz6V!N`hXvQfQOE4R+J4A=h;Fji?U z!-5^1^LadBRndWyR^kI))4mcPAa8(Hef}|P#{jWBS-)j+X7n=w46z9ui)Y|~5wwo1 zXzMGh%&29JB%>+_S$eTN){9kR4yc9Pi_dUbS*8Tzz;sCEEwtEDG)s4yXX#;B2FTz) zBA8uSu#A!!#RSt?}%V$;g94;{(}Bvg2eQiK0S8T4Y2V50NN4g_15W zmFyTOs*BQ+Vjj>*HU)Mjlgfl4Cc&){3rgh8!yTinM;46DJr?_Xj)*KQzzHnAbZ$K};&p>m@fCB-f7B@oY`EqKIu!WL0-=6Uf^6cP z6J8MGpF;t^h4;cGupx30IWX~d6lR0qt#LTrDp$*E;)cDr`;}uZ#P!!-??ps!Cdlx1 zY$75CaRT{rZp9Ep40MeS7s6JnBU`W?7U&lI(z!)8dp)PfMjv-b74JxGGys{%T46(T_*$vek$kz;DYS^d ztAwm;jvqx~gS>dQ!=eLIccBRfG6V#Z5-_|$)14+ijjO{m zLBwd9ek39(o-rejLlA8fpMd;r+(s5G1(S=yZ;2PjnIS?{L|(EG!7Wvw5PeFce_bG= zFTI;!B-NbbB*RT2H5W*UJo9ylh|#--#ZJKK$bsL9P6~Geq!T@{>s8xcLTgV{g#a%=P@F9VQC_pBl zjOI$f0x}Sg&4OiH7#SwW?!b1T2G|@l!@Ma+1bJP^xYdz71eh4m&=zBV zv7rDNGgF{IIWSj2Oq`Ru5_vsh9;7cBU7OfI*Jvh&05gYug#p~cfuKo)0`^)GCx$4$LLBK;D27fB*jdZ+`QefBBbx z`R=>#_VFU09}pt&^1wI0`OR;C``cgr>Q{Z2KouM!7#A|)*^EVj;qB!u+)6PI@MapD z&t*!-tR;=1%RGnRR!V%Wq-FkBa&`@S3JZlON?K9xf;>#UGo;xOWXKL=Cm+U``7#(ZH?E zA{oexeC&L7kdk++7QytQBcP)UI(egwE*C3N?%v_RPXIoUHz?7Mi9s!lk7a8mT3j!C z*~?z_s#kdz^fj+}4ff(#GG#|?c8?q%@F;Vj*~<6v{_%#Vy>G|TZ9C?#?|=G<_`u^e z5^_*jpxhpM<~g@`g!_r}%((4DwY9!2uzHA7Ff7JZ> zpTy4=eBc8g@VX!;r0WSTE9A*=Ke#k}6<~9;>#4Oxs*-a5pxGSl`)=Xb9BrNaE`AYD zjCAbF$#Y#d)yTAj0j*-pcKYBgSahT6J6+C3R$P9X(CT#Y$K%! z2qS=t#|HMu7*&(SIYPNYx}ssinrRq=AHZ;&F5U~Li}w-*5(l7T zP%2TkRM8%E%8aED^bvs{Ul%FjaDEuKI6^49X!;-(yJ19RAP zGG3WE(#!{Q7>)ro`B^g~#Y)In2pK-*zyh&S%wB0S@`l(NVQtWt$}0&De61`ZbW8vQ zEl&mkeZZu!W~xHD&_TpqPG!FRXD2F&?g^Xu9(gixwocoHc(+UoA?Uc{%ocYksiB~=I z6oszl*n-Pv16_HO{PB8feyq=ZKRi8@fWSeSe>fUAo+KTbuJ!wcF8>tJ^dk#%{%PW@ z&iI+_&QoV5pEf)7?8e-){AWsYhbzBLu=1Z8-T%B8t1r5mwJomp=yIpF*=q)_PR+j) zv^vevae=+DdDqm47Y3%!8n3Q1CaP=YKOvoAe`i+yH>cq@ z3ub+pp?f=>PjTYe*Dy9VrdEI9qUmF5UJ@9p>$Lh`k29ufu2yZ{6*`Z%_XpzLt?v(W zdI6k*TyBe}&CQ0uX?%2HfzpZrN8AeuJU15pw%cywgz!M@XiE5R+z)x%A}2(~t$gKB zcERpoN^bi!W!_u!qJwlJU-f-P1!5y@)dd8GZtXD!vv6j0-+U;JPr$k8EAaK+_AN+$WVRe}x*KyyUG50&Z#9VIeoqKpR| z^2!{?P{XA7fLl7ZWkch`q!r>Y-D<+sK_tpSTt0GzbFLuw59kX`vg?Z*z%#@WHuwO# zFj(<{jg&&J6u-hrKVgAH2E>{U7aRy$Qmzg!f=|NJ=z62ouRq|^@qy=wTO#0=yjYEv zj0FUR#Dpfr0H=k=!jBCp2Ut>Y!*UG4JYh8nwO+xAuNU-n2VX7{XoiZUIVqSeR0<$x78x1~ z-#nBmN5`z_4GtvFrZHT_psjBS4_BM!p>vEb=&`t~KMY*K0YIpj=w#S=P?TmD5PNZC zFgixug0)nQh$&&jO%H=>?Borc36>Sa1Thp0vH{8gGbYHoFoK56pj#}~mo);i(8?_w zU?l=g*sEe&*a4IaAYQf!1hd3&7_cfWb}QE{&I8bpHH9!4K!G*O_JLu5z7oV)r{Ksy z3*Z5coy#fSBxI(f%%hlqL!8}b|Ni~<7lk&O-cvj~CJF%@A5ty5s;WL-;HKXb-n2iChP6kw)_TL8^` zGxzk1b5e`^dusfScf8|$?|YwD1wQ%7Px?m#VF4c^@GgN&ULo*lBX1FSMnD|eqZv}0 zc&3EzbiKmg>L0wB=YRf9Z+cTw8AoG(ZImu$l%nduK}1&jnV4b zI6l!oF)2Rql<5gC0Q65RkBn^{8r>{DQ2jhXecYAbU#N}wL6C*U=w?@Qc(FB7{U<{8 z&j^A8wPve6+-{8gz~ckm5Wz}(K$O5wll0@fvozLPV59`K^UD;+OMIYsyv4;;5}#R` zjH-Bp1t%G`i4S;q6ijI4r2nWh{*TpG#qqGO@uO^ET(!7@_D6mQ2LQ+eUX2|yPMV#a zqo~mC$wi6BqB+NjKckS3#G$f%@To)wxDZ@5+pFEgzIp4dx5@+)S#-En(wzJFrQ8O2 z4rH7k{v@t!ugVod0Q^|D9AM0-inGDfuzBU=f^*K8jg0#QGlek82wA_3$UxF{f&(Q!;OQrChR?mH_(Bgo}1AZ5PpuD((mD}3=S5qaB)0Yw+9fDGYS}93e zT_{lnKQ29LK~SQ(yjFBbK!bwY;1~7^^Jt<5Kj0Q7(46;31nM$d5J47kq-1m&{kV;o zltaUY!{jk8rmGoZdYFffGvR?}D<%L~m}JUZPsN}Wdw5KlUc=}FeJn2M;~KXL4V?7I z&l(n!&dvu2PKWHjo@HeyGm8wCDg$Jyvj#C@M#}nSe+;x$V9vz& zSmrP-5G7e7mWezZ<}08Tu#}h@W(`5Z&D1m9Qh6oH)xwW`v%az_ttNmUV3Ar`7A7!@ zOc>1Iu(Wln7t~N@FGUc~x<*hHfUJpV0K1ocO+#HEt}hgTeq)Uh0SHPNNeIf3r48KnLKKMk$f8qf zHws1hO5h-_BcybJ0ox@`q6cKt5j4XTBWAd>qNNtETT=qautjEzNn+&!8IaX&fy*e2 z0Zf%NXlm13CV2#9ARA5nVw)7SWQ%uXc1V2hd*Az!k96Jd=doW@<1a4I70A;>1j`X)**1xHZ*_p<6X<)n5q8 zrP`)>mWJKR0#OA=dDl)?QBa1FqgzDyd%r z_2UGCGl|L z8Rmp&gRs-_f>H>XPi0r-*vQxi?fx7y@pGGqsJjz{4OfX<@c~f+{tqXRlM^qLr(xf* zN!g=ixF1|cjw^4(ww1$(DlRd{Qifk4<5oj-aFyesDxeD6B*H&x=x}!tM2A;HK&^-% zuNDp-5CqEOhG|PQw~-yP3~rUn!$(9z4A?QHfR9(HuX_m99ZaM&K_s1WJg}-<+qhWh zguX&L)FYZ?=Q+z@8++Q~yz;Hb#}VX$LIb+fTo8t~<16Zvu59AGN@IZ_B3da#M~_&g z8Ld#3rzm~NXaYC}YN;_Eqgt30iTeWPs@j^Zy*do*0qd5F|1}zP8P=9SSvJvt(}-G!z5!(#da|iF;fs2 zJ)RGVGWodh9yT-1_7{0mY70SR<5a)XV$DK z#}cB62!iNq7~_l@BW5>29NExR1;SEz&@gCDD^Bsw?|`KWuv*t%d##xn^OY(alZ>4! zWHC%L$P!tq&@@JqQH7R<*iZr-*ySTKwDhhV^BUq`st|E0xv))#fx@}M^jL;~uDY8~ zl|Uo1ee)$Rd5KLE4@9`>rkhBFRiHLq8yEPL$%e2hF-nHs^kB+N03c%_Ls(V+$`2W^ z7|K&+bS(d322*YohX`t{0aBGw7^=Qkz%0NwvNj70klhAhTX%?df`0$|-!DY)iBEju z3t#wx5P{$T`26QT|C!Hx=Hnm#xGHCAM{Ez=`2a#6B%%lN0ZmL|CLpgPeCnEXBx`yU;DLRBgIEQ`qBIDyN^U9^$!$Mw?O_=pZe6NKmF-@?zuEy z%#6q7z>hq`uAK727%fG&T4`e3ac=clRw5^_eeG)vrTD-b-tY#20+JeqV)U4`l3zD- zRPg~J0`YD_>if;5n)tx$o_-=e(0hP-T;)&12Od|$aRg@a%NK$Jjp1eSfsy)- z{`TaVjm}WBKG+!Z!-zv8{{3LeZ-O*h3nR4|KO#{5jzA;V%t*sO{>-_~XwPnF&1`5) zy87!=en>Q*5d6W$2NFq0WFWsFIoBRtoNVMP2jh(iA%X#4ML2%q0|%Y`bIi|4KS6*X z^yX6{dXV@)p2VfeL2l%lj^#l(2iLsaUi*55aK;T z07@Wphvehnaf=m>xD7n9cxdr+coDoE;9Z6N-5;6aS;5q=O&LL_JV!RW58$og z!DeLt;sV*WK*`v@f{9fPv7tL9a5O;&g*cxwO1K|-A&VVQs)-F+stLbH3F))~(6|Sr zKoht{M=x+>fL6Ra_$Vs}GWZXIj__c&#eY|S)#nF+Jeq{HvC8P3EC5@f6 z_ybC!2M92Age+H?OJi`;P!n9CW@xyJJP zPj=E#NcfD$$brm2^Lx!XjW7TW5oNd{$7(Hq7v2Vwe7V{{>g01Uw9ygV| zXmF4X7Z!-cmI34yZ1Li;(KHICx}jmar1~NY%t3hW-84DE83dPdY553tZw#4n#E4-y@zgAG@#tjSjFa&k?OUCR(C8IYQT(Q z6M#YsyfkDS@J|nPB~Hi=c#iB){Gkth$YJ@jUGVP);scJ%&dwkE*vE2k{>5MXMaM~E z(lCkWD%%Qz_=$zVB-2EMh@)$OF}FCu6=P_&15)EKe8Q2pOr$|p4u|z)OJif{DoxOV z8Kpta%E~@#YLUo)6NnE84)}GaJMOsS?z`{yOAW#T-jNXT@R|haL_)r}3cv9izabtX zRW49)@4fflb=O^@3StZ1Js`3uiq|cu%M6dyQ9EHtisx8(+yaaNnO@E@@3t#1+>yw`RoHGZm-mr0YcyzLV zaAbVQm0u+oA6a(gKMq!ZN3#0hKz_wwyf*Dx>-~X8LL4h^4%B^a?c6div8I z*znA)BU4KQoypGT+VJ#-$*E^gcz>Y!1T1;%UH)&v^>}-KAU<9W`#fhLAINP= z;zAcUIKH$h4t5YKXK~eaEJyx>e9Kb4PR8R)t_Z6xNY2Ay^X(3Nn`{&EToJo~TV4$h zia!%@n+zPa^0pY89gjs5B_Qq-w~F%?=L!Nhz{3|A-6^-fxRuu&O&e3ZR(Y<1gDO{n zdmx`4`9kt>Ut!8ShR2VUBBDx(jgO-hf^g!X+VV;lGT9S}Z;R9m5%4TUhoqGg)_oX6 z3O<;^bPX9n2+ASnD6La@g(&cpFrY_h8q!|8O=2PlN1@)OKtobs6*IXF+o(~jJR-V~ zF(`PjWh)QoR7%@njA%r_8M%v)CdP}ddEB>NNEB=7hFVJe>_Pg(E!f* z3`8(M`oe>Tsu0&uD`Em(1m7bEe<6Y=J?Tm7L<=${?_#XTX9HK)CT_Y|=AbOTJ?!=*9T>}Re6mY_EqAL^v z{7f8513Wjks`Mz82lPg_QaJHK$>kOf{L+xi6yLR^C_n%(6~^C_0v;WQFqm9Bx9H?N zs1^FEl!Oh!0=K#dHC#b}rfub7Zm6CnLx83nS`k5pyy#$<1`MSPWNm|AoJq>bETSU1 zr7?5KFqtIRUw=I(-*YiXC)3Y#MKJLJCJQ90DO2oQY}zq}1qyO8j52?p;sb{o@M7di z3hWdXj?tlBrodV-B{KJnsZq{Uk;ybLOw5aAZo*sdK*p^lX6!5BGw~_HIPwgS!I2}0lEkb*&?y}aTde2IS%)&4)teL|*BWVi7+AugW z4rnQ70n%4557|f3)`2b+U(OLXeRr10hwq&^xmDM^>I$2!wKu;h~@{W)d7w z3!f#?Q1c*5*(l{*9jxeq>L{>RpHZnoAPzUk}6?oTf?ba4k?^G&2<=xUry80!9Q<;GA?}yBgrt ze?TZZ1wjlDkVzhX0nN)aK-@@~btbAcrE8PQc+tO?Rm?i`O1ULW{FoOiih2>0r%Z!l z_FA6sg{?%f^5%eyaevdB-UL&8;G~m|^38$75{?`nXx3(YHcfnBW4$3haPPT`@7=X< zB0g~R2f!1UCp55*2K=YM&=`-x8%>MQm_wXSX#zx4FN2ZT#Hkji27y@4A2MsOwY9{h~RjM55&jgCqLl{PjHMXkO!|) zkB9vG057^Y!^!Xri))QY@f&;3{)f7ky|ruRZSG9E{qBYvZiuTB@5lxrxD9w9fSbf= z;SS{#9EZvVVWUxEqv6Y02zR{co%Uqpec->CKEw0V>iSJS&+iH4O$fj zB2=6`^!Y#NL|$EJNM5Z%(@u(8wfNK=rV^=!$Oho23TF0b&2_B{1Th9*2?q4;HvDsq zbWL4G0dcBus|nR9QBE5QDGH|MhKvs3DA!%s)(~I@D3M0P`qdo~LV*KjKFFg$)j&sx zz@ZsZps$HS#O1mDc-EXmJQ)vV90|cX!2vVe0VlH^ehxA^#Xp@80fa32=8uj*CXy5n z_=kg4d`kH$&PtkdX!&&I)mMxk1msx&b(GdYby84i@G!XyDYjS{e7%4vu)I)G;d z5X7gnc&FU9$`w1K`mF&7x>f=o8@wZVg{eXcXiH0KNgW&r&>*XVkXi&GNI82U2mus= zY3>$6=*x2yJyuo{`k0AF2U%5Atwb-J;Rq$8$6&@=R*saeb*CIx0F%(91lODrsG5Gv z1e47_4e@eszWHVo(yCWTy|k*K|1V(50*MbunLeiMAmetdw+vvK$o#{J4-lF5jIv=e zw=FvJ);YrH7+K?<`5-lX#!HpS%#v8n*1J{A+5j1gIuqVhN5=xO+@M(zGBJ`Y2DE_Y z8Ch!|1xtxR09jKp2r(&|$J8)iEJM~Z`tnldA|MYGLdK6($)Yl7tg+1^5EJJttk51| z`Rg&g>o;9%s603}ni3!IdH`^%%GLuAM^Hv;-l{?~CJqBcK+pts>MZV z;kc^S(To(jL(o85afUu8N6R@@!c?)$Em+144lv>-Pgb!RBCkrJD$~j6NZqQk*v%qS zD>Eu~N#0BYF-H*4*R>|G;f9qyX+z}yrkieh^{Zd)iTQip^B(_<|Es_Hs~`EuM?6e- zQcj@2vvmh&C93>Of*1Hbs&L+PVx@Ju?nyqhRFip00J5~l4b%BkQB6stSPMv^G84+-wiOe zglK?~^7NnnO)c_5W*lhGC`V~1BTJaocvwH2mCKY^*ZtFUb9|kn(3(}Nzp*~MW@fCj zDgQ=YYtIkWrw7Ll`#<&h!dvO0`f^%xdaUhVryqIx`FD{|zj+Gm;cxyiJiV{k9YIJz z7NV^w@ZchEJkJ9&kpuY8YtDJTCJW&-5_>NzrHZ$Cw za9LT~4;i0K!Yjn9j zw9u~2kJlH5#wT5!vAK55((`G8`PSH!tM~nZ-f4qdv5RJB)-^KJ@a90XJ~1^h{|B|c z|2EoJy)V%6rP=MZ+Gao2?Q02nW1;02S?l&S-(8~}@dMW+rLFG3DaQy29iSbp?c{FWF_UVA zpuAQvk+OgBqvYfB@LTMRJWOD()D{I*HYQF8PloTx6_Mv4X)bR^OR9+yyO?be*k_?3 z&K-p#g&>2sY=!gyK^KJ53&!-Qkh>e2sHG!qmB)v)d!mD^F7QAipowx$3)c$~_=Lq( zC_}d6qoxZ45!anmxk4GfK@=qqfli`!&GnUz@ChwCrv!!2)WX4-PRWa!Dk*AFDIPFG zZ~CG`$Qa|$D%V_JDBzqRdPH9>G;EO9t-^Av3F7ELjxxDwd=)dwtj_WOa8Uv?90K6j z@H2TnycfU^(L3ftR;Sq3ql~U`Yv}3LnC5U4C)Nzn5TL-9iyOm-;WF`R2!*DJL~2Sy zA>z;pf~3$FoXitSqle^)1LAoi3phnexLYznM_eGTT8`4nfqvtgsU;WS)M3K_;TDmw z7w=kL1`(M^0U?fSyuMIIK?d3QtGaNjp^Q|gxI%%vNC9o-)hd*x5T;hj6?QqT;sD9V z?Suvy=m@x#!o-q7g6M_R873++OwWJ*^EtGfLytANwb8BlW~KA z4o#Wj0*o{0HSG+(TNc}vVN;+_tA=jPRbWyXmokFY$aRlznH6eHd&6PQTR2%t<~$pv zP*tY7Rc{qTfTl`n5T(E^e4uUeSwz+j$Re^ftx(7e0amqbOD3C92@d4w9pX~YJ;P9WC=)wh>rmq zlk>GRqt~{*l;y^{ zCu>LJyip)Z0GyZo$HCoq-+kwucZ!GP-`E{pnHNgneozP%WdkBC)!`FFmc%#Ab|NTo zYhqKflv;=^Pwk|(O#~rwQ5VtVan8iKr8*!3*i2$Fl9n5qhRn#CLRfmmD_-F#xpxV0 zi{~Pa*9jc|y;0zu0WTH!7XvYYuk?Ttkpu|-CBeU1h%Mw_4?gq z3?*2h%F7abHuCD4V$GHeH?qJjm74t4*NeL!C&ae#1+RI{YmD_<-trb`Y#rMrW#109 zdux>(`Tc>!2mJ4|Z=>xv>#TE!hIWiJH*FYbb>{suviLx4yffII_CL|1t%>1AXZ1g$ z%fCn;A(P)yKQwj1%^^4cM(xb&YD`qmSl7IAPS3%-^M~sO`$gk6{ za7QF65f5UD7#ymBl&sV5npLRjVxTrDBR=4WH#R=!>OJfA=GRo_iNeQB1BZut5K52R5EsWkybOJv?@b>%eFgBKV8?Nq^Zm`46W~ z{)5Sr-oA6wEvDER+X)v-RL?AxU9GM+xkGooj&;sbv;*7x7*eN)r6H?Jjc6CbEPmC)F9yu=3*I^gVao<##}M$$wE zl6QLY3IT+~2TH1;!Zd#r@qyxVGRvBCJCU;e*@A5oc5NB%O+o}5ryS>P@iP1?{tu6+ z>nc{S&~w||^3%8hGE!}U9nH3qfB;7;ZR4cb>D=Z>D}#s)%Z_jBhk%qVjCUdBi}J6s zC%Q#kiT#MLC6n&rg{tLq%EN~sMH9ZZZf)pxRhy%`BuRvZ^45D;Xs`69|a#UeYgbgj1nh32G?l&IYX&j|C}(ny6Jy3au2TFKpmb zA&9o!raQ7|5-F$@=a|$BnmCDEZpj;JdNh2-3va0Dh0>&Y*Ic<_f`FioQ114*@u`|)odxvCaJD9Gq3*c5E(1qhR-%Lje0Y4e=$}FoOYwK2($q*OREqn-?C*|77BM4b5g*+>iL0mp* zJU~@QX$~P|LrtqN6HI1ATUGEO7jTTc=UGsK12PV|F=EBCJ&FwTl~yti)N8q#$46O-49HZW zfs-Ez4#db4PzI2f>MS3FWqukCbJbWFO@m^XjG$EBcm*LVJ&QW))Bw3P=Vh{ZQ(}Et z=`jLQw<#$rvDg76v11I2MFe7Vj6TY!Sxupw<%tKN#QH@<3PBZstQSTGDfJi982I(EQcz{M0wuLHaI1q(IWO}eJ0NIsfT%?+4iwKqgS@a%p!~w+L z9J@S!cOZ4F6UGPLA`mEW^d=)_^oXp({1W4j2e**hFIMOd%7A zMGbGsNEOCpnMhgnF(a`sQgbY}NO|&1U;1L`v_*uBL?ahlfmIF$Tj2=&?svc2KOKm8 zIFRNoeaB?+0TF`_fB3`7omjm~;K91nw@1=iQG#=*BeQ`+kmijSZ4;bCRGo=L70PvL zSdECWlL6GLoQ#xUM1V{LWTxmXwwFW{Xa&(5AXh*+H2CzUFB8BF@mRqqcy)>m6uKdl z?=5)K!=n~w?T>!+ql6MJ@M-}NG!PK*`2}$U@qq$v6DUZ8L_^JqZ@3+?U;EnE>Vh{# zWI~bDs8KJ5@e?y%SanPP%Ek8v@Y`lVP+j7jd4HhK3)3NV>me+pLso?H%dTK*E(GsQx%QTTlMll zdtSqIw{c`Vncm1i@`vN|MEPT*fo5&7F}jeS5*TjH_t$6M@$|mWZf!nP>vR3p*eU|8ndp4>wNz{@BR}`unPDpnALDFPqi%$DO|a(eC^HSQSG!Fnmf? zHFD~K#*h6`Yv}i%`NWG`gJ<_YW4N7%zMxi%A(mVKpL%&mx;4V z1i(!KaFC@~q@p(p1js5uHhRl+A|nOzkWnL1cI>eNRT=m_h2|-`-@ZoUhavKH| z20=ru6jpS*uP!K2C9jq8P}Y|WA~>f#K%oJy(v1`x3a2-i#sUQf zjVWXC1UzHAq;46XM-da~Z4#5HM8=u=_=p9p#U)b=s<=QGV$5TxOB!J*&3|eLxfmBS zkcKlYja@d8%tnJ~))|5rla=+k`efhoF;W3}V3lPpCvPEWQu0=ZWs+4BOb9V4${8_` zwTY&sniUiyV;uqO4k*_!%Ps3#r%DiETO5jW9CohH>5m;&9=iu8_BlPu$5=tghGI|A z+>wnnOISc!@@T38aA4|73T#6tgnt6cJC!RBvNSklcPp4O7}GThi9Dc*VQL{-jFOZ> z$OtMeci%mWHrN*0pk&%0h=w3>20NV$;>GGZ{yT>X3pjQ;U$fQzokvEAC%ic_;{^Y@ zV->Am(?D>*(zBx7TEb?FRhdrNz>Kd!v7EE0F{T#J)lkh=-?2f;1PjE7SX6! zHxG;DiDh#OK@|(5m6NP~k6y+c*}%~-r5Q4M zBQkkozQ|5$yNO#Fdj~=2P-?jW=aTph&q7@-6-JaF+32#lnYKG6gXibUQP zNZdfgK)B#bU;2{&IPg+|R}6fqKn4gJ2q{1lKM^OPB?oZhPDY%Y|Cwoq4ChR)aRf3L zqixHOP;g9CbAx`cM>(`%7CFU>y0G5&-FKgu03P({B?o{L?{eT74q1q1-WoxAFokS4 zM%>U#O&jzvBkY5$01m0O0$wE0i}-^n!Qe4&C0)z@9aMJY_Xmb1TCTC$LTz+Yt1;~o zAE=Kl___0mne8(>mzVbL+;-k2TlQSE^_;z~?dM*y=C$pdi`Tr?L{=E&rS0dbe994##I+9&lPG zQDxoqpMi)7#|?>JuVc@jy*ZW+5-F&+Ez~9tPa&;pEUNERa1b<%d`-?{3{~WJE1S|0Yk%6I;AMRd% z+!+xfc=>tTuUnqleD392c3&~S_tM1+uGqZyeAju~E_E&LzP!5jUf|ks?nSQN*|lx= zC9b*6XSZjT{7aGefH)yLP#oFahS_ z;7V;=S>0)(ia7AGig{?ErVwNLlB#tJ&`hh8sL};iF{YLRgTUXwyuH=Ntz0cngTDmd zu1X=i6l@@+gg!Bu1FsT*B_*g;d@n6wJB|UeNa0h7e&yrO#1nHHP(?1yqgx6AI#LpC zU{dcK01u%|04aXBPg-G^cf=Xs5$QVq4{uppN(1OX(*-_pV#K9ngv@=)%P{N22TVLK z7y$oGeEyrM3*RS2L97~qz0VBBe_dCtO0 zC<^BW7q{jig7QR=0%YYOXd(sJ;1+658@i*Ap`jse5>@k;bcF5n#UN>kKv8m3mu)K> z3Vf6`$Cwl~G-Kt8e#naf{5yp?5j*xi|M}0~zkfe-Ej|F885NR?AV$P8v<5RJG9Rq; zEMYbidpa$G7#gFji7G6)m10{7^UKhgU?vjN#{wV%tZ}o8%>l_UCb23kNkH$hIl9IS zJD@p&wnA#56VsAhG{z-xz|T8Kj=-M3duZbbU)^#?xi0cThTWG7Z1EAWh4-YGl( zuG} zDUfpTX0Y6*FxtR;b|nf?Vlq<~9AG(UXmXmXCJ(ZNa=6A7=gL!cT{|oj5O0_voddY& z2Z@MQq6Fdt-}uHi7}alfLB_2@=l28(2+sB^V zZQHYV>)z+MHt)W8*~wzh<;Qe6#;$qoI`4{eFSsg)+}WjFj<;2CVBPpYIp}%eU*55O z>)GcY6Elwj`RqNHEN|Z9$2U&aT%NO!jE%qN>3v_=I(%TP z??Ao#hJeF<_rDDO^UT1%u08FOOHJ4P%VVF}()h&o(T{H%`RvaAFPuC4`*WxN+xcf6 z7=FTm!5{Zh!GYnE{`W-RpLF^TJj*)P;7%?^>OQX3ok&-n!><*Y-V^&TrkF$XkA?q*3d5f8ftI_W$V_XI?V0 zc=j{f`NhL$b?RqMwMQF^uBp)p*MyJd)Fw7|=3S4s_Xl`-ygsLXKC>edx11L(19G+! zAMm(MGyrA+&LIa|a6mbCk<(ZX`$wONm4=V3-Q0F&%kVCl?aW4LXDmk~jtZa9?qDB` zV;0v=p?y;cfMX}+EAnSF7eBY*a#U<9g4O&Mn^asEsZCkRKhZ=lGImuNbTmiSp38sW ztLQN)Um_j_#^7Wxh6ai!rqDhG(}smZyu}?wSzZS6@ai0)( zt5%g(0afG$;Y1T$LDL`%DL7maaGuPF@5bLuiO&#=qie zK&B}4^}-F{1Y(R2Aa=xI)(U%=0g*HWF+(D<=uSgkgk$D9@c~tW1EK`xIo~pe8j9k9 z=o;HZAd9Zai>zJi*04CV7(k6nqmX8D93~6iP$oWZd8dYeHViSE zO62uLG{k}4X`Ukl(9xa4GMdH|OAs zsO8fNJ_O|i0ouBS1LT2>zCtzx*$~i0S*g;HKEqXlFfh@P4<-sS(k`=A7{P7m!^A4} z=4fDonLJeFgu=J5@Uj5RCAWR>8+iT4M3 zed7`wDE8de09g2dyefGX+ZI5d#+_~{+=Mi~8Bk-FQ8t3c-H4dOhQ@+5;Vn$_Szd`- zlRPB~Wk7ezS988v+uhnM0n6O#v*M&yN198sDpM6ZsSq6$tX~jP`idbke-vVXg|YOU zi-B!I-f@QIu{GE%0;*yjt$JYMS@@Qxj$}|sLkDUNHQBdspM6J$r3$cY?3LXO*@O#H z>sA%hr%H-K?11jjbc-1&fPfTy8HH-~t9Lx$#I~YPRjI`%OF{$0WG*ZLCf98=KnWQI zT8(m|3e7QwLxQA>uEdqCBQ+%h+Q0@2?5r2&H4!4P81oq2w(IRL;$RPPqi-z>4wNZj zRWeYPBx{|&0w-%P7)N2}GMv5N_m!~L0 zOr+EqC}dJ!lvOc^PMbX%>{y%V&shQI}GN#Xw~ z$dyO=U;N@1y+TkvZ|KPG zhon?WDB3n;Qk}{qH4l$EEKrQ%k>dkHjfs)g)L3V+)?Sz#Zg|UoVsv`CJ~!H)*?P_e z=U#k?_<+MjH$-shw(~CAvGHG@|;=E99N6d| z4Nkj%+tOVVP4R*4doG^5EZ+DJbT=)8#LN88z!2^SA2lKm-v7qlHdSG8i)_b z1E(kP0p4KV9FPHg>;OkGPUF#s1qx;w#wlgzZ6$Un+kss&UYRY=J}BkDaB28;wn82e zkHy|6wF%k^fvuBE0Gv&J2p}0EeaC__;wtMse??t&?m>Y&B`r1O1>IKNyiF9fs z&Y_Pt!oRW|JC~Im*_H&;?yOMW)@<{V>fHtn8L8~x%5jb$hE>UfxU9O+M0asPF%ON5 zfKc#t5nm29(pCI*pSkN%t-gW)C!OLG=#d|VH-#aBNt-DTich6nzp8XWnJAQwl&b|8 z2*Vh|m9BwKNu(hjq>$0HJHtfEZ8mEvl2=Ylt$2XCz<|OkqH*4Ni0FdU_?L1f`4XH8 zZjzDmT*HRW$L9BvC8t8iJ^lb)@sq`NG{F@fkfKS95k%V6T*Y}Z7%+mkGMU#25eN== z5(xIZl;{IFRL4xrMJP{i5tvAtyY(x7#3xnp8PZo^yd(ts=WtP6}#KE(jqdMOHcJ5~x0; z5TH7`GL(d+URvVuakS% ztyyicC}A`L#uvb}vMgjNOdw-9#9m2(HE01^l`^@N0njwm1QGOgEiD97s0$6PGM3-T zf<18->jgVV!13J9!WL!6G54%i-LaWUl&eJqn&uA64k@-68M6@};*5qqaH~8gedX!S z_5{?14QUk-=*9}15CP(9!wgcY*krwvl=wJdF0@i5mB%5`sEdqrOV!e7fKF%zM5|GS zlvzU%WxZfhcjzcV3Xm66W3aTOTt@`lw{M@ka;+F-8>=JdD_{9a8QV7;x<%QF1nr#)ZSfyK9~04TFC1aCz4` zyZ2tUbJvB-yZ5`iy1e83YqsvW@|dpG=ap-`MR3mfS2{RLJ!ki{J^!=6&XFw-?j2!r zNKbs=n3#DK$lK4k&?^KY1A0%IGt^=E?0%mx9|v%F&x_pocYrljajYzL!vfXAUsqx* zdYPQxej+|_*bzBQ#OblYua7PI=bhp9l&fCbGCI8U?x&vg`OWQz#02W6960mG5A;9r z&&E#s)6r9YVe7^lpVl`p(R8)Orkgb%3|ty*Zf$PAVCj;5mu%Z{_3l0Q&b2?ab?#5v zPyS!6CsqG_Fx2-@yYJyn-}lDHzd10l=j^?%xr;BGzTn~ucbxB9+H>Xd-m7+;drfui zxuCkbGbd5Cyg86mtYF*j%Y1&bn&-`FAp&0^nCQ%3x25ykg?epb=TK{Fqc%L=st-&K zx<(qyuEF-KOMtP8F*bbB^l|t8fKz|s1Kef@B`#m~alSo}7a#D@O&lQc0hz=Hq)NDp z<-C7P8Ma!#Kr8fZXEsecuieU~W^3a-WY^<_$OL#q_5x0keNc&AQYx>Uw+3wP#m(a{ z0sffa0PjWW9moW?d2uj9Q!9O;z(wIlN$o^-;jWWXJ%6zWNx3v!7rvIfRHqn&=2k19 z&`u3(+1k3*FcAiR4zf6p=Y~EsX$T^fld^^gMj~8Mf+`Ias!|@}@t~APaCB6;1u${K z)sbQt8=;9w&J{AVtQN{b>7kQRpXXmsS7tbK%IWxM`L@!7=T~a0@d?e)< zlSjX>3Nug~Ck$f-f`(@DI`IL)0W+U7nL{_PLy!8UGy_K`R6!3qMKffL4$4^E=0tqpAon=Ify2cIs-Qp**aGNKyv6XvOP3lc<7FtN z$}^+r-~2Qp=CFBg&Bj2*&g1~A)&#a{j8sew9GF?oTBV`YVL3290ShE6#jTYBWK00- z)I8DF!ufyf-3gRmMYTWr2IZ;<4uBI=hEC6&c^*3H^qB6<0|CN}0*c}+>K{P`1QkTR zsGuMq0*WBWEQ1I#L*_YQ5?$VP-~YY)zwiC8_c|ctea`Qj9NR!3aPt>ji@kbP*Qryr zYuBz_d+*w(&iQEwp}v5O?qCkU4_g!wbHf&711=?FtcDUGW0^-umJ2f(iYU-`3vZK> z{T)STPX|>ro{Y=v)THv+fhN^aXecjr8sxf$zpQ{Bm&RUd3>oxju3UyjGBhK_Ory?P z$nZ<{Ryg|CxyaOD8XoF2UF#yugg+WJoWx{(83IP>3zL<&WL4>H+c9?5#*_9|&6LrH zbOK=@7|{li87rDX%OvVZP4iMtR!O{S-9roZ5+kqKoJ#n4>r79DPOA z$RzI;GEyfRrVJWD0u|(h5E&Q>~T0^|v#x#JWC;5RO2SEmfIp`p$G+6Lb#2t#uO!nmBy zy6(E`92>Ba_k5q$wUGxhEJ^FNz`1t0!b(|7E(c<#FR(@86XTM%L2heoWxS}1MFocjL3Y+@cqaG z{YLL4-AVy&nG;JI~mAMNUTfA_48>PGQ_aZ}qmx@Na^%xvj7 zW_;&SW2erVJnevO?Po;~p7-y0H^mBVoNa8KjraI_Y)f}OPH2<6tzDaKOTq%#!q}vb z9M|gM{D4*U~d?)}s0C9YO@(t=&(E;D0sjzBxWnUG;QB)n6K`)(#u?P<6H7Kxb>$ z$eDA7OqA2nzTL!PI_lZR`KG{c6V#Y?_?- zK>uL__HEwpA1FS+^|Md6-}i7$G(b!sc9u=2RF!b56Gl+2j1S0YXq#_?FY}Uu11hJX zRKHvZv0tW^hUYEt?&y5p0s~z-ehdUxgipd`%Sct@W0VezTk5cPJTwL|=8^#whi9D` zT*g=MoXKD;m=8U&r2I*ESQ*{LgOcGV*tl`7xKd~+Jd$C>~2&; z9weGWg8!ycUqHsCLf*0^Y~>oYyb^o!_{JzvqTFQwc}nE9RV_7D;6lsm2*_v%$|e~O z%$gflCdg%IP))g3@xT?D0?p&7z`9tnfH_-}<~DUswtyGzC9n9D+S+%4wWuUP#}bn4I%`r;;7}Q z)+ii;2Nl@^Q6uHXpY|((G6XaLwWjwdH>ydYI!d&P%AzqS5Gm<}6WP(ylnG8E3C+YZ zl4Axl=-Gc>`F49ckqdv^PJn|ix=VFAGbn|gtQrAwDm$aeQG6ERRhFu_h=+`y{}cieG@ zjE3^|{*EOGCdjyS4nceXHgL~9_b3tj6G>j5rL(Fgh->^$C zL5M&o24}FSFR%94V~;33DsC(7x9!Upj}O!h7~Whvrh53W{hAt2dixuG(mLiltz$p* z&fWdGS(~2$nL4+pee)O3#`pA2=$$^PW41?)Q@R$kb{`;}+&O=0&jLFOsV&Cj_L&_$ z^V_>-9=PbJ1qU3~I<=>zeRfCh!W<9ivP3qQZoA(!rPaIU9r*|(9!N_@OFGozBHhWTgZ+q|DkT<1w(S+ix z^~{!Ovs$Lj@i~QwopUC2Z9d_Tm|{>BJX_M@%!7xjns5H4fXdeq(SVq~RQ27NmK6Gx z0iS*ITDRu@`o;lLvbnrt-o&;!?Y#%#=fw6|<*mG!fB-=N-18BG39U15GEaL^)z*7} ziO|Gd?-vM46lXAAxsC8^T|X}e$f|j%tsm)cP{YUpwZkrWbJcyLYyar{K*KJ+J@}{Q zoi^3_1;d@cH@5X7yS<~yXD#c7*VhhfY8Y8tH_YG2@!rHaWNO#K$?fwGojU0KGl%`I z@y-ADu(xj-@Pd5H_ zAJp41Z(7@&@iPt_*;OnSi@N8yYHG+V%I82Gd%U&<2Yb|gAuP% zzs3R;It{@<)Zu+G-16xKVSty#If;jc5}*}8gS&14^XF5^mZt2ky5DmPOZmpruUyNqufw}dN&^PCL< z0fz=XSUK~|Gx-2~58)dA4@Z%&q8dNSBw~e$Mmb`*g5hmrWAP1VDfTKsIWY*Sx-*-6 zt#n5c@Y7sy^EiRTEO7w)L>ZujYy+MHfwzm~e!y&)I)&3H3bCu4YR=H4kjM3P7yrW< zOp^~udV~SUz{bNw0Qw_W+|Kx-21U$NP%V&Y#RSuY5BN+fun}^^m?lyopUV2u7AxS_ zmubR{xKFy^0~=8~(zT)4n=8-m+a++x%K{2PoaEHe5XaPUH&dK)m&O8g1g%?{3p4NW)zKVInAHqn3R9w?YVyh}ofl4i_(PVU(ovX6mT)`npToVEUw%37k>{D<0Dsa^ zSgtG?2wTvDs}UG!WJY(inTe*~s4{8a5P{1mwC7ci+gV7HrKZeF@jtiinf~4HJU2v; z$iP;L-7xVGKTWI2B7~Vlvk4+sCfY=pk!TMxY_SksDH*1SOsgrgcws23rGmeH3=s%!vA(!Xaz)5X#cwmr6p)N?NE&y!g&^($WQxLh5 z_7%L0i(Q6Lzs4n)|K%@#S(L!r69NT3Y3M9~aKSCN+~T7Ijt~e4*x*ZDDii?_zqQ%_ z=}&*^`~bM>s;jhes6gt{aRMO%_0!h-Vgd*%)9QQ!J))d=kOXsWiZel`#w=6s=E5>J z3gg8V%*Qt%BUXUzd^|i6<#3k(ymX!V;_(5&0Y8|&e{<8mjSVO7`KGI;j{Vl;(I41z z*KNfII%XVL>|whWv~Z@7MD_W`XFril+sn0Zk9w0WJq3!K;~4!2Z< zztyts6CW5@e8Qp#5r_}?bN<0!ef^l)T2Cq+c^b6m&}Jcmf2{ZbuaA=)&zU2g&6GWq zyh88)t@H;4E>m*eq7SB}1TuFDGAkiWOgx zbz}JAR=EY3LS`{GS6;@Rkp+pNl(HQn%&c&1D?`aL@`AFbV|N%MCJFFHxB)U;BM|?J zM+7*Wyag4s;yC~n6e3==cwY)#YR>;btwNW4F!XZ~0r!uOq<5o`0kPNIB(2~v@OWsP zXATu&f*b)5Dp8ZWqFh71idOtFDbN>^xKBo;Q@yC8Au=E_UN|*`L=&Sx749iFC{1*& zvWDub69+p;V9wY%PK-6fjTl~{yAVQK&H`6N-Z0H0W6go&HF?9)AxuZaogS1|!ibwe z9YMks;c7DI<^?u{!O!L6t#J=*K=f!(=)qo;8wc z!GV+{FAkQN6cGUl!c!bzYxCYx)sfOy^E8_>H#bK$OX!*q!}T>z~h*W55=V9p**hFhyUyaHTe zZgA;2yNsjmmYP6DLm9k+M_b%>iQ2GTx#li41S)4PbRm-xg)&enDIImKUr{&lV+&(kBS)vH%~R`tUl{?J0Ub_`#S;XlSg zE5#*9fLn%dq7xqw;e0JVu$8O)+~9z)02RFzQ2R^(PMT|iZN8+D1hN6lK5j=QO{EoW z60H*ECoyJ14^_CghGXS)VrNmwqWqU z5VZ0sm%>bM$f%59tssXAa;Y8_YA8+bo4e^M0ug$lf&%)*0nEe-DYjq^z?=-$q!^}A z1DRZ=B+4A;i&as1ISccxH6W9`ltP0X&WuradNEn_m0MVcLZqTcr!LV<@!G3?>QkSx zr(<3jblfmNePMnSQAI!s384(pmKhInlLd3AN=A36k^*D{ms&;bXQh+960G+?G*XmR zLIKu3aDG6bz$USTzHtLJBfS~|L;@MQt1l3B_^FrZbBY(cFafVjE@j2>zzVJfy#!b> zn^Rs5hS=Rp89^0ffPFV_M7fPTslZZ9Q>clyc@A#Z53O=LdQI?F(13{)cBpKHKc)*C zVV;aszbq;I(82>Waj6Sl5c>!fJOD!GRga~FlS304(J~^lleI?n2($WzrWe{+(1SKU z=bUrA4QeCrLBAIe?DriB5G#-h2zaO9vdb>>^#EU#QpZaQGT_1sFJ$_?b|IsJ5W&qi z-|YN=$bbU|@=Dx-pE#i(d8XcU(<+%4Y3vk9KqT_4DO@#nJgIQK_^C~d3g@L*q{O^a zdK8^>yF<7y9v^6|A5m8`bic+S{=WX!s@o?vUNW)f#67A8H4JNM>uGOW(AlwYRPT(j zGredqx4pCYGTy|gGwn=0yq304UudJ6r`}5ZUg2q9Id|o{Cl{~SuwwP2_uRi^?t$;M zv9-M|HoTSZr>Wd0K2Ss$wwxa*HYU&A(Di*%Up}2L&ks!PoaZmQ`#hu1u19d-#@l~& z(ihHbpElcD40c0PdOUnz;1i3*$$_p}GKml5SK)#o1KB*B$}cZux4z@f59C|%fBg-J zoEgA6ffu0w40Lh;!G5^VXBnJ-XziZm0|?_McXgn=b=v4Dz2nE|&(u{tE*w8|(eTcB$B(T&Y1-IL{ods7nVPCi^;MhR zS+!~ZoiFJb^`#;2IpL&_{%ZMs4?nv0t`&<{uiCI`<@!ffJbJ^e_q5KKHDYq>#Ljkq zqbGDYKOk5~YzR*g?(11VqAUmJ2ezEy8CG3Cw61A9})PfI8kCOxTiFN_37=MF@z^`Df;y%g5DU!xjW5s})QtlJ`#f|`ei#&V5STimx zn#h2Be6!d`g=_~q!q~~{T`x=_VCw-_3b0B%6F!LyV&c!RNAkQf{tS>Wy_%G09w#bp zn+h`VA5uXHVAN2>K%-d&qsX|p8IY?G0_2sb02D$Vs^s0$H3~zLE^tXT4H2Lw%DG!o zmx$L;P1S(5VVw#oSI6)x{j~5WHCGKu3SH_&k8HHcrT|GYh69Q6Akn)^-D!fQj5Q|n zCFG$pK(2@xad^Np2+vkT1~>_x5jac0+fgmpv=TP}JOr}?8~2h+z_@eg_S&oXTBZ!= zjc=y+2mnsPVBUE?W-|kk8VIM6JIBYfbuBT7dfDS7J^-h3cX=Sjh=E!G?$OkOIlM8mQ~zJxf* zsjnAkQv$h+hM~d01L^=o5;M~gRwRR0Sy>sKfoD03=GkZn7F5 zD-VebNRbVq#-rY)rM8zhK)k{_i;-xNZD3|GKT?z(mf1JC<{I-Y7P3luBe52d`6bdy zqPQ$!Ag`vo^q~nYAvLuHSz=OcEd;kzgDuO{2~HU6mY5;y1^;*A?1oTNIerl=i5E;LaE=0c~L z^bDk=M|nvYN?b-fR7MqD0UN1&sHi_ zhw!MTj&fUCY_vyqH<1L^P@KUQ*jCq`SGhb$2qI{eLuj+i)JjW$fkxGZ_&`BT1wtN~ zB&dXw?3q@RZpyG4=YdH#H6)DykWw|Zf?Rh9pne501cglc=Rf~>UYroFS1OowF@IqM zMk( zURV}H;x>{DP5lG`bOf+2Ap%TBfUXf~mT6lm?xpD57mp7J4m8va_x%C!fwOn3x^;a0 z#S;d-KzzVv-<$7_3S^rvwM%vBtg?)a?b-i);rhpaw|vdx;scK?U32geA9O0-YxtGt zl{39!U~g+zfd_ye9e^W#_FcJ1Pg%O2Xe#-HGTzr`ybyZeC^mt1|#_pbQyML)jc`#-w; z@}Jyz@nzRsc z9aKBCrf%4)AwKW|4($uvicgpdi5MhY5Z9NZ2wp}sV5=su>4LYwlsKz)?z!i3FvJJg zDMpGD!X(*|#Wu0I3QJE?p-cV}i=31dQ<({iX=e3U4Ten0&@j_{7*>&yRmgS#d1jIS z!`*_g;vW^iXU8T=SxFhb3P6bx)exYNC%{or0@zSqm<&_Jyu!m(VAM2MAD|pznxN1n zRE8E(`Bxc~OJsx+Bhm|;{5sfF29QhBsT4{2Wg^vqQ*%@S{c0$qFC?Ks210G&)Q}Tp zm@34Xan~(mOYsdV7*s$c_fNTA3`Z~0zL?=OO-!>oSZyFK6~b>sCXs*0Wb<>(h<;(l zYOV#3LLoQCo2s58*Z|6KoK%bd>_LO0hK?qR9zdd@!4eW%5|8*D0I;>UuV?GIg*w$2 z-`nJJ#pAEym4O?eVa8EJ6&j4f{*iYf8X!0Ta*)6!Z1yrE}YaZg!Z}>O^@L68h zq`llhaG!LlP%B-aM+RH6E0;p9Q<#l9V~lepnPYMbwcDBuXG8 z+iJ==Xq!S?Z8^4N)F4Yw1!@ZS zDs0{y%q*8-7GoO1qdYoIWt=x~fF6q%Le)&Ga?CLnd@x2P)s9T;mom2pv?HVBX?1rY zvGyqhGD9|`)Db*7g~t$p?og;&LGc!vU79=e&~G8zgt}CL>_y8FGeVe4C6(5jqX%y3 zG$8_ND#9r(_xSS4OL*=jY6I%HOHT%<%`&{8#4XigKG1+a7-&$WI?5TZ%p-P@lWhMf zE_Tp1)&T%fP;QSMG>)-%Hr+fE%mnV*)k^Jr?Q;bO)X`9L`+cAUXhm(h6b*1`=bjRo z+|8vU1Qcu~Fi;4jjEN(nggKI#wT5PLk{Kyw$wZhS{5KI1iL8apexbV$ItUGjL>{|O z9tgYz1+#%m<@Jt2qqhAQA7K3*26JXWd;rK_bkRl5B#<8jTO%mZsY%3MOb(a}3P&N@ zEDD$n1lj~E!a8YRAeJH((855~?(q14A7`&=9yYLf?7p?bzx?K^TPDFAbeT{9Mb;U4;uBAy{c}Q z-0*B&)zg0Bu>YGj4cPS$H9P;Y_H|c{+~rHVS54agZBqv9+3~LaUGEt<{hfnmy{GQb z!NZRmH|dO_&1a7u@!S30_CE)`Ym=yg&le1QlfR`S2Rzj^>Xy5%UH{bbb?erxU%!6o z>U&qNe{lVhm5;4hyJpSrmMwd7^>3b9`q-ntUcLIMHEWivdVJ;j-$>^jbhJnv`6)t7 z(-*c*n`>1%pX1MIhnm_U-Y{xv81}in-+XHSx7XB;8B{a6dBEtQgT^IxF|c8rzy3|b z{MFVE_m{U4{yygicy#=_?R0Kat>Ov(wMpM+YRTK+b0)Xi=D+MqirNN^lW^K;rwI<& z0x&MLJ%hrwvas=plJZY@M};#{*)lU#aX#4y5JRj2|4MU)4=`cz+@#DCkcr#IeleG< zTRa~apyjbZ%NvnG$fmP~oFcbWV=N5Tq-_LO5gEMGd z>eSHGHxQTcf)uJCW&SuD?kd+1k`yA+t+-MgEq#So=t((Z;xW2~V3-+nZK2Xup|&8^ z5D7otqJ%+LEnXIE8cMldY69+-TLBzUANRNxm>lFN#QgMVBH%O;@elRF++)7WxF}o~ z)9oEb+dz*S7G{k&8atv~KKzu-yz+q7&aZn>Ls+r$- zBkCg_6EGxXnp^0ylKT}`wMp!nq2(? zlN&s?>X7iC^~E*f({f^U#6<_`SE1frhA?Tl{m)Kc2{D5KC_xzh7?kdGqy$b#xNthk zUA@O?Cv51!{E&@QtP2luiKrNY^$5rVH&|GJ>*#oi$4`7k2UbbQ>8GFW8JS!BN#TOE zYu7GczT7vjC=HWNv~U#-QiH`$W06M#^7JmxpBEnx7DzxKrwBX;-zq-vQnlq)ssW}hIDu56TKNCFWe0OZ8NA)>@pYH0v7 zPK--QAP@5HT02CYR79jTp;)q<udT{tgP;;Z>WeVQ z6Ggp*B&!BM4rDZekkzo$p;F-2JIu=6wFZGp8ZW&|3yV@YDj-c^ATn2Kh%u|vioT3Bb$(DeOLU;+ZveXfEbDgz@;kb?YMuDptkxLrYK+FX}Qqzjl*20PH zhCh)3IE~cQ)Akv)HG)o58LxP+lVDd}b(N<8RJtQ!*I$3V62F9Kyhv497sN)tF_C@e ziy#pXWLP!Um*9Y5;t!D%NC8+>VO7B^mw1bZ;xG&WRm+2YDGK++&ky*0c7OdEMu`uc z{nn~GrVPGlYW2tV+Gc#9t!IuC@6HL>-cIeY&z<85xZpr>B%pHE-O=UGeEy6dUwiWf zm;89q5yuG*Olq4|RPOeszc7Ng=I2!+5BWY}&JXO!_<(JW5Wy*@e|gQLPcC1zcGcPq zE7m^#{Y$T$b-_&~om3J(0aewXVf>~>LY)j<=Q7fl*+`0xowj-2$q zp)LMSnB4Y>j%oiqaol&?ru=)uzW$2fK=I>-Z+y1@8&;03dHTrNKfU?#pWJY%D5Vok zS6_eW4Yyu-+qF0PyY9NX{atb64gP+9_0_jrb=6OPcH2$2-*@>{H;E6Bp9yU~89Kl6 zu8QS3YpeLc;HD85jBmVfLetP;t@RD#2M-)Gymo@)M$LZ2^HmTZ;M#5F$8PIV&9bs+ zKtSb`OSy|LI~4G|4QXk1nL}l(=#V+nK&vwiEDN&&VqcglCMIr@LRN`wVyBp0CQOO? zd=;jRsftS(hmC&~<5e2LID0B*uc{$;%Oxb)^Xf%+43jkFoJ?+#a+#P*wm!Z}ZgFq4 z)dWdEA*y0Sp+zdfVAI4X;{6&zM&z#MX()wRTenn@feHqwGEAB5I+4L{GTbtnXsBEr zc|2jw-2&>s02ShOqyi#AC@e{p3AI?KG9((>3_|6W`ZBQTBL15^?~!AGnPE7DXvSnE zdU02G#+zXpJ3jLt_(hp1P9racy>?>UM<;ldTmoXiY2iFro*oc8LoPnR=i~rr3!6Ql z_<+cOeLb+j=Q%)b1`W_;K^w;&lZ_(2rHr=WfMFVr(UCgM6K8;s^)(=21r(xK4E>uV3Xj#!=+2a%^;DATl_tyEs3*P=&b_Co`LI zt|mM>f=Vxl(NSa|v=J@C$M*Pj2+*D0RU@?8k`PGrVvM|5$o0jWO<&SDz`QSaflGCe zhZ|B(>TR>0d#U+CnkW3QP-2|6(rJperjHac@HEFd88 zrZ+v$`2o5vif&uFaeK;3et>ObNjmRw-F&1kOKXKSHkrE+d zL%R6hkuf4<7R&`fjpnp=EJ*^KRU;oD!!jg9N>t1y(1gHSI9g>ZP3*G-(u&T>?mIf% zCHc4f(~E{KHB{Lu&PqfHfwVNTB;5^II~ESeBFZ+0e8Nwgkz3VZgBhr!uhgMxh_pID z36N0|a2JN)kyfO>c=elA5()^ZB~F(q#0Miqj9cM}OT#htl2K`;+(2kEn${|dRib1- zEP_$XkbJYi99RXaMOkSWRu@Zj3-skumaRGgy@x7(SR5P z8xB@utobEcq{Vg~m+YD;Iy+gK5Z_om0fAgPKY+2yv-!=I-;OxqM4~8C_R%FtqY`b; z6B(da0VGmgz+XlQRG?HLF>%_G^HL_wHDLo*D~6jCLS@ncwxeH3IdLXMHR}QmD1j;q zhg29~);p;qLQ2qv0Q+=70I^@E!hA-?YXu^`6uZwA3K|$GhOiFAo`mQT-^`tfF$F-z zC4RcAj!roe&|(f22@x2t!7353GC--px*PCJfvVl%@qqz@2k*~isvYCu=6m;l$5%Ti zeY$<@{C;~@H;lHgpJ-FxGk=_bK=0hH)`PmI`bb)@x8N6gS>*j6J?y!1n-W?XdF$m6P^)`aj7}{`GkA z!LI1&f;eoMG3Z? zKq$Tsu=&rACrq5T8{gWs=&0j<{>%GTZg^4z;QCwceBTE?dcdNi z4mt9;MMoTa(BVfPa?~-09RA+pPx$y<_uRj1<(f0UdEvOW;vEeLH-CkoYtD#qZLggl z*wzmHl`U_m9bI2Ds{h~ye?Ig#sCx9*-oDc<6Pq>(4%GSh!0ylV-*wZ#T{aDR!?S*@ zuz!{B5^QR$`crMy)Adzo*PjCx3scd%YtEt48gydi0*} zKXB@?2TVD5%F&Bj1++itr+CIMn9_Pk*SzVoW>1?wqx-;lGY^~HJ#XQxgJ&%`Xy*I_ zo$&E-LWh5Z_#%_u3@TnU@G4EmEXM$RUZA0Fm>)N6svkOR@Th;O-QC}$`mrPX4XNut zs<~$TfZD-6PO@L)q~fpg&4K>SL;U3w!QbKhK-@Wg9oQb{cB?vNa3JN7ynaUq2T%w( zyCY6+pZJY$e8Yo6YMia1`9b_8Hi%!x%CK4SSmfg!F;$!gg{%)3OMMweiq&9Z_-yjr zHg=Pj;!+(IxL7Qj%WPM32{|7o9+d84%CpsC4f!YX@nQI!z@=30@oLyjbu>pU+5oCt zvW%=G!rTR#=p|NF9VITI1#TskVV8qS2|P;RPg|Evxw{&M28PmIu2g)z(8CFVBtDp- zAwy-=*m~96(tBt_o)XwXCsHwlyC9zr|^ z$d0t&9?V8(L@-M+P))O=Jky#Iw~RNF!fA}VD2>Nxf=ryg^yn_n2N}E|6}Xz{QJ9&H z=MOow@(N{io%uqWft#!d6#`HK%%eJ3XIwnkV2+oSF7y(T6k;YHIDrCrdp-GFX5Z&- zKp{FIBn*1gFBT!d$~9A*UQ@|U<(u(lxqS8u&I17NlK7H<#qP8xN72F;4l?QD08*Z? zCZxzBg(_Ym`ni09x(`46uww%bmT)Y2n7Y6{{J|xZAjw!aLEW3T-R@A+R!_Z(&f2VyvA`#@<&T;hhsLIxt7 zc#FxA9KivA&yg{=D1oeft1l{rsE|p^#GDeChz$V-1l39*w;&a?N*#CAcNfS2;z4Op z3navJGNF zk^)FzR<4@SWn82klTA0-BaI}42-!!AlhbcD?-*;(3ywQ(^PZPpRgUK@CgGG4DgqX< z)JhWpft)=MXK)UI22Q|1%mLU(2TYj>(wF9tWH}J9NS)P+?Xggp96&j?84E$U}5{ z<}TAznTO)Tr{)&{BpF(~66i2qBg)X^1qApN#>MMX0Z)`*i<)Aa^dd#~lC)!0)pO1p z?7Z`!x@KP<^J{Cx53W_>10D|gTl9|IJ~gcFnBg@u-?RI+;sdRnGX)2(z44CK8=m^* zeap`L+IbH1iwSIbqCMB8JxH-N_F=sq#|Gy66DTPDy6wt+f?#&>ioxdJH~ep(A9zlD zKor8?Pk(lU-SqO6D_1#Fy==Moz{>TH-F(Mg3l2S|V@C1HzsII+JqP;LfC(LQTYC?D zrQ!p}f9%u0xcA{lR<2*Z?(xg6{Mqz52l_1Ji>F&4a5fo2iA{&*CV%G zw&B6+H~jK9YwvjSuDjOWd+)|OH{5%}(pwkb_u$e89)9?~H4pr1<+2A>F1~l!uO3`{ z-y_SubKwrhILU<}Kst6Q_4-llp2O32QD)E8gLq`9$de`68>^8n;)TsVL8>`0- zt)C<~@M?$;aOz6G_eFi(!~{zBxNI2bnWI=bkn#ZXKrUZK%2%iSnJ`ZSeQL~CYp8MN zk~abv7q&*q0J&s|0NcTAWmm!g@hcQ+!ZxvMye}puz8N#hI}=) z4Hd=#lYx-c(;ZMj32fTNQmfBFQi36IHH`%s=!_r8f+JfUox*9nu*suDD}8ay)C>|d zKnv7i@!gfzg|7Jt+NPCMiCHkB!bR@s(GZ3ZBZEi~R$!n!ABho12^v&J6&hgBQCvPW zxSPHV(-8CyzxlFBbY{Ruiaac~k@VDt7aXv!2lgqp_RKxk3x3V9MR)RX zUEtJ8IWjUd!{l!O9vWvuTNr}Sr9xC`9tNUHUW!h5%mO^pVs0uy4?|WG=LcIzi0QyC z&E1kQUJXGC$x>V_OaO6!b&6e5RB=j?!R_RMVxUX)m8&4*mcsZ&W>a&8$b;X&Id~+T zk7v9QzYwYG&@5y2H6fFR31_@$T?Z_~c)a*&1DIHW5@6GZ^C^+{>Ne7al{dJ^t?3=A=lJS!Gj?O1H5nw%Hg+ zm6))6Yyow>=bn4o_(Xt7k$glV;(^s>!PHoNRDnq}Q)JT8Fw2&qIVCL?i@Bx~l)DSa zunJja@<4@BFe+=V*s%hI*%yc-(F`TQT%czZ1#$__@_637A z3iP8~HFT;bkB#&UCP#T%(KLg!v^Z1*#pSL-3m>Sg1ZbF6Dk}t5oOK7>g;|gKMTW6U z(Wb<#nNWDlxK)-ZR*spBtS}%WPFQ*7rr3)FYP>56z!=XeSsN4l~T2{Kn4ob}?lM)(WD?mRWs1yh=qJVsKNb0LY>$+8` z^*7bZ`s(Ni4J9B(N!lisU{RDnS<$WmcXbz<4b}j00Fx^MTbvd%(S%SafM^l32wTEd zriLUCGv!n+v1C1orG2rv5Sd{~O#$8OSf*XMsS%QOs6z?J9J!^CicX-w_8A6!>BzK_ zHn^_dVxeR5V`%IY@xVY+fLA4-Gfh&r5MV9q!jQ!`N?XI+7|5~59!u(2B0Mn= z5Efx0LFG2kcsx}pjVIj>c=7iO`VStuZ$ndk_2|Z$v30eLwIV=+Mm5$rY{R>oJ)yg& zrFX{U?nP6k9g?s7jh)o~-HR??wf@%+FI%@_-Bb5Iyn4<-M~MkIjbDip*t#Cz+xvDO zJ#*~7dp(r2^_W_D{l8;|uj&aA%-*5z7c6M)@-u~%Zx43Q^Rcz5&MNfI{nh>VFBKeE zQ?<31rKl3!yh}*yAq3+tvu?3Cl<7I7O!=b?{o|qHTkvpz_xbiuWWhW_&{yl zxavV$&JXzUf@0&pTk+Tb^_%*=?k~l+3Pk|kT>R}VeaqAJI|&pNCk+Nw{qLro|6QzL zpDHyIG5F8=UH+@#pEezF$fh$+UA1D>`nBso@vavi^xj);{LTgyq?loF7PPIam~%f16-Se8BmE|2eSgf7Mov_EJGjb@3sE=Fv4x zgMCY(v1XjV!8ODD<<}W}a@F78=llRQ7}xGaBLi{&q+8WYtUx(Dum$?&x0Joef1W38 ztddOnqL$&&9Yb%k;Jn$TmtN`t1bt5PGmh*IzamZ%4WAO`gK1#4m?YKQ<)TO#$`~e| z7}LOoV;xvJ79o#vm>$LpsLbJkndbxa!p!lD;DkBO5?@FmLytDbG0u_-ak}EJaBP@P zB`~n*%q6p>P&N3Gm&#C~SxsrYEF~F&G8992>c8Q*Y; zrxgE$gMnIrJd~h{$<`?h>O-y&q>e%eOO~pJ219^NO>E)TDv2AWCLWpsogz%-c$n(z z3vklZgwrkLp~ocx^s7XtYT|%G?vT4^&_qXoGoXTuiDT$({hS%_#z7u=u>NM#Ei~}B z?C5RhZR!C-50vn=U{gU~p+_Du7-%4vX+}_`_jFxwq4Jf&N|>QILLd{j5D&u{#KQ&; zCg74OFn4AFxP(x-zEn_7mLeN&X@xmJCKK(hi7>z6fUXUnGl>|UA^(RX6yFjJJR%;c z5+hR0kQJgzp@*{sGRXCw5s?Q>hTQDfm{iKQdqruwZj8mE)Z%k7Tm+S%$nxFrLmwV3&GG7hCK8; zR!Uk#0}>Xn&y{hUpl^I&E7kWhE=&C>L(y%A=lM!jp^!^JE!awl)6c+IVg)b+$H*bZ z5*YGn7VwrZkd}yqSsh=gC`_5V^jis00xF~xbrGeFX?l+uF%~36)I*rOM`bEY*>Lj>-cpX30OLMF|QnUb0yGHKgu zEtmo_$y_>S;7PheS*E~5m=0TSr>z{^l1ZG_K~1rD;E}zstwJ>g4a5_8VyrN1L|R}+ z*9fqdE4F&``N>ETF(X}}1Z`#+J*0)eTNiz$LM*~B8u0G&LV?JD^MO*qfuH~U=e{wE zJi!5LSzo3#tP6`U2Pnb$Fdw&dY9Z*wkj0=_7R{LzLWp=$$KqIwR$^AJfh1O-30ohX zOZ9EH^4+fZfDl1bEpLBpeO;43@d1A|H6#5>)#T|jCr;}fH+6v!f$!uOzd_L6d%-0? z^790bEMMv?v>-m?GdH_yM~nw!q~ z&i7{?aJWPMJL>$v)Nc5T;6UXy0WS;8b$DRTK}X#G@WVx1;BVstzE$Yce-ABR_rZ^y zCpgNr|X%IT9krwavi&zL`EV*4qlo#i(oSFC+PC}v8>^r;;^r=4-un)Q#~eeVPF z4n5BM1@?5v&Y2D09~d^K^|koGD;o#cR_`wmA1ICx4BYM60dFqi16~}c-MNSl?ES_~ z`|i4FpWQa~d)r?ccK)L}{;I3~bI30L(fqpN*9yc3L=yT{{YUNVgb0=nZur;k_A^dD z<-^}R>%C`u;ftR+^GlyQ>yu}GeaXWV&&t% z-Ol(xeeF>17dSs4KJaffRbw0}sKf`Vn?_YPG!67R>_1d|U|TLR7jY}s@nu}{KY5$f zavV|0S$7bAJ7UJ#*!|K3lu$7`eJ`Ma#D98kwHvcJ2bllA;YCQ zJc>9N`ZWqE%$lgC7j@!BO0`N8w;)ta1@tQiGHAproyH9_WWKbLa7+crVGdOg@|0L@ z!&l;xiHFm8)dX<`Lmq@GAW!O+YQ-={jlwj3zS(Eor9AM=pv=)nAI<$h7)Oh7uS5lk zM4$l3c(l!h;Fzfc6;{BEhdd~h8=&rx2M~sg)IoqfFNER)wmdL!KlpVjz<{t~rYn!q z_&ml=2n`=+q@>798LXNG^%c;2q(w%j+Gcc!NfSKBid5D+dg2r6R0a>@VWwOmUhzvq zm5kwYlVAXu*7S&VMjElo!igJ6wq2rA@0N)L0&o&xC?SwC@F3MFWN;~D=ocmOKpr3l z87^he$(wa4MU^y;uGHNShBL;l3t%G9K)_Ii9&E%<;-p;HYLcZ)jp67k4mM&`=FTNv zLbotY_{i?nQ*SY)G8(W|aDWynx4_%d zf!k9~Po|m-Ew|nN=POf@DlP%FU@NUoU8gWn0)xUp%*1U<(rS{ia1tLN0NDyDCsF2? z1d=`TNH`;n3L_O+NA4;Qkjw~1p7*)TT^W*-`dNt#1WC395I9PFAeGC$QdukIOaqAQ zrEBykfdp6=)^fT)MtV#`f-0j#WoAWXLK{<(?U~V zcI7{)fM@qEeIi(ev(G;JYhU}C?Y!v|-Vtgb(vgA4Eiuq_goH{b#-x#yS{f!=Wsa8B zff!^!V&f09M?bzTaMMjU`3|9&fMWxIO26^O8=Vytpb*Uvk+5nAB#z-ZO(J+grO@8g zi%Xy!$1vG?(W8MonXpxG04rz)YJu(G3R;W_>sgpC74jLPZK=NPR=Y1AAK1TPX!Vd$ z&GjQ2YKHZ19yMU_=<52mK@IH?{I_CK$caQ${e%yyY<(-1!vjctN151{#@(6zAnvD-HS?Nvx&!2wQxR%bg?%Bc@ z4m?choZC75z+wyUg$2LB=(id>=lI)U@qx;>2=bJ+clLoly81@H|G43?-`;lj10VS4 zi4&$y^Fszj=)kW+w9Po@TNiD3;$K&+{q@z?-8x}Px3>%~{qfaHR;{`DjywJGf(S-V zhQAgcc&@a(+Dgdk!1~RidLG4|?6E`ZxTd zb+7A2z44-{dtB1K*Uv^b-!N|I^<#%zJF4mWmb#l-8yAnNTQa)-4>f!Lv38&TYTW7f z&Ju_lcnzVs>JPP54>j$5*TA<=Yn$BFI%#zKyx~)3jqjX0Vsh`)iQVljJ>w^|PigJ> z=O6xHny{GV!xC#@v+@1YXueBREX0h!^Mg)deD$dB*`cYLggT+ zr0#N5lxS{T1|>x*&SM%kK)*mHeklrpUi2G4TO1o{=#)Zhm`0~x&85gTc5R`OVj!wy z!b}z)c^JaAVA)NdJp${`?c@OP9AM)+*_b>xIH1JV&nW_T(U74TjzOVQEB;0tHiV%B zZEhjMT@Ing%Cj+W%&FNyRfLN0U_!>lBO-XX#Bc@ zC8&apIBd#Di0Q*&tmeSuvxzVZM1|N8Eo+2kE)`uix#rHgAbWj5iM!GE+ljYZ^fla)QG+i6V{=` zvQ;z7p8#0$@|viF6*iK#X$}QBtnL}K?Vd}<7jy8(0S4hjd>J(KgmCJlC(^jerkV{>Jl4PQja^2)2PzWUm0uXViNV|{T~ zmp}Q*Ps9wo>8U#YRym>oCSCelQa3;^;#4ZnkkhZ52*ERg5;dKXn7140w}{mys3 z^TQwh@TZlJfm7qYHgL~9_c%5nIN%2jb*(S4iv$M@$G9+@Xa(pKl9nhzN=y)zVp=J6 zx-(d39vmLP0U{?P#pOeirHVh+tR+cfpg($pw~(*^jkg2i1N+tu9?(3Zv37XFFfpt@x>PJtR)HAuew`;a{lMkQLd6;ir`?HPpckBtDJm=dNo^j53UgsY> zWtuPkG29EjAC%%2*56}JH58nI!j}#BYXBMACyYgqZtXTi#Bda&~yYv2KJ#!cB z*!aNIX$un{@aW%O`*Wv#Rd68jft4$LgrETL7x*H9WT5yA;Piz%Dn6hK!2yRB4ms+BzTV($!17faufF!?!`^qilLPox z#8o%B#FUVT@ib$bkpsK|6Hx zl-JG=yxJlIp=Vq1fjDh08<9P#jyQJwIcMN*hUG@9?+dgmm-~He5pAA)iXxh2>ykSk%AM1+06(a{O9{2?Hx0x_00S3Pk#K+#`P~89|+Cf7f5_y z=-^S058h*a{qB>S8%I|U@FLRwO@sFzGF*t@A0<8zxAwVd;TrC;1L6aaP{_Q^q{;Bl znN&)i`4H>oPOv*nXX!CA1Y8Rifsdh(VXbU{iciEdRq@ijxCT^0-?<& z?@peXfKBrlalQ>CEFF8TL@!F%Wp+GX6I)z50P?zKzuZNP3c0IE%)MJ_m6E~Z60~75oSY37Svj&WgV~3OP2Xq>O!wq*c-Fz@jv=tvv*$`9;m!Vl)$eeW7kmXR_H++z#J(?VWVm&4`HgA3ne@yj#IYA@t4%; z3x)t7F$8n1p**%2GTBgw0EJ4V){d1TMVJ{;CzWAG9;WX~Scbf|zB63EGP43$H&X3ZM$LvAO34^dO=ADD}w_S z^hKg32*GI93QpyaTkQI!2Pgqu+kH?4wq`(Nzy>*n#;sCU$N;*+h~NPs17}bY3R7OD z`buSYRZC3-Yltct8YwFjle0pttjZeQ9JtQBSZgxsSer7IXO^V-ve1-Uw(yvyXqzCh zB(pHxGAWsna09_~nrcv4cUfH4wfZVxf-R)YshufPZj(rLdxmTHMr0Ipj<%uAsz(Dn znxiLM;6g`l*|5W}P#v-)O*Ls*Gh=b7xpE+r=GvB^8gNOyWOpe8l$5t*-~pPKcjZ$U z{Fn)l4Uhy}8VlCNMvym>EKiN61g|jD1Zfhbho9=0zKVEmmd{M6CgohfsUcovehnWD zKn5zEnov9^oaBo96FeJpCQ{VYX^ns#z2_`UCxv-(<>Lba1zs+2kU*foK}}zIa(F z07MmpAnf{`7J%fITW)bkz=45ZRY1o10p0mHAu==}Ejc!T36U-{MS;gCWU^?OlqfVc z_<+xhG68c~!bk-N&>+ukuqw0YEZDHfQnfZM(kxpU=76@P{b;%ER=Y2Leqcb|=<0^C zIWyd`@4NlA>{Byo??E2fx3(9b5%5mIxVD2QbR5z;t*3M5tj-zpy(}DiM5aZ=B|4lJaEwwKCRz7XVLi=U*X651P4|>{+r8xdSm^6g^nJYW;cNySQi8LZ1TYntniQ@rd6O{Nfh}JfQcZZ_<|<9~jg$ zVqimY!l8c1xGmowfUx-Zn>fh{AO9ae|HXYvS8eo5g_mA_^_=;O#!l(-wFDK4088Zz z!=$!36Q_DF8!5{TnJyFP<$Xn>gBcf3tpYU0aW#G z8riRLM9#qY=4b!f5ohmNb#qI-hyG7DdcR<&P1QU9xpwEL>t1*EYZ~A2_=x>BHB>$02th;DrlzXj zH&p#cebsfxFWPkbRd@bk`Qe9s#G}z~ee05C%h%t0%P;57IJB*0=A{>1^wi^i==18S zTYf%+6cvJ$ziD$OcFn4898P-k1;YBKVU2@FTs(T@_l6Cb#BS6yS2qqD*f4b8=CS)U zjTxwB;_o6&rrD_axtT1`uATi~!&Mde*6UcZ!qn6XRS0%hiCenhTmillhm*7CZt%zSt64TQ#&~_YgGxlBlDt{KH1-#} zl=J13!w^SBHT8LA94-9O5kQ`D-6>a7EBJMdPIuEOQVVCU@+jP`3>+n?29hT|^xz*FG9@qvT|l-RZi6i5XSxD&dFFDKa}8L~QB=^E$=WICkDgd1kc zC_=E*8j%{2R#<@;*x<(^9YKx&4b474Fy;Uyxy8= zXTEGVIO=90lw%#&j?2f1Ex$S7nHTa53P~m_4fUuCDcL|_JV~ibsh|Oz_Ol)s5s$#6| zQja;W-6k=+T5E?yxeSymLLFis5h8@{s;P<8ic?}iSu6z79uv^^)Hp~?fP~lr zScz^~Rx;YAAyo3(DhKjVxdpOFQx3C?YGuuoy9^mw@-T}(h@shzS^L>#BtBr@A&kky z$WT*smvVKaF+d8nLUTHT7ApWUGFT;gDd{mrR3RWtz$<(x>!aVIvyRBTB__3?Tw0X@ zdGn$$71RMH#oDyKED$Rtb3_T?KWwG?HF0S!RY+s#9T~`zVkw=V7gL|*X1Zwxtqj4y zJ+$@oR%F1km2rs)hNGcb)}5LNv+&V|25kYtEcvYfsmgVvn#CT)qEqD{m0gytZ!sGjv0s{(A8oBIVzyJIDn%9_f|mWuDkAn&_M;^hzl;bKqLVr zOuW@ZzzoV5O%48=raM#d%G3`g`ZMRZ>J`enFf4@L*U|{_i9~|@7J8=I4hc?X}I=-!c9`~KE# zeDV_~o}{_I-nj=|e8o>6T(S1*n{GSk$m1%%Vz6W41Fe32pu;ot1AL{>W~cblVArgR zFS~lpx{b?LtX{D~XkgU}CkR%o^7()9fhEh9EnQyxoPie*1TxmFe_Z9c3lE>%K67Gg zuU8C;j}mmv^`e0^&*-7u{_hiRD?VVGf7}V5zW1ROJ}iJaC!hM2w$2%or%v z-E&|2{epkE_`sj)tNzlo)3d%LP>Byb)3D1o+8U4Av+7-qqu$dzrn&zl@qza=HSJBA zP8mCKR@cy(bNzL9wDfkjF0Fpc#-V%r8N_F6tNsXs-$NX-)Bjsjb=hGvH{E&7Lk~WB z=piTgiTm@|;#0UKCH+bAXdVGLq`0}Cw&uzu+j83MO<)fUr=u809#%59Gc1AJ2oC;o3X?A58 zS!R@dbxU4}3h`cK*aD6s{m*VP2ka*EAv7&z8dwdWj#jbIG7K*Btw%-~W|lhJqFl0B zfLFjCrR$_h;z4N$m@254YA0E}X z3fv^76J}0G{Iqx@Di_^Xp6SPEq5;4O17Z-*o#2nTgo>}l^MTDRB`_<5q%z84$EPxo zQONPeI&9RVhPH2I+r+k_j_40rEQ15PQ`(MhMNI zQ-YtX{A#vG6 zS%yc6ORO+)Qg>y@Mw;hRIlvZkftfO>MO*SN-BpsQ=NKCT1_E`Af)i!z24$oWN_84i zwNio@C3@7aRza&Th4v;qE1U@+RWEo_QY)_uGN7*tnVa2y-QlxBHT7bC<)x_AL`OQ6 z2}$M9Ob}`@pMdcRIf0O)kPL7jd99v3Em^XJt0_1@7&KH_O}lrjjg0V91X}VIgFt5G?{wSx-eAHFB;d0aNI%)sb~1b*VY& zQV2s7J1uJ60V_*NP^~7F)lnHjts<_(PhWa3_u#P+!B3%S7?4*dHI)?WwgSo(sxK4E zLLcT?Bwb`jW5>bD#Lygm_~Gn}l0*!osY7|vUGAzTwh$|TT6Dr3+Coga$k61G5c1Sf z(>evo7#F5xnOko7Px4(xZ(G78C^Q%D0@YNuBIt@JLoC8H6A{*BI!q`$8bX5k`a&&A zFdRupMY)F1LXw3hV^OPP_#WM6AKEuQU{D&uqc4=hU#R{q2k)&@BoUiHa7v@oAO|5k zw^GgBfI=mfdD$?RN{A&WcKd$|3f)ZwcU)>qp7m08A%ifG4DMkF;_(VkfDAq;G>~vU z3QejS))DClId!K{N-}XzTN&Jz$}35s60P6_G5{W}%!TPg9zN(Rij-uMMp3C_k3BXa zbddou0m4So?3xojlLA7^?MZ0M93`G0dPBi_?CyYpJ-&zdHu&GJd?LVOeP;$d_jiQA zb{+^3l*b7K5JUjP0WQ3-`1Kj7Jk9J?1xEtJ7SvBzz#9Y)Jn(>2cp#AhNQ4eF(U(r` z>+RFykKrU%Q!LaqmCksTV1hE~<;0mOEVUvmL&F#MFc2b#30yu7Bx%H3{Ks1h9|!Ox zYtvmkk#~N8(tC+|^u^-?gX+gs*Nq)8q_JOf{mJkCrwhjnI;&;q`}f|hUqf?i&y1Ef zU)o>LGUKpG(+_QH?VjE<#|s6A9rNL?SqF*_*wT(`?GY9bD6r3+)G_^dpC(wkX2t3a z_T9GU$9>>Kjvv_MI&v^=_QI~&zH>OkPZ;=wV4llM|C{Fr+B)WTbj@$=nBU&*M-}I{ zw9lO}_uy-8xLtf;>GI-d3&iT37Vw8E0fF`F9V%E3lrLH4_PUj89=ragI~E;roP!6p z=Qim!-45^z3+#~d10nB)8{KdVGEMND;lGPh$E?DH{f+9pv`B^$dBGnflUpqhW zs*Ml$3DIibAE^A6=)lI2`_~OS?=4k#kE{J-?M{Db+~xOmRex}bp#M&r2EOjHaUGw0 z<6hoGa+G;+^@L%yEqOO#c*~U58MCIfALegN?@WIe4;ge#%gASI_V`Qn+cs6dXVd6x(UN9W(Vc-icuj~UrD^-JfUyK2MZH{AM*?#@Fy+ZWM#kNx`BFB~7J zcKW4pc;Wzqd<>*Y8dv;reYMv(o{3W-|*^T{ss;n;IFZEq(7r8{$BOx z2RMh|xjX%rT|zB$KDo^Sc|Ip=NY!&NsPx!V#*uFK*oC%d5IGnuLX0nC%8aVU$i|D~ zM=><)Ajgc+0kMO2xH3|9fs+H&)E06km<5UDW#WSwLcj{^B0hjRY`r|f+)`8XI0jOl z606M^Aw!BJ1|2F*T&f9ATr9+Et{edw4umD>CC-3M`bC50F3|}m_dq$rx#?R%NZ+0_fp(#_>~#8vthg>I>6w)j;&Fp>q8ivO3a? z)L`+!Et&tHy*q*PtE%!vUy6vWTon)$RFYI`o>G<6T$ySfG7|y;oCh3nxDE&{D2SpU zGKdHwHV&u=3J5p=f*`iY5FsQ4!~t#X?)SO(efqtg)b?uL_xyjALm43&pL0qrX9hp;ff76`1UizcW!$-200kw4LkKujf<0|{K1UyYw4XTy z2Rs`oLo0X!nB*ro=p`T^2rx4~u-$C}1&)N8=qM7<9pM-zHX^-D9R9HiN0oAE#)A3G z7qy{U{0h9$MiL9#Qf{-^#2cWlAX6sQ*3fj3e$BqT=7{UXbYMmrt$>djkbw{ILmGG^ zXEOy^LjWIRvIFH2+-uq6V=4M#0N zQJu)d0dg+OF+^&w@SqC>!2#zu_DCyir#mUK=__f*WoQPg(=ZvFaE?7pl3^B6hDpQ8 zUuyF#7Fz|3T`hrF0zh7gWe9?xgyhj7}HTc5}+!nlAxu8{GkDvs%V$#D38qa)2}DO1%7{bX7?n(*=L{a2=8eD&kS67<&~Z#xbC{^?7-iu zfM~4k=0foW^Fi{gmIQQIhy)Py-VMWj= z`fR);Ms&6jkpb}md%KLyM2Q{V9GL}^=r(x*As_34$|cZ|hX**2hC|We9eCXWn^yptiA3h+uYW<8vEo-udj^KR?ud&P4yqp7mt$0Usw^GIGf9 z#Nh)|M|3P*Gc~d5n4^!s_FK1q`;L1qz3Lmw*1o{6-d-#4EPZ){IOXDn8&XgM$xy zsb~1h_<*`0nj@zxC+jJ)YqW4sU08vmlQvEEzj^X!6j3 zp*4dOhb|soJ2Zai$)}z7?c26^HNyuX-+tVCMwYGdeu2*?Vhoc~@d00WXkD=A@$U~j zRzn029Uu75nyOznKIuOis(#h-gslfwxjxx7_&=Y#cj5!hb9&oq2F$5Td|+_Js*xp! zjSU_lIM6k@{DPM1OZwXd2mWi$)3-i$eS6zpkzN#&GA>&wS*%?`>RrH?-9Fe9E6kQDw52n144m4SW_d=IwdHs) z0W#1KVK@0~q6AWonKXVHG_DSl#1n(hzQo0fW#<6IHDXiZSs|E?v|@ARmB4|($fBkY z;0nGffGqZKjyQadAC?rtQ5c`iEdvc%i6OA{ZqpDN%5k3MkpeP?$%b-ZkcFU$=JB#1 z;3qDG41xe<`AX~JAq07BhbzP69fg!aw_z2Z*w9PilT|)WnC9sbOEMXz-eveIQgm2$ z?8zf#fclc6z>b?f%xf5CFlLyL^_#9W*U-!oW@cPDK9z7R{S?CUIp&ySxSDSL{DD2* zf|Cf#4nzr(kv_fh+_-Q7aD)NLOZgQz31!4}lo`P}xfxD;DvDvgFpMP(s|7Mj@B;?} zybFFZL74?aK;{cgGooBACj?F18E^WcByo@7kR&h=Vv&J^ek7wd)H2=Dlp_M<;ipHc z1(VRE(2UL)O)Ig-+2(7>D^H0`Mr3IE4Yf=tPLNe=`m~J$W?tmAMMqm*7?Dv}2$;kJ zI;!|=(6mKR6@`h=C;&hZg_Mwn?tnrvk5=SFBSi`wDbN?sO+@JQ(@*DN`n3Ywa?35e zO1>W+P=*#?kpn4%jkuBVD&0cRk?xS?Z3+tjk%4{oDL!9GTXqm1*kc>ybpHpZ_P4Z^ zvCI9L4*a{)O&J+T29p8X@0Ldzy^76J;hPb$X%PB1`jIK(Q3V1TGWBELnhqi&DAEq8&?H_m*MxYbq!i)H7&RhVrCbWs>ZOoo z$AfQngd{UkVlNhXG-T1v?3Xq`Ti+wwJ9i!*@RjnGrjF*izPdS` z@7cHN@}c^(mo~ia*;Ng*8m0!PmXEI(T{_k^c}Vxvp$9E{(aqnu^Lv}`+w}b(`MBTd zXP@uUcRyY)9A4vB@5K}AmP{T}Jl;Qf@Tx;!B6=WPP&_J7`7U1$v*mHyZO+}^U+{Q* zzCYmG={r5*<^LBzn_b)L{{Rk8tk$(-wcpcqjTtZOzv$(!z4^P2{@)i6xO1cb48JMS zfDIdN7a0(}7sLOaw+uFH@N9v5FB(AeuMe-g;ilKW@$CbPN4=muJW+hspm=#RUQ>>R%^Fcg&~%AYWS#Z9!x4{ed-}M)0yg@$SRu8o`J4FFx{`8*lL?ftzpL;M1Jm zDC_eEhrXr`T0FUC(ZtFnQ>&Lut?C{e8(+Qdg3n&^-MjAH{KKDVa@1S@HvioqG9*Al zj#Nb+e4o(4t@1l{M=8U)h7MPG`*`NRMFP#W3z}-?*EQF=nrgf1tLJ~@f9!TcPpf}G z@QdcE-*`KquJ~t#9w9h)QSYnv+@pQgqK?^%XEn_8Q~s>xW>?R^vhig{bc`O}yZoh# zmoMuZAA8?|XMc30;a82j{j%YSTjxG?>zt?jYx5KTz4b}o8ED&j_Q}`Ya?|=(zPM}Y z*eM@5|NeV_e*Lw#^sPL!bMl~zFTD7HEf1XciO>4qn)xyYjj~?E_dLPkaUhu*5rE=p zhiSE;@NISTTWdSoYB{oPEp^>ZHJ!6tx?Rn6Z7%=Lz|~maUR-ruu0O-`1N^-l#$~v9 zT;TYwJ4oXuL*U^nCx-}k-Hy$tVxh8!vmHuU1SXX!DZM6kK_1xc z2a-j3G4&bvXX94*+2^X-8Y!geW3l0Mt%8t0@w5W;&XE)s{ zbjvZon0#z&*x@eZks~Q(+Z9znoG4ZiV#s^Peeu2s&D`-SIX}$3CkFjY zK-9+NXNANBoKt3k!kM@7MU0>Vybc^18fMVfiz(2ZuJJ?Q99O^n`SFDu^bV6?!=xr| zNlz<$=2W6Bv6y`T?`*3p4XE@Y%20~w^?fRqrCk~o%{BN$C4 zpUl2A%tvBc83nPFa}gag#T3;j0RE#AJTYh(i#8e{v6zC?Mnm|?{4tY@EHqU}nM%kI zP*ZNO%H>f*p}bY1Q-xA}sluvOki$$V6B&HwEQ!AExPQ7v!Mr#z5F1g}GS z)m2ydEs`|!g))9X+OsXJcAbJOegT3(YHXDf4NR?;l5pNcnRc85E#hDArFXPq}sIpqE zT&cWW0w|XvLPS})GFdEAOP(YFY0R9LQXn!|C9&)S$YyEV!3@N9ebiA$i4TbHc>ql2 z4V8aWnG#tWS}X`Erj4(`yj2#Dw)t!<&2qQ zW?8E$av&&$=?;Cwfhr;eMn_O&UTSP*t1k9xg`lD}MQ}CZ4NdbBNk*#VqguT=qzwp}0MP`bWX~_RQX62I-(hCw@qvcA z*819(#+sh`>aG)?RrSRsH6LD5|N7@twb!?gEgBminiv}#7a!i;heTIi2k`y>o<-xYdBfZ8`_a$ye+q8j@I6-%wcogrecrtJ?u7A036!wbmCq5} z<#PnSUby+*`)|Et)3L{$=9~Q& znSTE|VcELg;br}!D~4Ad+&etkKRR{j%U<>QE535;-S^&g-vd{C{hKd)&6~Ow4*R@e z@qZXAk2E|UA1KeTkMYb7;sd{Gt=d}iV0_@b#eJ{eYtMNHE}TDS$s8XEY*`>UaG)>G z_f8Cr9nv-VqMl_hSvWN*KJfmo{m&h3oQ@CF?zy$*Y5&qt^}lPYZt8B_`tj3m+;Gbw zFMnaj!lBbYcH#H8{OpG7zT2~WUH_`}7k&JqA8zt}!Y_uDS3rLcWcz(G>ZA&EJbiND8W%d-^R6<(zbTgmre*JRXc7$1yV5>HIj+F_Fe z!6Kn9#~U-MfQ}+|6yPI*Lu{af2vX=^fWre#3W41xTQ;4EXVaBubU2^MuzpeC zr6@GUbO+h+Ig@@6F>CT16&?k*lWW0?M$qwOyEs4&eZL zo);uIAQr*ppgGjWl;H$&DRanf4bZHqjYzQ#nct2MeDeZ1LW2N`>8!Lu zC#2jWu1cz{UdWJ4+=fUL3Gosj>&Qd{vXwW>(ok07)}*Kn8iGm;-@M2m9)viqM9Nt* zkDBYtL};7oh!(lkP(Et}le!3Ci70fW3#nExiC4eS@NeuuCd{X6n9w+-y5#0|5;o}oH8qlt^m5)kOIRkNPbhskPXsP&spSI}$ z4e^kPh>`FB&oJO8q+}H4IR9v+_P3Cdc`U~V?7)HT;sZ8kJ97!fLRJLm=^ZPVv_Xy` z9D5-+Afw96(i!rP4qL@mgw!UJ#U)eb>4riZcuv7tFKQ_a6#|Hq2s9+5LNj^mi1Jtz zkh6}cF;EUI08?AUW#~Cf>;>qaR%xh8*TJ-Si!=O+>97E^5-8&Xb_`pSlyOnz^QXYJ( zp4Nf13Nkc|K`U#KEvc!+d69gomc|>Qgi!?Av6|*@L4xKRtGB}ryA&4jp1dzG? zM=e0XEy?RhCNd{p&EaSj`OCmmA}v9cjJ|oZKDT1&dzws#lqMOj_>-r58P75=-`HTgNo7l|N-^Y}o0b8k&US7XzB*Kzwj;d4uy&lqff_5M$(ZSCwEoamc6sDIhoo~d9u7Pp$V)2K|WdJ$hdx@Qb8>gXpsZ zf9m+a!018!zE3!Lun>Wl9lYuA(pSIni&tIi0PZ=5Ol@+^8b*ZSzkCU7Z8Vhb9kS zIDXi`*!m;-7QT4V(yN>Hzp=Zv_-etds$Zbf>8_GV$!{nu~gKQtO1=tt2s$v{D z8-+(TRJ@DLli{aHkzyVAa!d)oMTWg_@bqk(I5y8sFFXM$&{3>8%d2Z-b-^AnD5brI zgMJ(v4uf0G*)Iq&_fouZ>I?)LfWdek*GPyotVe;ES_dyvs# z@00*U+>!|f3?V#Vi7^f5#=an z*p$Q?fny!z_z5987Ol1kqzX<}69mnZQZvX@uGGnBo$k`FCdnf%51G=^6F?Pdd!fgb zxUTNP44xT|Y=*WS`$IsUq9zoO=Lc*cZq-WF0BT;6HZU`NwB9cmT(-V=wW0E#3!Hbn%kMXO|1RN8Z$I|a7k|-H0r%YZ1MvYb z5fq;wxO z4~PTwEtwpiSfv+l83+-a_jeaNtm#hZKycugcb|OiO}E_lz(3x6+g%?x;~XD#G#oEG z6j$+?1;6ta2fD|fA9(CX2EyUP#s@q(;J*{jdcxK@y9o~bXUkLGJJ@vCzE%6RwFwbC zzrJBsV^d9SYvKcg6Ne=}@RG%YuNj}Zp>yuH`x_G<*xFk4D|DXwL{AZXYGK=j{VgjG zUEe=E;*FKzm4_U({$+v#w2R_>`oasozh%?;pS&c>R%qR*FNGHWq@!52W2;3B%J_gc z3j_xmn&+=t+PZQ{OG9&;5J8(Sx>dK&Y3X!59v>+E&-kKJo3r=;i(u!slQSR8dQ2_< zfrG^T4oyUoG7_5d@w)gFc6x@G2_}XReTsen^v*N2$p^q zJHiB`uZls5b!MB`DU9(R(a{$KXoc0Uyp;eM;1ECYDB#2zGW3v*OPY)-UB`}Vl{1vK zrJrD!@HH=6sg(~i>4AyJ<&aDIMo~;&<;QMDpAUl#Xeh%+jZ6&0uNCY* zL+=$xt_6RR!zn)SvX{NgoWl1*@bAX~QsT$W!0#jQL%1KNk}_~Gcn+LZZjW2zRYD~= zuF5G1Y2y}SMucH-#eK^9kmD1auA!?sc21czAykTH-$lPX*pK0sEgmWIeUP@H+@ znLd~8cPN1Y&nw<}=be6*@@Oj|6AOHPU3lhI^6sSc$HKIA7=lzS4o#va@Hw1t%)5sN z1P6qPyu?(70%ZIe4rZ3@((!+%$ehpM$k^z%^D-X`xAxu=vLV}_D@^IZIz@@ zN#<0VDnzWcAVkxsR%q&)zDY}(L6&C8z=x2XipEkc$eNcFG=zfz{buE2o&tjm#E9fs z8C!u(fQeDA#MY5=`1sUZCi!ft5eQ`F$t!OjThbg6q_RI4k#Pkr63`GoAhNP86R$;N z-GOq2QhQ(-g5>GH#cOd%fkKBPJGqIIS~Z$yW0B6JX|J#srBf;45K$PAVlTrtKoYZl zEnaM3DflbJXv)|Ya`u$5O9VEhm*+BXYHF?r7zzjT# z)bg}cZK1YA`SMn6fQU*UKoqzN1Q?A%6aVy+l2cue6L>5{44;|yF~d_&J=JgczAfOi zeoWqF5;WtwJlf;>kf#e^p_<-;A`J}&3_W7#6hZg)x z1wWNK`{2{l3$J|bn=icRQV0KgfArJha|Cza>$?QEe{WO%v!Ua;>()CreeL?2PCe_~ zSHJOXzV+vS1^Q6H#LC0_mag=*z+H_G%>4g`(_^eWKj7gCQt}i*5kDDQt)ov|bm?99 z{`juDfAHRu&se;4a&&z4>1TfIj_=)j_vRmc`#X0Y|DIF(my9nNSvkJ^5MM$N9Oz%X zY-p_bCgJ1pfxndC06u56)gIVdQ{B?&@_zwl*SCIXpQ^7dsxICvaIT-T+t%4n+&X9X ztu;@%rSUmmcv{uF_TJ-!XZ_84o>}$2eV%yoURCekyXw4IPySTHGrnH8m+SrmpZ*VZ z`)!@OXK~Heyz+)ZZPmZkJo8^>@AUmoz_LGfP@|MdUAAU^}y31xV#d+f3E?+=s?Fy}DM%hUZI znczPG-(F&K+X-Slbv@c9~I-md25-am(m%;h0)!d`{;hmJ9GtoG3ku&OGI5 zPo4~~1}0MIb9h)fc9yY5N**;C{pyra2JBJT&|Mre89Xpgn2gB_0%YZ=1ydF06E&a; zK_**XVLYOs=~_ASC&d!xm9Sq1E`@_heW8X39L?pKNFA}%AU$GU6$$X!G|^VMj$j&s zwnmM9Si&b#%)MS@(j8JTwQ?)3N*=JJ@t_!Veg%6S7X<(5eXooiQCXg6M3MCA(%B`0X_!DgNf%`@+!?HpOdF;Ec!}(VCFLeVginSGhsSR z@buzga-fPo!2Qs*Qw9ekVWP|?0aBYdLP-=p9k~T0kAj&>*JJ{;B1~1v0cLcK87!$X#Q@s?sfbrAbTlzu z;MQE22ns3Xr<1Pq@Tf!9bs@rh5|eDlp-U=$V*A`ltyQ`C9qou?MhdI`7jc<~G{ zY!rIOjB+4PAWmD>j-hcusjhjS85~GJpb{9EjtnH9wA}F?m5lu@bYynX1^qJx56a+x z3=Zwd2?%6omM=2~B9LM!MO#Ro{1bj5VIZ%NZkPh{r;YSeN>{C1hvJ;>ZN=HjD!N?6 zj%bUL=rCm4bs$QvmF59DZ|N0^K3aUEAiKK770@XnRE`D$G?hRDGLXX$oaiJ?rkS|K z0MMjZffXAO{`G|i8iq-G>*Iji0rWtnHeqDc<& zkWm8`sUC?45RO|2*-Y$Oq(t~efj#oX9-QnjaMUU%7NHNJ-PgbV^?6$FHLrP%ZCsew z&%TT@3TcHsyyYBf@v#~=T$cNO0p0A-Xw#DM4Ey#u=EHwDoQ%hMJ?dIWAnm>~ob zpc1yVY<;`3;qE*>@Z5O|4`>@`@`a%x=f?XU@X7t_zjf25 z;yv+^H9`b}13rlm(LMhBz+Xy;;Nju}zpbu(d7yTW;uV8gyKSw0^2P<#LIj`dpLg-X zj!XL*E??Ag#lYMz_0In4qMENSsrzpCoLjnP|6}9+|5wZN1P6XQ=cz?}01+ z+)e=s{%71~4m^XxdEi~x#ur*k>MdFshmFhGek$eeSA%cP)<9~7{F%|~^zT1k$E)Mk!8HN?c zF~BX%@Qe-wRd9G6jCc<B8V8j29;a1vromIc&g@*9x~4`(Lg9v1-_ZQDjByJ!*IIR zJK&|DQ#w4Mmf`5jR0cs_FWN>>h_m1(@g47Y$7!dXcE%ZJ_-wMD1N=t7_uyEPKb|$` z)a|p+J`Wij5M>I?3>3(V6*$*u#U(IIr1%(o1{tn6#gOOlU={zkB5H*>q?mN>9EVnk z)OaIs48sI61THm$h9JeK@e;V&3}36rIrte!WMV{EA_q{;EScy9as&$@ouY}9hC0$I znx;TQDV}Lj5Fk@Fx(YdS5z5FSg{H|hv*y|)a?FUup-)B?eh^g4ZR5NtH2Z}kKD&5! z7Xpx1Ya;k^($blXwn&vj)*Y5`YsTpevWSzgd}?`;esc1h>Q}zvbIv(JLl96yUw1i{>N*~5lvAxyq&qZ;#Zk+^F^Th>TkS2hg&I8M0|RBDAICwC z^N&_)mkTMGY;?Qgh5k8k%lH8HK;i=>+hINt1KYL5RlZ!1iHMtRY5;+oS(9$Ysh@=- zrKM7<%q|UN%uZC7G5{)S?N|}YEwP|Ua~80l1E+GgKzWv-l^FVFJe#LX)~OUJ5FX%z ztYRq$SJ_T2Pdr#?ZnK0nEY~}3Z4vslKi~l;v@2i(VO)SyQrJs;KskV;i4wIy!-N4YkU;vuc28 zVg<5wq+z)~Xp5#E0s25k*Q%lb{yH1@kw+dW z#w%zbFl)S~4<`2TU~|a6k?qJT200{Vb(ae~%-e8)yp$3q4?m#9eg#tQ*6!g}Iy0YI zL=e{t;a~%hgTWe3Hd12`lO$Y%5(uh{S3bfaVIoD!){2gC5tk}ZQXov$A)0B8xDAB} z0R8;D+v z3!Ru(s~cs@#FC*x;se4F48*a=9xD{!Z35ANGEl&UcqiwmXjxw9e^ktL}e(OYL);<~G;PS>(qep_1C#=eKosjrrGvFBqD5 zkq7vDhgNm3oa$OJDJmLU2gFXK=5TCw{AUfg6>O4{Kk|W>b(De7WZT#l9 zZ@=i$FCTlt$p;_tGLQ6o>)*o$MMz<6bc1MRe$`O*%X%?^s$Vu%{ibEl|7TX!r&jenaN5xuzklzRAOGDrCv@dz58rorO~@VfnGu zmMVrl9#G%VR$JH7)Yv+&ZT`>ZRQ+>pRa;|6Q*CQ?LsM;YtM?8(U@)s`p({Iib4`!y zfVOtmWBK_3?jjd4=lVx6&7O?%)1LM;J2rpAk0~rp>?!LRKa&T-M8>I;QCOOc*i8+Y zCn*!aRB_Mp(@a9gYzlWpEee3~;=rK8Ot3^uSd0<3C;lP&G5r`|O>}_)lvyY^Y-m6k&k@-^Pl%=BX2JzIA9*lspjZw z>oDt(;>73351joS{dNkTEeBe039!W3;LLEyGqYv{Gl-J_Zp}EC9>f907|o$J%5yN$ z+$~knP>EXzr3*)ZKrh5z4xi%1sZ&D!nY&CMA&`JtJdg|#MJ$LAcxDH_LK0A@IcmDr z9K-OX5OAJO(NPr~l-+6t2XQHyrX~&~e~hP8obI;0d;ya>k&=frxNY1;DbI}>m{TGG zd_1k-C;_VCJ<4z<)lwKG=!B&x9?B$!84T#1R6Toq<&{_Z0-?7FL=d`i?XO7?~y>DX(c{DRVWGd5CF^Q^^d@v86U8>+l}q^Akv6HQbJ0^=uHh1LAGXrVpxo2Y8K2m zeWQ3;CRz1Ti$zIU7}cc@*`w&Q5;$f&XAMh_OTTVi@ect5b^wsGw%Q!1Enzg#*WBt$ zN9YtA{k8`NEMYWb9U!L)CMGGTuB|(ZMINA|98MUHLD8HAu{G&b*V~=zm8%76Q|0`d zLMeQ=Ky3<9Gfbd~5*Zv~Pev7RTaL?mAy0y`!DiW70)$M%t@m| z-jB`b* zN?O4xv=o#jWo>$qrlUwTLNH_lG$Luno`FjN9EGZY4H>{UaOH>?NZ5u+o-hGY!HJqh zR}J57deOW>d%6jlbTX=IL~Wc&@o>mbUE%|G-SZ>yf$wd)-@h9CQ^yA! zbBf-_eWlP_55J@+g5stAk(GFm=1B&RG^{)PrK8Ia^4|wN2;p&vp~=-F z%MKDlC@v?aVJ~H`6(#Ub8T|9aM=L%cMBp_IFD!W0LTE)t;sXPNE8h4&kGbQ{Eq86Y zf5Tn(e){v5Pp&*arWYeEHX}xa@0J zU2@IUmtN~%V0`}auYT&%&z*4U`$ku+?_NA9GT?a|&))P7t)S`_@67msCkGNAXrH&> zpK7Z9@1`eqv~;%A&l4Z0X==%L3m=aUB*GBClsn49WZLZiHgIkOTfnd~F|3}`fpS|q z)5AK%ql3U|sEXC#^6{y-VcaTt9+v|G5F+r)g$Le{OHla%-dUENXSW(s z0MD8Gz!CW12S1p17)`E@FdVaV5W5TACuDBA?urvrf zQ>g?eNMRDISpupQA`&_ZWl+#CIs;!{m{b*Iz@c^ODCCU5i}P(OPYZ0`yjgrex?#hH zn{K-4th3I_yl9RZuHs(G=q`NnC;6Aosv-dLIMER&kXvZhc(!UqJZOli7k*3-K>GXn znel-~H#mTrll5O{e4u!iVq46lj1O3DwrlfiE_n4MT*e3NrS=WFK^ytuPKefsc`Ogw z$(JgcT|N3NPj7Rm6c!K=a0>8Sv*V;W^}DkOq10{woDM(&L6GSZ%GN@*VswD5Nos*x zuq=XOh2?DJ>Owh|l*s-mbAi>PGdwY9P8Bbx2&uMN^Ut=M_Fh@O?tqR41!dlgjkDJy0%NmpsWx;gA7gY)^(bzHPOUQp7xpa0u2MC zX9$MO1hc<_13`8mwBJ%fQdR9klJ{NEIBzw4cM5 zAv8c@q(sQ6Dy6481QAz7w&o&eZh=-H8#rpvke#`o)t)?>V$v+JqL7!jVy{Bsi&+4-qsoQ&M^O%GCl*AfqWQy4+UoR;}A~5sfl%!yz1_ zwmPg4i-LC1MnaHU9TpLd;@3I&iwvA_!U>)*^w@y>F~=Np{PD%R2Dv@%xZ^yTcH)UA zDtyN~-l2(SO07hiNs{E8v6B^xPzDFe%+6v3JC6_KYh!bp+Nv8{JE|8fsOg$l+u2gx z(NxzlHnd{tlGVdQYnLoLw0FcS@Q1p}2a?N-vw7bA_iX>v>cdYs`OIs-dCNC$y7k@f z{h;p;ICr>83yjgyJ&ywOlwQYNi z`VnTlcTil@TorFgY`Y$sl=#5NW-ycvPSeQROLu z%C`ve9}PSV;PO(#3Ge^VH8*}oI=XzVcm*+vY-Bi*ZQ3R+0t=(7U8E<4=7orPT}$Q` z|F-^j{xe-&Lx*bztUg}#XOO_0=I&XIoprPOTk4k1YwW6<-E#82RhKWW-#Yh+4_@{D zmqFF9nv1J=*T6OVX~k9j^sRHB@!Og`UB#;eF7Fh~uKH!&ZmxfB-P3jX!UbRGZk<}U zVra7!Px7o-zjAWTs;PsfmalUyTD`u1#k%63ag1&I=0Ii5M!TjL&gd$^ zv^jOf=LG}@JVMY=-`v*P@w3{he`=_j*V^eHq0Vk-tZi-cX#$TB{CC9%oWvc>{f1Tk zNc0Gu;rxVDww2i>h;ON1Add|jGOvQEf<1aU z0+uUg3j=XxG~p`X5Vu&;L>}AFl*B7@i%%RXR085lz~m1o)DS_#k&jmpBBc+YJfqW= zrvaep8W@O%=;%dWc|4i;FmA(@ap4o705k4~K}87hi`aA-RT*rAqagz-4^u4{f)S5E zWRlNxU{VH4n#%*3xEv_pB;z%YWWY zkb$gF1}Mo8^o4>F1Z6U_(88w@DiKwYN8c0^g1!_&Q)s5FBMZu*N$NOeE;#uf>GX@t zn=6o?X8b-Vle~if=buQ8NY{us2w(|ghHQ=dJ<;zw?|a|-eBJumYp=cKmRmM$+O%=w zMsF5~6`Xh8d0akcL(NTh6pwppcFg-sKQ@{mKA_fY8mXCb0Ku0TRKEA#dy5E(4>{!|X8U>VCP?i<7mvL*+IaKD9EjW;$o;mg&5^=2~GU{FL@ZRm@6oozSZcvqAQmZ5 zlX8nCyShTloHRhTAWJC?tr{5!C`=RG_EdlpixfT~M3{&ufu^}_0ew3p3Q{F@3CLK@ zR%YIj#TB*{8a4S42or2o+7?WlSurqBwX<1}u zf+oS2291M3CrhYMosJkN41KBLpo|C1W5%up3#NEm$0V#n)dI+MEF5p-cWD6(!6l_%(gB%_-0dB*sjPCSqM8;+KKt>71 z@I!`xd;o#x7BVryv}qGdrO~w9l9wvCm}C5a!?*oSS;3;2T|VirZ+JnEQRC0R471jK(twuKyW}nK&?Vw zA%GxN;z2c`MKoz9f@DP?H;eg53e_Br##2RiDz z6CW5FJZNP2;KT<8N7pSLdWb{xwo`^TnpgOx-mmaes}6PfO8>yp@ogvZ?HlGddhvmg zse^kKkIt@db6Cp({2@62Nn-6^J{*6OXrT+D|w#&N}CV0HFY@V7ynYh zQx+3zA1*#HII*&SaC~@b^}x`C*Bm^_AU;qDSriic{rG@qB!mT|i4PDXfwy-reLOx; zPQha;GrOs)x}~SNc8T~vOWl0&fe#+A+gC{1I7CV zwN*c_tLm87-7N6c>>+}7pC)kqwZ#W)soYLGuzlEpj2(5g*_Q_p&W-Y4jS@Cq1Hsu4I|YSt2_|g8XZhShUV7j zh&toVNYQjlR#5<$B!i$r6G#4;O}xn~EazQ@*aT^`=>ws=}RuTZ+@*x#k+T*I$3V@>5Se)w=U5p|gP1t+_J-myd^b^2sNgR;@fI0E7jAcM5!YKy$s2 zISz3}d5nwJneiMylf8H)WP;!p{oimb=#}zgLn8coW z48!_T>y{jXPbM;?XMqEmb!i+%~ zrqybV@Y$T=DTyC<=m{;NCzh~9A+=s?3)VhU;>gc?%-LU9fSm$j0t(p?@d4l#8j#V% zc7di|=%*fu&cvAl+rHgz7dPac#|Qir=m){sE#1{^K1kkBS6zERbN%yL8=u2Bo0?iU zzTDNj{Ls#cwG+cH99eQ$zToHIqHT9M3wyBN!PY-b^YJ}_g2AzsPS)G-{nNwWxtvP; z6z){wcq=~OXZM{Rz#U#h3Cj4ug5IT`AMmSa@x$ov65rwNOwM=Qu)th0vfMx#TD$aH z9z1st$4Gpjc!Z#NzUJZsE@GLle?xYP|l+vAU}V8;WaT&zJi;KQuUga{tn`6DwAa`Up9r zJkmdY*ucc$L!&Pk9(!T;iZ!m$!R4;5Wh=Uuuk4#z?HU<+p=+id&dlfg8x*?;h1FLc z5@=}ieZu=2s_(6x)!ow9R@3p^=C;}G(~t2q*7dmR8=H!&zRNZJ9}oY;|G&VmLeA-> z6FAfT+p(AXM?OEGxvq7`RJV zkXCSuws?T4xh_;;RURj*l(Y4bOnd`ml>>ufrWtD)#7T)2HUxIr=%i`OH(<4i1&4?e zh*WdbG>iv@VW4-l+VZtDSIhl?iKaB8!y5)LtQLo)K{5uSceBILXGSzZ5H&bPY7&*h zg;5z{BYJ4EUfy5S)Izl34AQ%SNARin8s)7?N;oJ~R z3jLwFW;6b204UTCCeq%si9g?S-N zwVDvJw#o@Sb76vH%rCZa3oTU|D#RF2g*~&q8 z_#%W41$_PMU%&Cj8^86fZ~5l}H{X2otrhSLfHS_w037qZCUEuDR|^rGdFGktpMU;^ z7hdRXkq=kkvdbzy?MwzphTHGxty4=6psDM0sv}?}x(%d92tk&y zt|^aO`>+)Oi~^r@Nnv;^Lj*FAZAT(tC14mQ3|ZK7iyt6vAckO2x&T^%7^#d`AqD^; zNW+7LX(0g1+*$zTz9D1BkYq4!qGTV`X8x*v(l2K(tv))l~Ycr7n z_5_7$;cIK_AOt&x?E*ooEIShX>>e=H1{tO`2xLgx05f(IL?FTf_HZEJV<#sZGJ!)4 zh+5aNBZfeQtoMMt5@2)&1u&qHoq|we1}(R$Y!1?7C~8iolv7?+D9cb_IEbT3yarVQ znUK8EWuJ5l)Mf*h8om-T(J+Ph$E18R@&IKiwvmct2*-Gljhxd(CIWo~OCS@qkfRBD z1Pa56)Ga2p4XZHCsZ=>O^c!Ws0|v|;z?)PT3IQCLZl!RFjkTgbs)&VfhzO8XK)!O; zpH6ZcghJdE{0N-PvqdN*aLu(b1ycA5O_siNYSe}qBV}D!LDo1uvGA!4J)tBN*rKpz zfyF|9YzUqf5E)>ec#l3Z;Fg(^SNNXyyhkcHpism>c@UU05k(O^ex{{IOHB&tQFSK3 z*7vB#2mFh3@qt;*T|xxS^-b+9^Qsrj+rOz!e4xXB)}C6mXktazz`O_Ki`{&=O7jXkG6!_fV=!&87;=5z&3245z-W ztMV9t-}+aP%uLGRIqAZYWy8LHFy*O$<(?eyUn9i_`i57|{DpUB9vyKNso+3l_;`Ha z;S}bvQ2zY(W>-yJhs*nNeimK-{QvRFrUTB{XE)dB`|RO5Ywstx&e^-l_0fHb>w;%g zef;TFXYF0}k$tPquHWMm9eaJU^;yN$F!#dx>UYiWJ+8f5^v&gGz|qm+#0LgPj&OA? zU+tP0S>+NO*e*UWQx9k6EknUNL9pWafrfd-M+O?&nwmRqefD0r?E8$4`p)J#Z3i^9 z9@y5ARq)pqAK-l2e%Yhfz3z1axegAeopzdS+@oJowt$z#ov``yk+@{c9AFpt56lOv z$_cTVGptfRiP{|5Z1Qk4vEggZKSV)8ejq0^0S5>S5Qx90ZR{ZPv>mXmx{IAx!Ukr5LP9Vv0GbkV(~A^9#-}Q?hCRaM15g!a zU2uSXXW9LFDEQAqKpew+?X{P4->$|7oNm%2ZKXa$z>_g99OBj}=u&x_kjFNGr^Mlf zQt?>Ar&<}_g|-G|)(k(Oq%!Uz;9!;!A$i0}PcNBPor27xH04P(2_3B*8E7>g&`hCL z=%Ad1;8rUoZn2c}g}FmSs$nP)9cuVYbEHtfvqEVy@X4Q_#y8`qS(y2)R_Z4h--`6Q zhsEox@9B<@e)OYG^p{?GX&xRBG!QWm9B}Y=>K8!pRRKW*@dE(?&jyG9D8J{Pdps~8 z1H=b_^2;y3Tp-9H!WhjjX;3guW_*4wU~+faf=WMWn>6(Jm@y z69!byq)2m1je$Icv~ZN$w1Km>)1q^92@d-r0MZES=E2p=6pfQ)UQ#-fn5 zsYjp}>oh#XMo2A<)XLBkd{TJIV+my2DG$XKY)XQu7u0lQ2LKpI5F^0>rgUDI;FApu$KYC{@vfP*58{yx7Dm@ds^#2D1djBSu|BTqI^f z!@Nvtp#hweEfGbGqz&AbB`ME&U%sp&c>)It$r(+MsX-wn7{DHpk^lv>6<7$?i|0%% zc}l|8Tlkd3(y&WVV9Pd(-I_Y;sG~RrTt~kkhy%z2(EuP^aMDR9d2@|d$zUnxJov3a z3PLvOhqASXG7Z!PufW##sK*CpwX_}B+*)1VGpDZmE&J|!N^|ou9rIrN?0ucBihr@U zeAUphm3`xDd&dr1F?7hXr3Vj=t#)lY^*?yl78daQfUEq`-0$N)zrPK0`;)jQ*|q>NGV?v%8w-bk{WZ&28$f zu3J#Kx~l8Cp3~Ipnp3;b)mYu@dR|-mbDCP}=X5mHbT-ZIX`a*D)H}Lx>d^ViSGoEp z#$8LsN0&~F4J;pDxMHGd^_u222Tcqe?i!{WBdhu*SM*P<92#Bk>YMWLz)Jth*EKl& zLf5oz|IYU}idA4G_AQyLZCOw}0FwuG8rww)TAL4?-#+(%#`fnm&u^*gZmsWmeq+ah zVsw=^XsVlATupTgT(g^cTz~5SU%<`d`^5>A_p8v89~tbiNAXSXvaQUn0t)=A&wlo^ zK1zS_#TPpc*s&c0c@aE{cp5An7lpH7(`M;%3S(PS8zal9gD+(|L0lj{jNP91CDn^e z3uL7~Zb#bMJ{LkLEJ8JX}2nLnc~YYPF**kZM+ zpc%Lnj)pjtLQ@FS@Y!^3fVNs85=R2QOz8*0Oczq@x#do1OJZ83x$f{82DEjXDoxUt zCPu^oHao_J2)_aa2quLGt5Xci#P{X{@G2<=Py6NDfWyGDn|kye4;l1446sWf0s(>i ztSs})XFhYEefHtW;MPQ#HQZv4@^D4?4EVuw4l>H&P_xv^7!fcX#F8n_>?DOxCaPqV zNXZ|;OeNirMoluy4FxD<-kPfh~gQh=G-=OVHP-VTzwhToW*jkaRlJx^WsdFLmcmm zOXh)rYp=alOyKUj?-nSKdZ-`~gXBdF#02EU2c$v==bn4669j6y=Eld>bnr~*rgTB$ zUaD2%*J`N}qA)=i1C+mP)k_-*WhjXlwTq<99&TX80c22wnmfVE>H1P7$f1=bN2rAwAiHsSd8)F~y7 z$riN}w3OyhEmKCFqD5v<6-`s?q+s3CiX11E!=$lDnPQ5n7urH~DKO<%MPswW=rl)( zEY++#3ot0@D;|RgMTLVDCZ= zW+0nPh=&wm8aNe<21P8U%p{sVVO~3fGaB$H zh&i>5+e`?@Olf5}n76aB2$Tv~*MZzBXPN`4wFy9wkD<{P$SZLywKLF63K=x1Lbm}8 z(+WY9-wC?H-AM=OPCMZ8)CQ(KsthmG)t8DPFl7QHoDI#Qw*8#+plL=+iTq*eTfg>Dg1kpMw}Q%*VM)KgCtB@h;1ck)Y<^7p_0{mP|61i}SsMF}(k zZ+XjGP}T*_w9n|5u2Mp)kEO5&?&99L^Y;q`2ZRXbHuTP_={$P>{V!O&_>`fgFWvvy z&cYqu{u!SV9~hWi*FSOa^1*d3AJupHwb7M;KvL)5;?07Q72*RPk{?}hh~R)v^l!sF z*kN|&yrcIDIE9kb_$1cJQJR;w8XBhLvkt;F?1yVgeQECDXfjqM@z#@%X?@`9GHO9>|~HI=8p2 zrmwoO$5qqNHMhRAra`9XfR=vO-1^0?=9+%jf$j4TXlWB1Xlv+go!c)&P&0o?*YN7@ z)oWc#RxDq{gnxk9zig~;YP9X(b*`zA7q~{p4{|M9vBs77K>xB;E}u+w4UfLq zHLcsfvwn+J;Dw-$oFv~YU{>tJ5 z+;1l`d$LEAJ#Q>HVC&`w+MKy+Od-R>d@zEnAxp=C$f%N!O;IJormz>hEGZMifTn~6 zVQUyiO}JQGINldOP%T5LVF zjW3}*L{ve*s=>-jF^?HS(~%|yXuQC9L7WX}$zTs1IM`Ey6#D!Mw`j_v$rDf#oQyit zq&5;xEBzXaRH3e!c(Y@S=;#*%LKF~wNa$q4+PCFiy=cr)||sE0!bZcPN4?6uckm8sryW;EdU^Wp>Bg#{dkckTSYGwhO} z%ws=3uw7Un%u7j$7ft5$(~O%4b7ZD0BEcNxHiYOlHQ;+wKN1xzls$ZVJuH~cQ)-2ryv=n6V zA_C|+vZ~-9QbHCH3IY27Wiu!X0rASlF#SK@v&y8vaH51#19Y2(rb)Qc9LS>}O(taJ z^`&3TghT6^wC%%I8L$MbJL5I>K=utK%7I%=tltdNxQxywW0={BwStor<+7C~g>)*f z$m!a0)-ZI!k0#i#B=I1x3YrvUJ;IkULD_apw22c6up7Mft#5Te^We7wn#aJbR$IF5 zh*$_5Gg;RbtYvOb19S-_pOmr%f+KZ{8QVe$42p95x&47=W^W9d6dhH_%Ik}+O69eZ zCyI>1(8#2ewp(%|3VfzetwMv9S_POV7KJE)$d)uRaS&2PR_21ZLI=+p!iNcvGK1)2 z38>Xjp?)LeauSh60WwHmN&q5=n?74~If+Vi0TT}hqHnN-R`yb6G719$nGVPi5&TFy zl5{JRStvzXnXc(Xp;~}AYI=`Ya2R7}(qj!RPYcSD5kq6&*?QpkZ-1a6R4A6$W^MzK zw`!~=#=?=`@!!L2KtMonz(ad5k> zgm_>w7>hqee86kP^J?eMYU(|pcEJbst-4}S&8HX5d&|?S=GL}*W4gO@(Lmo&=fI?k z=i%yEI8t8Si$+{sm8)~fc=zC>|J>)lr_Jvl?dTinTsZDO9(FGrb9F76*zQtWp!E#4 z%wJg7+L>Q1cYOLzSRl{#%X?9}rK7LAe|)>EYhcv1tzTU~?A5(+qHKKE z<@Uq~vV-z$E_W`rgJ+^jA?p(d3=WS)Vai!a#w+%h?b9P*2TKDQYc7r9#)c+pb*-eZ zo!cT9VK2nxje@b(Fn(s7F}2}PEefc`sfd*{F2q%7LJn?Oc^RxiQ%EeDgj>BUiN9)4 zsD*#Eh^W=OLQT}ls|{e-Ey}9!lPdO|93W`UsPh@11>a!dU_d5*0vvf#iVGnH3JY0O zyjH}G0$1{+EuN&ExUf-et8Z5$O|kiIhf3|t;Ep|RI2xKRIVU;Emaa?Up2z(k|q zz$iZ8yzh*^t04mM0g$%h1CE)bVIbJXjFFlM444J##50L=BE?%K-C!Z)=#jb5+|bgh z(xQ06AHdXveukP7872Bkcces^X{%pdC?^4&sDeqVCN70(64{ccS(7G1jrn6pMHx_t zsAcF3aOiM6aR%WF=jK%L#NVX)*Pm?EPkQp&RTuF^fNn?xp+IJ?sY=%ZLW47-LjeL;1df)>>XJ~CzAZpY zz@h*a1%Mci=NOkKaA_{et1UDR?5xebd1DJ%Q!Z_t@;A%P>d+letkh^lW3fz@?i6&y z!Ab`z;CNa`n8z7&HN-QQrqhf}yqTJdnQ}$Fz#vvRKt}{RYBeJHNoX#lY9X7TrQQAv z@o2InZ;e~>rVk*Rm_|L#;809K9DN!yUx22L7{=3BRyr8ts!216R2SQh-5bN2(xl-c zCb=n?3#+l6#rVJj4>+JXsX4*9BJc`<7meHnQ4t-IFkiB?EpRTxsRq~(251V@KoFBe zuK^y_>)XzdPr_BUN$P0hLIA0+dVG{LU`8egX0_c+%?>0drA0YRGpl(`wbF2&X_?f8 zV$&4@G8>mcHKD{RZde%+WDy)FnTkNxBnHaNHy!Hua5;lkLkKbXk6yYH+l&kZ2xDk- zH)YU3m0D2-#2_2WTn=U0hKx$cgvG)n3=M`Jbs;Mcz;duO#3Pkfy;W&RS{j_n4sW-&y*u@P?sK1e_~C~olidTjF6d6+)1UtIL(}&P z)Wh8v@I6rm^h*S!djEJ-M&CbOA!0OI*R|MNv-syheKfitMTkqP{{lMb# zp&h&SF6`O6w6O2Gg+o4DmzK6IFZ-5%e0D6Z`&>8uY?XVy4@ilO9qrX_8d6jvweP_&r9PP`V~Jr77k87 zhjuKCPc;*no84rHdGA;3^Ct*;!$J8fa&|wUmoENMhRMCh@^Mx%R2~<8etq}6e^dUz z)?I76mJUrm3)h>=ww?QZv+U(_pWX8Zr=Q8M*Ae?%yJz3d)V$0Z(ZDX?c()Y77p&*b;GXRH+G_5+;hNZ+uEYf((b*ByVkbtevi-6 zu63X5miPEvyYNn*e6Q6pyGC}e9@;v;K5?XpFa7wBg>GMZ*S3Y5`jy1O;yZl^=3Rm} z+x>u?U$pYAko#Mypxi*b5ZA;zK~6Lgr^FYfaE4M-@vfMtR3p$pii~KAh7yvZjI>Q6 zhqD?11zun(wG(S}6w8D*Im0wy9?z^~1p*m)FvMS60|_SB74k?}7f1mYjaV#q(n}Qc zh`=KOj7!?&#E__U!BcllMSQp>9nt8bI~lM-MjrKzE;^H0YaNFYv}zKIb;ln<5*+Y^ z%YsPmQFv`!>45}Eec+M8ai9&X(hOA)8$$>tXaH$F5};f{JwT=;n5IO+1hLV9sZFUS zvYAmhF+Ad?mvJ%7g1Qru)ksT$(uUh_zg--cUUC?*TMgr~qrN)!=J{*8ALu@zua$in zDvhKiQy@GciA@+l{~U%$#+AvCity&8iP1@-Qd2Us6u~-KsF4MsQ6g3kPyfhF5L-=Z zOy8h}HWpU0CLFROHEM-J*oA}yqj2<7?M}YTqC<9MI|_j)TS00dS|P)xhM?-e&}K?7 z;*p1S%x(y8)yS8e)TC+_ktUK5!_dG{oyO?D^SeduXZ~=9dKU%6;9#7}Ox^x{^{Zcf z?z!juF~fiOhkx)F2LACM|M8#x>7V@c;MlQafBL6?>MKRbo{5vByd4wyJpQpVYw|Zo zb7?x5t09K@5yArUj{q6R z(*;0u)D!_qs~A|4H~@IN0d9e&z$oToMq-dX0YFUF#BE$1b99N1E^q`UrPWLU#G^`0 zW=azB*e5NbCTO*`qG{MPO}XIG{$QD?SJH!4#H^!Z-91)W?4U;Tjd|<3zQ_=0)ijvL zL?vC>K#Yr(fs~rmq%q1&W;JlSG8Yzf!{coMi_yXDkN^0O9oFFfUYzrtFNi71WDUox zMrXm+_-x73PJmifq9-}EG<}aM+kfmH_6KeW+DU99@#mlbN*2m=BBKgE&Z}hDI<<6K6~snn-YC zc_d_`C@EGipcM^nN}NrWD$LI49<>J8>H;8$XEiWzU51b8%ME~-9+`qG0&fxclQ}NmA z@jM3H&#i)>Bd>5nWn<}nz|yk?*>>CyoaT=Uke~eb1^!uc|8m*Zr9(~}|M}9n7v8<= zv747ZbkW?_wS7K)KiDse=NI?;ywc%)qkcmJ8ya}yYvARpxGOA@kGFRgmk%P_Gr#UC zWB1b4^DA4nuH3k5|GN)tJ9z!}L){Ntw|B`WSljs?pX0wcc>VtU0*R=+PJ#y{dvAHm zkK1S9*u z>_Yex-KGI;5(?3X8Ul*e;+F`B9)Z3<04fF{6JlgmKrm8DP9Q>(5+58;8iD{Kow!_% z5w65mfD<<%VyK$<3wG)~il^#Jldysp84(D|ra*E+!Us*!Rt>heNem!*>02*|;o@Tm z>58!$#Sj?cfTv2*isq)@C=g@-f+vFX<}tuF-QuZ+a;TBsjMaB5>hY|jQP3mfho&ig z(qtC+YXZp(A$9^oa#}Ra8gqI^qoaU65pMdI3OuUBTt|o|^rTh83e6WzIgG_R5PVor zuok`@_aNk#v@@T+gwfIY(V5gyrIY^YmhJ@V;>%Eotl+Avt}^!~$YkU+Ty6=WJpw4l z5yNAxEJfzhhx3BQ|>{Sz}7vxliTEzR!MlOV{7`K`q9KE zvlOF1n36%cw+)#^91mHi4BQ#H<1-sM3$wmbrEm~<6c=;>TKSBFz`gh0>vU-!;DH>{ zphn@VN~@L6@ce+2kcvE9uC>;J`Y9fA>JOd1piJQK{^U5RjDigIC|8 z0apEhYARC#+>GGpm4FiJ%MZu3fb9a}CwD2to zOCWEtOjH60G7e)C01i^wCHC`5G6_ z?g!iwxQS9e{P4pNl&%OMd`~#wiUNc$9e(?_f7=dY^Z)#d%$R}cGq=8C!JZ{Fd4;CHS#YvX?4jepkLkZ?l-r>lWixgQvB#fEhhGbUu`K|@@8gWM^h68$>fiB{H=Z->Td6ZH#Ebs~C(hSisA(e!bDySz|nWPW~ z$Bge_SBVTzDaERxE;xfK;pnG|ocv{YY?X%23F(Id35kEohp5p75CC)9W?ZFd z;>iv8xksK*{%l0`4Wt+039K|bkK9R8?Ym=_1AqzO?gy@%g8Kn5Dj@({qwpeYnf6!{ zNDGP088lgpcoM^sl*TiGE^Y}RDsx4pp_SEW1?I>@u#(yV%YTw?PXA_wZQz-fI9)3n9^xirP9u(UgfE5gRg;RmNVS0=oo&owDV`$Zm%9Ndqq%y zperf@77L>@2dCvKjKXlhs$@-G${X#sl5K`|=9SMY9rmqd)?p@ygW>cVU{ZKT#kp9P zjtn>{OWIv2K-?)k@W2DEdYmyi4~z3p1MyfT8H^aH&qFx21!B*!G^_=Fo0EtO5KB@G zf7Ud>GU1#S-E^;-6c(n{q{b2(OJK5er)#0JKZfQ=DuA=nV>Jj2gn(NLNp1;D9F3t3 ziXj5@XjE#Y1QR!9N}wNP?S!psi;=3EGHu%yOqu2_XG^mEK@9>LFnuP_)atHM7m#M~ z1nu^1Db$7D5NQ$_+;%|&DCxXWbg_!zI2#Bc(@J&B4cd-K9?+_3`nK08?4En>`Mux! zJ;yXx1lFTVLTmH3+is&D8qn8R#7O3(WnU0(7GSnslbXa(!U+#SV=Lp0wiIQ%3fz`r zKe5$Npwc5y576jnUQISJxD!5_l3{2SnJEtsfzt_~F8a|5ARh6_a3-aD0IwBUHljmh znLrKjIAGLF8Bc7DK88x>3slw-AN(7F3(W6w)xed zQ5pY+Fny5T29h>ZT0Yhw<61R5A?MFYlvS!nU{LgF-n;;j41wp+Bm_gN$yK4f-Te|r z`tv{kbMFp}D}ulN>%Z=nK>eTm$)C6%a97}30Ht>cfXe|_)2@r{Do2kVwX4`_>_06! zYtx$b#er?Gop&H7+lWtoKd@zSZTs2*e{I0$!OJiF=FJDcc+-s^zWkEjeBQOZ&!_hX zR_6ElobGvKgMLE;8ya|HYM?g<#`^>A2lg!N^YPk%zb7#H5ya}D|NWX>|J&wm?^!u` z!>*NWYyL38jaM%p*s?nPgCWcQ?7-g1XZn{1{Fzgq*Z1!aj7tCraF8zpgv(UHNi*Ka zq|nl7`R%FP51_HZ8mMhn!2R%tKkVH?Z+1x?1s%~`gc3T7P$J7D-n`VCqrG5Jcp1LJTrFSoZ^n1)$;)4n-n0DDgB(M-uWR07=L|5>Tj>Z=lgiFhNtq zR2r@k#VLFQYoZEmnvjXq9t+=zDitZ%sU)*r>QU+_&T2B8q2V|r7!Jf!10k(a$Fc(a z1#6FFK$8H(E^(?vP*gP{`K34JD8o@n4|-vxi$NP5fsQHx&Lvmq%L+6lo9Q=kg91{i zM-Q4W{%A}P8CEJyQ>(`Tx|lvdKn4OpbcBN>lv09H2-64Hs$oGT`3Xj=5+$lPsTz#-R#0K`59VS0EqPQfZqx*7g71o#8n=^OKYKqlO#-40)XXuhe= zGGQ7Xl|R@nm=f>}8g3yw^f8Asud|_io;f_)oSg?<4%qyih@FMi%g@ocG!9%H1GZCs z-~%7%y>u4zjUlsg;C2As!T|(o**SxdvL?G>OMpk8!^7^ELeqF18V3RL2+7x0Ku zi4P700F*%OXo4XLNWGfu zLh(r_R74dfXtJhkj-mrlNu@dh2-Q`eY4oD)c-jD|G0OB=7p1uyREbiTS|I>WLo|w3 zOvnSlR%_hQ7|zf@P4&beB%@>(;Q);$1JP9)#tkdO;eejovjrv|RcZnl>Z?gPz#~;K zdhwd}JgQ6pU5rKMcxsJ+JjmcW0)o*wo`~~F8h|7ZRyb(F4X&@%;l9!9DAGv2l+T_XDm7#=8V=3DAG)Q=f7<;J(qu^1%;&(ER{zwk8XfRQOxz!oewD z3yf=nliv?)U0&b4|Asw&#=d*~Q&((y_B}T|dh_A?F1vW+e&CIHrrVHeLj$ju244Ms zz!kyT-W&gA*XsXu-Qv5K5A5GI?|#6?{lHd#v2*%|HO}nXwfs-v}&4- zbb=JAOhl<3H*DdM$OKdIm#F4aUtNGlC7HD<(HEu-WcnU;0qH>#h+Zqsa5cokXD}&+ zkR~NRR%QfOj~HSiN;5TIe1N{qPJK#90C-a-e>FJhh}i6e&c=lkk{Xd|LPNGnm4qi} z16Ap9=-klkI1CXP&gNc9&_I$6WO|u}LGdi3pl6SIF^atI>giY5jw+(LG6a6=piB1y z4u&DVIB*(GZ^mL}l9(?cxt0{7+@3qB(Fy@(G_l-E-#J3Gf+UX#;VFvJfT;nK1)0^P zOje~q(->W`f)s8zCw&f;qCu&nFxuwM{Y(@K#mO@*qOtHz&l=o$?d=tR7k}E8o+SI8pAOqACs;tHDQPn zt7>p|!*InFSGZv?qH#@!`~)+7Yutg$dZ$~!5KdvftaRXlIBYsm+Gkt~c!fY_=({8} z=I+XZxwE*7f^jntZkLA!I=2?q|spce)l8@(am_P}j`T-{~Pkt0VOB)#duQfgcy`_lQL zhaU2Evx{YSK?Y@g0~yYsppA=J0Z9N4;n-HCQ?{eG6DVOiq;m|=QQff=0sj#r3Ne_s z)wE_kV&V?U!gnFS*~BcMd#8RpW9t!M$oKFB5cDbyhX$gTz6}}yp2#pqNkX$jiAD{P z$Uwbgi)bIPJWW|?VXC1DlcjKL(~7V>0Yr_C5IRXk)MDk1mmt`GynHbA2Th#DGp9mLRV>Rjen=L=jfhqJE>A`_#J7@Ob6($m&eGIL{a3Q?&Xs&vQ6Bis273l zC`yW=BHA`D5z3@Ex!LhF%1QZpp)m^_)bk~i$~t2oCZQ226DyS{l^zX8a;*l!r&gsV z%nh1zVp|-Uxcf_g&;UVz9w115!eGveOe#C#gHpZW(v?B+@i;N zI`}XP=Gg3*PLcsbk|@(jE|ENR2$BjbmB8!>j6Xc>Q6OANQ4q|HWgBs$=zwoycMtGa zfAv>>Uhu>dPdxeLlTSbW^xyo=-?%PtA?!lH{Qv|=J3;pYwiGW9*jsp@OGw)k|71<# z8QRhl8qUQ1!1m=syVef-JA^*}Y3ug;4&QwH4LALd*KY4^0srohkAKe0XJvk`&+BzI z+2FIGfej7(>@_fZC-ATE#eFBdKd`)bVBg-u|HtB4KK?ktw)ri~3)e5rAKbTn{m>r& zKI7rZXZmL$m*)@q%rC9_yuR-bIKr3gjkEmh{ebkZO!#!~2k;yWPe8CzNx|K>$#tq46nF3zr4oqMJx6kx;3x5?P^yJcW3Vg~d7&GHxRv>QY?B z5FiUsswV(>)Zh;cO*W5aheNY&EPZuBqZN)4#1IpBi4(*`C`8_igJemnQ|_U@;f$!> zp$tOjx=;nqG^sQSjj7Q~D?HQau2qde8&}7K(S^XJF@if>4gJ7@?tqp`3}h^c0nsI? zlsN06qj3#XmnI@fK#-iK;}q#DY_|c^quy!%xIo7f?gy&r>_aDJ$7&`{cxsdd@h%7l zQ$wpHAAU$?^Ch8D7i5UJA7Zl$w3-)PNl@9>>@d+pC&+YR;#|wD=^=wAi5gAmQhoU=@r7{j~N1UCkC&Rcr&6wyB0vBMqh{$t{#CQ^ipzcGFa43m%eFr znCe7kg62*nbEg3--HFTrQ|jnK0N8UJEgek$;xGQrUV|rr^v7+#a|?kgMNw&pmhFeYg7ok1Xh}KpOA+K6$=x zoIm-=Phw?1w_Yp+BXSSEWRJ2`jmtkdD#-0EKxb`!LK5Ii;V2q7hX3lXPJU}_3Os7| zoWh;Bhn1yLh~Z8S@96OX&Ji#1nEc7XKn<7UjbyV+Ol}AM-Q*7y8r>*Bs}dgsG-FU~ zl>_wBs!PIyLSq%9SK129-LAqqz@uL1b)+0B!VP_^ zSg8_(&>^0TNTqZO$0}7=Tv! z9OVz@LL2RG?L|1Cqy&>fj4V6y6LVBgas(L#PIXbH5Sl@zlA?a1;h2DK6P^ZeAOnSD zQ;0$H(#)F4NEq?NQKsLp6I%^dUhbOaEqfO>g_M@@irs9Fiv zMXTlJWgG6~7c2e*f%^fM1J6A3%(uSvt#5wwn~y#Am?X15c46E1M+wllB~atVl}~)) z6E+qeXshY{0Snon#A73)oVojfZHou@>{|8DsQv2ZtNz2)*ZvRJZ1dT;ANbjy-8M$t z(7>72z`wc^n7#vWyk>eoF!{5D)87~PaY6S3|8@1;e_20&?+q)vR<^G!9`dgwxF0w$ z`6o7h7WV_)29)(FJJ-*qf2FLio*Qc|ot7cT>IAlfKSWdcHewmRl<+HG`O3Gy{cT&i zv``QcwZ&^qBBQutbDqsHN{v*CDS`_EQ3eP-c5;+L27uI2G!b!Z??Q}B3@*e7UH}r4 z0&4+F1QfrNMmH8dM)4?g0%?Y^8n@_)SiMR#O1L;qssgA~Sq^|wt6nO_P%&LJG&BiS zq6a$4OiWw}M~NHeSOGPdXj1BBvUMrcmIaC9(JSEwBCVXKOi7K7#x-lI(2AR6iC`v< zEkF-&bNFHfLl|1Uj#QdF#D?IeJA$TJo&(1X49*dlBLb>0aW>Y8kG1L z1(OVCP)JInJyr(I0-08WszI-NO~??yxq(V{gd_7vx60%sk5(NcRsxeUoFTN! zG2r9~7)7O0y+`#f3V0?k3#HQ~mve7`z`{3{dX;d1K#iQdI{{6=tO-NCv|U;#sdL!m z-V#N59X<1_bV#4hV!n^|C6R1UTIgm#8tL02HwI5V^^_da`=yLxQ?lc+xSIi`ZOvwN zDtn-guMJ{8`r1ovl0Wx5fms1u3k2=zq5~)*5T2qKlsQ>Dlx^`>iR{ zwwaK}3#*|ip?i59G z8)I9g?#!VcaX^O+vc#h+{%na^4pwo%pj^FNh>*Eo!jMFFGEgAZ zSt+fKmWD@50C-el+agup!kH|pDTo5r4i388I$RstAG|Q&TEO-1bI(0D?gv~ByAyci zkw^Rn!7YJUAR@SL{P@Q|-j54oiaRBTE-G80cSU;~`p7*7E|`R@zX=5Jcv^UmGN zt1J5t`sWL;U0i(o%EGk=*LSY?r_c8-&EM$bpEL8>y}WnwIm7>u+$)}6X3sJk_=W~H zH1PUrV0u5W;NMz*!{r&vwiNr?V4L(TVB|+bN8ZubMxSyl{MSN)|JCPFa5Pc zf0o2Qce3B-^?H9m%2&QO4(}y?l_UK-A$=Wr>_8$YomLso6F83{M(T@FR%!2*pTF?J z3;vRfJi$&c=m_^ByZ9?S72`xw`?EMGCJHEmphzTedo0`tSn3N~!VpS)#5)00;1FDJ zRxhRqB89NxI2x?<6|;IO-10b*2!UPdWakJav@TAG&+V@LG+alQ6ptSbf*oo z#t=6$t27Ww+>#szV2&6{gvwPAXeGJCfB>eZFC=xLVFkL)78vR%-O`FoN6Z_=xY7W8 za9|x85PVC$Xo<||5trk^N#c7h{>JSUEx%mkXB8NR1hM;O=>)<$-&64yGPDOA#iTM9QdF|W18j* z3`83gHQX|taL55_oVZEVw{^6QC!jR?$H739j3>1Kwx%LLu>gWnD@p^AO(iuN9V^T+ zQR;{cTP|cEm2j*yAw!Ih$DBcH{z*uJF@(cDn7toR+2w$%05mx#=Fy`B%}crt49XRW zfksC+3@RIlw3N&czJr!DGKzH0iOd?e-T~hTScJ17kgVQ&@4en81>PTU>hx8S-#beY zj~zQ^3t|rYm4zkDR`*_55WN?XX{!3pJvg!5b)-u6@Q%Zv{C4#q=AkKWa ze)R^zEn)~(X@hAPj*VE2DLtC3CS7O%r0u4!#1KHRrSJ^eZcOc&KuL8ptUd=;gTC%b zrR1E3!!1_214^4(b#h~%Z%$%rrq7y&Q;#54x&wT0Q<=6Km*mtAa2SAtsTs~31HH%w zI2b?Y*j>R{%Pnnp1spyfMus__gfX>P8MbyCJ4$wY&fkgF`mPJ zT>L)x;Dg>4c=E|7y*%*jv(G;D)KlIc@XkQ+=oI`0!RFr{;+oMm!W(&@wM=GgIbn9B zAJ@gFzcZiweqd?m4Xy}wEv-y)et%qOef{cvt5>bBY}^lQ+*E96;7z1~#eM#L!`b_R zrG@=|U-19#nfw3d=k~9!F3G#6_XG3(2;t)L&*gqV)>rN~?gvhq3EMX1&t=h$|B}f# z%-#vi;__hxBGdy9Jm3o;cf781?Z#rOxF&pz5LWyWiHcu^LXXu5D3HQg!A>dn0EJ7X zU@gBYB@=Ocr{mE;GA`V7H=<}IR0;PEBLbp0s8k~vP--p8t0$NeC8TJML*av{f+L>g zGfFi9;fbn=JcV^Q0pxxVt(b_jh_NySBbpSPDm>Pt6;G0A)igj&Qz)0y(W8#k3r}WE z=v87ufRu($Q$U6Z*#NxJYtluHzGVnXIx+Y3qZd{rR2p>XL|;t=&>ey}N;Qz=Cy9w0 zQQzi*OafyFe9$09lhPpR7IChU zfD^7`DNisW*Wx@fkP}jO=`K$rRZ3=V;IV0%g}zioS4t{1S%%OBH;IkJDNjIfMge$YLP)*j=WYW)3UmYD;13|-N;G=mAW^sa06VHw;-6VHp;0M;S8sHR z?TjXkbWD>gT1udkT8A=AJFD@(w*=%6WDBLcSu|4PjQ-m{k#6e`++ujQ?~hEam5wv#ps-tlkg&b$QigU zWYw#58z5tMY}CbBqtiDIUjOimb#D>K z?LYnLPrL2$VlY0I70)*!8Mw4@i3Iqh4TpWj0wZz;CI9i*K|{%f_?1=3Z4g_$JPl&$ zspLo&J{k*FC~^G9q>^CdbV1Q9Oay4n6?F`BH;NH?EGQDSb=WQp3L49XpbKHRv7xo9 zCr`TvJ*VNOX=ziwr2(AKTZYywJ znzsG1UDTu`1_3NvYZl_Modm141p|?U80JL-w8Xd$WikNIj(I$>YP&;* zp6v(>Af|~4nW+my0LO%eHL+umbF!vZo2_Y@ELLU>VxpBPHDxjc4aY4bLk}=iuQl^Q zfG)a|VW@~6h;29wGYYa8+ARS->T4Z>nP#y-Uvq&IX?TcH8dP7-JUra$Ze3d%5NB;J z&Gd%TJ)RIsAitscIivH6c6B~rg|-!_nJkzol*K7qN0wNd2E@?04KbYY@4N3lyS+OB zZw|QrefsIAzy9^F`^ABKU~dl0-VX=|HV~Io?|=XMU09K}tqC`J&W?l>18! zdlzn&@cUYDyYEN#?R&@GAsb{%P`jSKEFWB&QNM)D%($FL6^89+h@)u}09*1(|w*11@I4 zbq4~AyiUUA{Z$c1FhU6mg~Gi9pp#3P6>dRMti(eT5F7K@z)*MEqaqQU*ha?| z6EatyZp{lHF&bwAn}r%=Sj7_`0w<~(k6QID7eY)b;87Q>$_?PiaFey_rF&D>y>!AX z3~EFK#DkC=x3XL`7|Qx&U&b;c1X}enL_jkpmCiG?dZQpSN12{)FyH?6w>zge(RZ}( zTEG!6ykW2eGkCp~uP<518C3+1Vt7?wV|Fz@zQX-UV!E@KfI> zPfCfWJ+mtUJLk{$e&B@BixEjUgoLCAQ==T~j>&k1mBOGb$aVpfwZpK5oZr#jADM9m zWG`!nS35Y!#skJ`MYP0JIzqB3LpyqR5MW<9JU;i|f4}P;f7H&q#1IEeY;mv>IU#qo z70P9-KqLJpan1O}v4l3%Y@ zZcL1bL%?ZO;@{q@gcCrelN5Q#tdb0-U?Qet{aWBHZOgMA)$(b{FoBf5YvNR z6oOA%P^&ooz}0KTyfu!km5Xy=qp&%&EhypYu}u3V;}pN?{L*HH$_o`=^Mx>_;4pXfC(ziv4IR>EKO?cEy}zO zG5{sXiII@H9Dge)J39zCBgA$Uc#vKz+06g_Fg!*<-G-Gzzh+=78C0*%-GHqm$ zd@{E*1WIHRO)W0cyn04wdMYAAb4L@ zMmKAV#k#Q2tgP8R0b4vZL9B7k6OK$c;4lW#tF^{+5Zfhql;07!AMo=rR|M{XyB6q* zz>flGeEK7i}qu(K!q=2?{6dji+!Gd-C@O+z%}8x^c(C(!$!h z9~XFq!0!uO5uEA!fj9H%Y-8>l8uq`^4k;c2Rv3&lax|oX^$0@%c^i2iW&vO7Fw&V&!d+0JO9Kb*7znc*-Yn;@=L-&Bgg1o5F9czQ!qxK9T4 zCQeicKFt?y*7~Z)&?E5(-#OPnrhrexn&7}dcp61t9n}MsX$c<+CpH2&u{&RwGEjq? zR))YtujZ>SKtRbcBs}I=`2xsS)vgHqal&ywz%zlcep=v2sF!mhK5&u{g8*h~%1UOE zqVOo@V>K3033!5%Hsm=aOWZ)xf|B9XtBemyeU*SYsEgV$2c||RCS_1aZi#>%@<}ud zYT{bih#u03R(gw4Ju^k4lI56UFXq~3cUE@i++ykjnfxic;SaX{GpqH z=bwMx*Ga&2f$uTN?^>W+0*HHn$?d>}lYh?OO?W?GueNpDx5s@*d$=;N?bFQVmtWrc zWjF_@4si?zXKtqC5-h@SzD)EcfSVk9a?7WLpFsgrc4=T)Su(QpzC%RJxQ+mzG0lgS`BB-BDO;Lm<82N#q(8? zlT#t?S^&cFFa&Uu!p)4Z#e6E`dJy4!j1!3Vtx;+KZM`@6sU zk&k@DJr8s91WF*AzPRDs9641-Hc>b*>sdgC09oKMsSu|k#1M~Ml&?nS(TvEJQQ#(m z4~QOuQWpqfa}1DCQPZ4Now*Ym%|t0L-Pq6oodbrT3f5_A7@8)Fm~!68Oj=`0;j{-b zIwo3qI1WsihY*;arz)SsXr|PcY=$PDdi)Uph}Ia!(?CNc3dd@U7~Winis$HF6ISFQ z26;$srC1ki2jS;dhgG2Tm^JgU!6ZM_okDU9>rr1PI%Yn~*?sFW^9wJP5o5ji{tw9Y(C(I`> z0j9UnjSGQOz9=~P{eXYJz-MV;-|F%~f1mKyUGx9*{PMrMdh5pDC;a)I;5J6z(7>6{ zz)OEIVEC<~!d6`hvKW@d+3iIN;R$o`tGGPP z*M0><`@hf}2c_YJIYWq>#!^!bAU+DUVno>jL;yu89vKB&xTrJ^fF@`lASMD+GZ#G7 zqrq0Fg%hJGn+{fl!~|vGQdtN#Mp4CJ^$$#NT<$!{Q_6+jX-cU%vS2c?sRJ|?3;varxnmJAytyLj&M^ZHf`i8$jnsb=!;PcouYIg)#?=j=MMJ+eue7g0g0j)P2Cmz^FRNy zy8@>YKXm%)SHJ4FsO}TEkYg_&a6x3Vn%oY&bU&cpCZ-(cW%y4Ic(zrxTb^?AInvcL zh1j>rX0o>T-k>m9HM5}J`vc6BFF}}<#R1&5z&+afSjtxH;Os!{wBGXRETBnF&Za7@ zBSvJwnyd?8#c_a6-85b&+vkt0X$z4u;s1$+Pj;#gJ2L=@1SKOj)LaIlw- z;Vf9|)SBf#)|Z6|EX>wBzak!bG6Vc|v|SSwbM?+9L{b{UK$shagi3hw5C#(f2~5y5 zIj~V6WB}D92^p+Astc@QV98r_t#ODZOT&7h{J`3@ppWGbtmQCgxVCeINpC z(OY!3ky&ndGT*3yAV8J?5TjSNX&AaLgT~GPJQAkuj;hU_TC7cm^VO}FKzxVW6@f=a_>6MEj~%z0iAPojd_TUGz+QWYbYA93PK3%-T^C z%529FSfTWYGf8yOnxSJ@SiuJ%RtYg&qiEF~J+{g?$2LDv)`~zczSPDm>#!oM7f7pv zt6RC&i$%@-bTr%;@dPGx!vDDk;?g19uxe45uO^SU8KP(lu>h?y-om2{8V6(+BS&)l zx3NF@&bC8+yrkihvO8f~9n{KdK-kVxA<%Wsu|q*o>>-R*ur zrSwwX=qn^I^gi>9|XCsmsHxU-|W=D9H2=FgbH!nO@s=)z6(}b8WdID%7uzHnET#b$(bLfs(Vpgxl zq9x;+EE=tZH>e3p&K(d;1kdJ+r|bxgiR+>yiHu7nh8{bEBTij9HiQy^lE9qG{eW|d zZ~Vte-}!F#an!#$qKl68b<$}f^eOk?MG~Hpe2>|hRP;=85`u6lB00QDxam_u28u>a zO2B98s*~3YH066JDON|U;-j3p&%}Sw#4{R7rhiE+Gv&1TD%~Q;+-jt)adQ5q(ilzO2gZEGq5r~Z;^G8+rcu}$CofNL}cWoyQ=5+}DjTPA;K0?v!n^H0`cHEBFc0S1-Z^L*9OW=(N^D^A&pQ^GAem0HnQT+y@=Te-~98no_OdP=L_0s;5~kGc>3x{uvJ zUrUwY)BuP_P`w(&mVEU}pvlm{a`uRTsDU8>IjvT+qjSn<3-+=wt>~@@KJ}?jS%#nd z#%0!vL>DAWv1q9T%+J`6uX2?gLeVQEU2-|**d^L;BKqzFc1W~PlcTn*wQws zn1(?~NLQv1pZF_L8iis9E8KWEwhg2y&J=~Gxtn!bZ5K5P<>Q}^F@b^5q)C)i#3)+P zfC$)#2H?7<1e`r$g;*sf^n*zTA~_soHc}cwm)xm(Wu{Rg29ei*sH`*-cx_xqP!@VEcw zosa+9U%K~_ieTgLZ~r-~vo$6s>xJLrwih6Xk? z@VaWiTLC_=bW30Xj#cRu0-tO5u3odcys-O_f5&8gacR%O;#CK4di(kf*DW9R*}k^m z(_O)p>o@wm0pB0E=%UG6+!94M0Jc!2>@h?FIqnB+nywLS_zykw&=02Y*kg}L2_*0$ zqhL`W5Ge!#;Xw3}j0pj@YY}9`CZSV|zz2;$AafHMfQ?-#tmvYnY)#=M8+KjhR) zE~-}@31)P1N_+TH?!=>bTBi)2#skSr&cvfzBBkN-9Nt2B($YY)KpCE&hnqFTyZ{74 zY%z!60HHKMo*V{^Q83hsx!g6YQ9cW@Bh#cP3^~Bm+LK%qPGciOMg}-WMx=STiK|2w z=%S;h=A{Iha5fk7h2W2azCaV4J0(Cu65D)$U@H) zLJ}gm2Oy*}NK_?N*z@V<$}6wre$2{bPE2xXi&5!IHl@MfXjKxQ-%YYN>D5HDf6&@ge5G(lro6nt1|bfaKvAPha` z+ji!bD#f-8xg{95*5Xc-R+ANKUKuE|Ni^^PDJ^k z4}Iv)JMXlLISkJsu)gNr4r4g}W}0?9GX)T!25`B73|tL@C{>b{@Z=;Ig^-64i9|Na zBs@>HeZ|dih|Sm3+GaU9-wxo|;;Cs+5|z&nyHEnW07nBxq{e0i$`5XlNyvsmGk6R)Mc3{ z`51%`(;+u*)#TD}#D>G4gj9riGSC1$3~xlnQO$Y`k*?@1GOb3jMvMsO7@}dz6QbVY zQmNI@)}t3xTs^rK{^A$EDAn}uXnS+OR{xpLe8z7IG;ubUQ38YzBT~3&bk%H;lEi%3 z)T?U(fv*f~adyA4IiKBm|r~j;N=%Seba$QZ$5nAWf!06`+;!` zIRV+Y6WGweh6c`@243lYVCT}l-7Axq2gZ6N!|wU@?FS}T1S^a0bU)xv5$>K}c*lWv zZr*p}FUtLZ^Hhf~DRlX*Qub&s1rp1WOqH@&-!zH%Qt==D@P}>)Y}#J#^-Y1$QwXp# z+urT-5J^-=NO-YngpW>1!Usw;9s$JOE=<6UB1x;eM?4FKVw2oJ=oii5BB1CaPKkiU zMfsIwa&|O4BJc7aC($xvIFDs)DgY99B}XyhkJwv43yiL5nCWe0B1fN@PVU*D>(qa;tVJ;(WI|> z#KcBJPQrU6EvX1#7TJiXWb>$_{K~ik^hHdc=4A?KG-1xu2;*kJpd{ye*hb7V9qpay zWpOe$M+snQ)9O$ro;Cq&TjoaB>e%RD=v?NDNS6S>drH1A@*1<-051>tBFUqx0Hv2s z`)Wx7>7^z=ebU!A;10hsLv8@NALuN9{Epyt`d>UHpPjqynWvn5o~dhrS-#|HKUbcB zkepg97PkRBiYb|o9XQ)MXtJK5y)U?#T*TavpomW#67m>7_K$mdbA`VjW`{75**plh5+D6qNbh1 z`h~E*j>H&%EK1_FZy1pzq@u?3%sRA3Z!K_l1x{*~t@{Cq0j-jss)hGn@Hk(h(1rrgx(Xv&D&Cw0WZh`w14$bd7o zo4d(2Q=IK@>6T)F?kd%Qp>6dZ+doyJF_6)dEe?%K9{jV2R-*)PgR%%A(Lfpt+q?^t z*rE({oCq}anFMaWaWD$NN@a*rN8(Wq&tVHtl4fa)<)DT^S(Cj$i-kX@RRiHqO8|3^ z1i+J!`6T;70Bt0>;Q%}^w3T9%Rv$dyHiU7jBv{^Mbjx2>;cb6?c>aOQ=C-c+2hI0gx3=oDefdV8&Mf2j@KYjAB7NdBUQ6h2qivKM8raal znb5%Eyk8Pc{`{a%ZwR#Xx*zbj2q0>@D1glGxpCLd>sOcdEzPg_n*=*ocFynqC7-pO z@A0{IeaYwg9s7N@uS`B~wD$+bc}hCnwZKRt?WME#1L_6wJMOr{`@Jp){PNen?aKl= zzwKSHD5yzYfY2Z!wC#JeW83+~BXL2zP$L!yCCDOHi9q;3BL@>ThXb_$RsLHzuA{IyQ%nKQACSro7tVX?7Qz-qw6LU4CF<9YQD?aE6Mi^;>fs|OW z3rzy`*rvwRWjgo}Ltnycg(!{X5l!=ziU{R$ORVH<4kP1!KtSh~;MA`L2Bp5BNAn_~ zxv+SM5&4z0U-B>QFPF%sW=#^f*)dbe5`y|tpe8^|N;5JMIG`xzQ>g}^)RzxKFf?m6 zD)G~rHtJ4GfGt8)k^uo5=>o_PAK;NzLA@w5K)^=mA-Gu=l3q(S@8V`UswV>)lpaZf ziAN)9YUu1@E?V_65K8hR;H8|(aI7!qcN{>*=!P(m;Ur`D<3@FkSHAl9s=!A-`q4l8 zvpJ|oy*@?oGoaEmH_PmHiGL5tRUYUN%)N-@$*%YA13&=$O{8*8yq6&LHgT2*8)H$_?<>#SUYIDiNbpVxq61mE41man!b;I2*!n(O`uM z@Hjx<>aju@7!CnSB9Xyv(6+!!`D!-J2HB^eGi2(RO z2fss9wl|tSRyGIW2JrCi2jYn)(_jvnWrfMaNYnk3a&QLdQL=)mF@(pOka=vkhtpyE zr`9;ot?r{lKmd<*G_<~KP0u)c#CZUzhHRvQ=Vmwr6Prz~AAdCZ;zK_fi^c$x0k%`g zhZ#sEV^OAZ>h+Uf;?S_Zq@_Aw2(!S@#DS)!4;he`Vh9Y%O#Fl=W7U%651^%IfkVhJ z=;10YH_K2EaTQ?C7e{<8Wvhpa2wq5YE#Ml;Ru7Q9|NZY5bZ)uj7R%6xB;;ehba2}V zyendhJ`?u?^Sf78m-o9L*s^fY{lItLv-_*>TE73%xovy*`)uF4=Cfnvu#bNm-DjNZ zPe4xhx?o}TdjH;fOpc#W7S?yn@AVI>ZG1K~u%Ur7q=AJ!>pn5}dVtT)h3Ut&!18{d z9gCCS5RHZDeqiU0gUbth_v~DnU!UKxykpO<_bkr;n_ras0Vk=>Q{4|pAf=9h+)^H_ z^r+qjD?r$;eOvd!3oqENeShb=Ksr|-5CuxuDvLW(CSeGHO&$r^XAP)Hxa|h8H^%Xb>x)6%Jxl!XKE^AA)C3t zNyv73X_ch_NX}q7=0cw|gR>d25zxw-5UNlQ$=nF=)GM`97l13(XC1m7o{3UZoYN{| ztr6g+m38P=4IE81RGmL?01Vj|a06Q90BXpr7X;wxQK^?o93a)GBs|%2X_bT|k4Fr# zGJ3v5nZ6v9n90hV0&cza*1p7XRmi5k$8oNgvmvlWJn+B+x7~J|Cf_j1-)O$Plw$L9 zB^^?}l69ncb@!E!n*o2K$~yyoUm!DdA>idwS)v-aCf_JM_~3)yE&z`_^2m!XzUbdo z@dXosxqyfH3bk^bg#|LiZ8AnNQ&YxS zO(BVraX^E!Qb(iM2dsKvQF}DH5|BaV?4Hn~HVP91O}e133p{%DczVRaKqLfY)?G;e z<{*{QjEF>38e>5U95*WMhiLS|#1MEI+EHEn3OfE94rubIo)n?^-#qV`<-?Tyf6xH_U(Wmv-NG<=p$Y5T?bTOZ;}67K zd(~A}UcK#-%inRSZ$dU*IJf%VEx-B4bMJd%?!8|-`_~`!nS1Xelh3Ww&-=bK=X1;B z)6Wxgw>&ZTzQ-n?Tfa2<-16v;Kkxn0oKN)c`|_O6t;l>H|MBO2kI%iCKIi=UpZlDB z%U}8&SJbS2-uvab@ww&8bGLl?CCW$UZtF@izyJO3dzIJzY(tjM+swrjo4I{nCZH4x3Pv`3k5UC;q63bk zPGqrx3o%7-Gy;~6g%wR|l(E7bF760(HvGa+fmJY7DF_y}#BLdd(h%e<3Ky*5>Wh_) zBBjBqSSB_JMr2lLAl=Cf)RP%KGBT4Y0*|Gp%|#ci5SXK0Dj`4(2?2tFc+z4^A+lB~ zGBx~*uqaDEAeabn*lL0s8ZPw9nxt(I@vb~aNdpn%PZa{9R#0%%MQRi)B|J^i3|y&u zK(N&1kwJ-vfJo$lcyz3$5Hux(^r>D+Le|8#QRqiKCMi&*IqK-qmr8ylD3m*0a-L~a zzs*=?AyB#>aIOzt+sy!fcI43)D=8(vA~WEnK<3c>fO^8@V-QwjeTX?yHOKP^A-0*a zqY35)`C%3@WvvX&l)9kT-P|1|0E^&{Qf2DGNB5y{xEl7NH#(%Q+?a3Uj2n$<@~8=i zY^MoZU?6tk*qnh&FcZi(aKl`yz6_xwVRS@*9xJVA8jd^=rBpq>DlxS~f( z3^8spG3RuDR@y%-Xit!{xd%`w<)b}nan7P`&_xityCQ(wC>SDbnaNJ@U0z;0f%LHcxw|MD*tlMTag2+R_Ua38}Qy0b0=;NO$#vUQHc2j3Mv`5M5f2h#}(#`M)> zZAOoY)`$@V_0k2mmaS!Oc>>Fyy=?dZq8^_C9!F4U#~3x}1q-d}0YrB-vrwzK*bR)^ zeq~TX5?E;<3;{$9vANBVnZPP_)EWm}Kzs~}b6X9vriK*(IH5gym{rzzr1+#vblxp zwx2(D*5z}XE}gqz?xOR2Hl6i0ADgg^w@9;T3IY?b6$dtC?{ujtlab17y5y4cE_~Z1 zmv7$u_A4*B_|nVX_O?qlZ94b-x6PgPR`Q+Wzt#8dx$CdqdiQrPyzl#$f8d)wmwfOk zpG`-npCiXM9XWQ}r3pDRA_b)U=c`i4(hn$^!mAAELvF23topC~WA>nWd0?mFfZ zK{|hV`KD6l&tS3_-}Ri&rFVV9=khzB_qp_gPxxH?ffpyABTxBU@`2}lvJ}VmNwBPw zeOn7ze73ye&SO3o-~D&z-}(HNN1ng*j$@nu!ylge%Mbj-`+>b{`+u;$*=KS6-PbJ~ zayfAA;`O`tuIyP~eWTqEoRIt4qimS%OU_d^Dg>pGqm=R5%{(dr0^!5WfFBolc|gMN zIAD{vC##nui8%Il>6VQhZnqaG1q=H&0x`%gU0f@Oi&=JZ`#BCG0s^?Qlnf5wg&}dr zhA&i!P@=BfU_ ziv{=a)Wxha5T{OQ21n(G4yQ5-mgOX5CMqDFIYP{fkfw;(Lld22hwd#vo zu4Pbb0Z)CkYQhtOz9f?lDaWIZ@R8jyD626g8>wU+h*>bV{1YF<%z+h4^@vy(nOok@ z9B|B;nBDb)#NTk4l3<8Y5+<)hhFCA$;07JyA<$h786W_EkLs=H`|i8XH}%ps-{Y9I zJdNA5@Xei*mkLV%H2G$h@@W;Ndb6NLR_Fw0;jj_k@JfJR3V55;j|glscAKZ4e%h)3 znP;By=*Gb10GiK!_Osp=@UsHA@0I-eKwp*qJ|SZF18nD_Ns48Q8(_z?iP_dp*bIOA zM?AqV*8Ko&SS(hGZ>gM;fI9(~1MhgpJJk3BtKEa!aC-)_E*MM6i0%39&-uABgk?E4 zpJ!Z7Vu4#td_c!6&Oj1Gi10cp2g1h^X;v@`)9SEPEhX!y{k&ym`PeOiRf!C= z6)Wu?#0C&c6(zM#*4uO+&;_wpb3}k1ja7^-{uVE=ob45sr^9cdK@$R!Bn+Ae&{)oc z9&w-^z(c}4Vi-@oFo|bFV`7d?)9!&lFQXtE6CVOZR`>RzX4-~>tc@k*X!3{&Za72Q z;%r}x!XoU;b8;m5=ZaZjI7aS-p6V!2_rVZPl4DES>EwQ_vFU6kztJ$4AmXN@wT|fl zPhdtWmGw0dm3+VyfJgOOo3eTcNz#KdR_Z67F}>H-3iKuX)G3bNQ8(EpZgv!fm5!VQ zJw8MQLpJpo<~b>i#!}jJu};EMTB0=d6liIb%kh7Ru?T>V31(RWC_xu&}hcvbJww`;{xZRxdc~!cFJA<-)VinY-v*p9{}<>jh_@EAbYOTwDtl;!bx3@G|fs zk)657rSvyqba;z@l2^8V!6pxvUv$xBn>Jl=(PeYzoPT^G3%|DWj=wnP=y%V(=kMNf z^anm?-~BzGv+jA(=j^*DpSK+Sd!KWU{J`feN5AJ&{oFnO#pkTMe=z<0{aJVaeSP1e z%iS-Yd-OX#=N)}ve5!f#lymp|uhY*z%-!?S=iVR9`P}mZpY(S2L}?TC`lQcUt-jPc z(fPSYsr1G3CMrGtdGl!UXEW2ed%xpz)`y;*e5U?Cci*we=idJ^`F!~K$>&3VKmEKg z_n{ZgKQj4bj;zz_un>H*@~lnIyX!fZ3Fm$IM{^(iyNix|`{KL5bM0+^dG@b-V)w%8 z{L{QvCT37B5hc_;XtdL<0fHZoJr!?Jw2VIlSz6!nPif#{@wd8T^B+a zK>+s?`F-wlo^#K6&%2-ZoO{0eeV>0ZJM_JHe?WQxHmE;mqbnon4Nh{DG$j#v?vk34 zuN(qMp`bVpC=UdbD3^Ej&^*>X@x&9GH*faop1f@Wp%?XKuPtMGh?%`W|?*iEWrp`6tDx-D%`bTR0>jjYJfhP%19pJ zjdcqXph*Cgj3O``Ll9KjhfvLMw`qY%cpCtUr#HGQwdk__u!}3V2BR+(I2iyo{B}6( zK-%ykIYZF`Wny5BI5oL11|%e$$b&3|NS=ziy@z%LRYD(yD2pr`Qh_P-8iJZz%IYG3 zUgrZ22Q2sV=g+q{urXk5D)1T3Z%twlglmckOQcN6gonYNMwcs*+YaU z6k6Pk2SSyCn2XF> z5K+RXI8$>37XUWr@uX$9i47$LVJ0B;##T&6I$(g8xp)y5O;6OH< zNEu$4Jr$#jC8U9&fHHhC(=MZwapGA2rWX;t+DQvE8m zB3scRgMs))Wm+d}7^E_bdTtp_W9Dy+sjg9YSN4R!!dS!+@r7HB8Ezm6wE(<`%14AW z#Y{R=$+R-*%reu>T&4ohtHoTicEHhPMu)XZm0r|gLa@~w7#Q#t!D*+RX8&OGfUJ}f z@$k*GA_K+UDuDo?3kvAV19k;6;oD55Z+$+{-r3#S-qqT9sOxw3+j~*RwBMc8_K8V* z&S;xCzJ7wkf#Q5%=jPfj<0dw>OlT}N;bgD__w27O30tJxs@MXVeNJe-#3lBW#T%7- z?6IHS(cb&)y89m9AMh0eUrT7IuOBylSMLvus?&9R>%h(ROV$_H(BrP!l8wc+bbWCx zDX#jVO|FK;kGtxJHoDSYTl!>iEiuHksl1A@q1G_;sH3V zr#xMAEq%PW#@H|EUkvT&Fx) zT&Jxmu4S9bYi(`W+UCW@6?eotTV_W&7vkl3vn-njSGyWdeaiVj%fRZLm#&-If4lR6 zY3<$42Yjs{=L20GvvWT1wKmL|Ij_5O#K2GBL)JU#TB5dU$p2a0tSQ>9V%ZHEh=MdOhXZNfjt*$a&d{=zbrY$qp2lV^uufSB zvUcmTI9gjFTQ5{}X|#+Qh$-aI(XJ&cuSP&Zvf-{0smO1!BXiU-5XTG;Wl~vvNC-ha z1Pw<#3p$P}s09p<%8=oxqXr)i)^?m1-lx% zeXER$O-uGR1Rx%pV2U-d(O0^~j;2_sK(pXNvt6MhYM62dWTPOYOPy4!A zER0cnWGtX;)_uDI59Zz#w9s4MMGn8?%lL#8TD$MQyA?bEsUj@j85rx4hqT1D39&hG zG5~xsXg8wN$lCP6Jx(VZQDf%_Y^+ATgx9W@`Y$mBPc-B?B)s3a|zChVX$ng$;) zmI*#m7hG_GM}994+;-b-jslcU22%ItfG$S?^3Ua$U+$d&72sWhE3UZW(o2hX81#C7 zzze8r*RCBN9_9$~nMC(KoDU@H%A(1cZ*v#=o}j<+d?2|!B~h8hDVzfV>4JY{3}*rk z2Xa2(T>`!q2^`0XVmqloUIHcvpYm^}MqJ6QAelcg4@ZP3c^MsDD(GlY7c-KHKoanY zQnx4|3k?^ThKr4`Gm0b{2@?pZihjwz5CAX3wL|c9APGn~z-pDCm25q~$VkZs)h$eo zy0jRZ;6#l&DHGT!qpUJBC9^UK*&Nvl%$>|xGY*(^6jy48X5{Rzdn{;yZ&bRJ5`|l(kbtSwsMLapM@5vC zSOiTwPzOi>XnK`nZ>1fhlo5L)P72LH0Zn9;}%tdY3l z@ycIu3WOM$otdjN{OgJsCo)hWk}K6IuG9qwkp!y2m49`S4RWP;)Yr&yJd$`&s)tAf zCJZ`}M^}(_nMyzxeJQS8#X$I!6@h?Wa0nwXuqGs&fEIvkNWlS>aacwGGZYG}r*sQK z5E>l~6kP#b?5TvTi##z4?T7@QBho9SV`QvG@u}TFv&&7>YYp%JnK;%F` zDG%FPlTBSjF^lt%m`>u7{XX?6KhyN--~8k!9c7;QnG;;Ua?DZt@40)ed3>#|_{GHn zx=(By`g+5%$9?o)TlPYEl^=GW`ef}?pK+IO1$e2TxSn?9Q}5a`ACJ0x6kc7$y98T4 z8Q=O{g1k|XPs4YdGM_1LDS!4h#gRt@q5ul7y0Ng`Ck%~ z#-((r*#1pDAiYb`mNpBVOm1nAu9Nds;3)I>VDZWjD~?Q#PCmgwQw-y46Y_&A#wd6szM!;9mt77GfB!mG3%UX#7eB9mQ?pDQGMo#!-)?#e2)|M|D zXhcvQU%fC%m`00~F6&eV>NOCf0GSQZW&KrG(Mz@HLSIWNX~~8)%OH!jv80L-sOHu{ zjH-PLnpq9;)yPMn+KFjIA0uN?CZ6pF1!HY>Te!$<2=3Y;+XL9@Xu%6>f<<4qF&)A5 z+MGbcowQ;=BT_&MG;}D!gJ?1Zw>nT-vSi87(2!FCkI%Z`7)3}=^xhc|iq5Q*|C;jw zA?@vGMz+r4;*AA63Z+d&p4=_Fl)^d=b<2swpq)_>o6K5R-Xn(IL^Zqd7p1bNQmSjD z9R!;Yacjea3r#`77;6TE10SFtU$7DZwCKW)4Uy8qbR=QMxQ0mZgRF~-*<1;M>p7R4 zN_A18glu^Boczd5dWDS^1A%QGM`H>TkzkTaixRaE#L=8G9Khit#FeDdZXi+llxne+ z-Z(wO)m4}dup#@f73*PYV8nJyWk7e%l2SbEd+PU?@09>A1E_dgK;wlMUU>1v7dte# zy99>@H{N)ocMRNlVE}@I0`C$yVGvzj9`GxL3l}aFpHf_PIG`fY$!2evD&H)HZclr* zf5o2d7Y#q>d>~7Pxn|NGaKHgF2Df?uG;zw~fqgW3SmSpg!FT2e$SmMT9yfWpRh^gl zRFo#R;U}ccokTU~ssP9d^&8&%K%op}iXDbQ3Vu!M^X6sl|=|ur4 zbKlc9;Am6BF)|nDsb5YoDhMUp;?X|0K}bDuQl^BTy_{dHH|61gArUwT%8FD(dLx1s zV~OElO6)0fxQ!hP&?vcrwdu>+N_CCW3*8|o*@69eft!R`U9mQ_j8d{BC+dZ1AjlA-(n1n-kf`9Yq|>BC3L3&| zAs$OY2tgDK*Q+I_;~f=fn1TuuHQI$H%T#lReX!6TVN^g&5o=IW3)8_giI`M`YatKS zq99?QA)84pAh{-hc-Byj#-dOx0Oir5$;&mF+S;qr1DW4MBO!vJi7bGOCW3}&H{VTX zV5%aeEAEIvh{TeW5!ivi#6~2OU9z&Tc>5{&t{aZmV-t3x?Kdgs+FMfoH(jq^yl%|3 zwtn&2#>K-fmGUZj>lSZtjap{(H3P=yg3_L`_Uo(^`=|Hcz75~cnAxdsgR7-~ovXS3 z30LFb23Os{^RC+B&BZnNt>Rkz&Em?e8THN>zr4YBqh3CBV{K?{?Ubi#r*8I+O>J=P zfdhBee&gb;&IdZ%=H`6hr&Egafg@*j&9TGkJo2FS!<`Sf-na7ssV4CAx36#@RObUK zHqZ8lN@>cDajV0DoEXSGsTeMUtzNx)-MV!)=jWYw-pMDQERWfJN!_|+csXCaO!LKJ z4J_Qinhrs`(#oQg;qAw=a2P0!EA8>LK(l@0;@4YROXQ1n`KEE$#|!XTxBrgjxdSyQq?A&7hSB+(-3L@)vnSZNj0 zi;IN`L`Rs=bfIi5Q;!(x8ZEop3(3kI4t81ypo{#*(v)DtvlK=Ey^xKfGVR==i5I=x z+9z1Sv!%fTMAH}wrdzUEMo~Z?N2+Dfw_RjF#KRFOdn7IJ*^o)I94n0_A*Onvk%Smr z>FJwEIRbr-Kp6{`$*zD#tZMCZ{_nwU(V|5vhVVEw5!vev?+@gN;2j(k2x+?}+#Ozd zS}#6wm_Oe`y0Zc+FBz=DL}i}{uTBQ4sSub2jHPva5f_U_6$o*h3JX9$gljl177#Wb zE6f5cfLo6wC!KVXx*=SEcu27iYx4-c+VvuWuXZ%Uh+6?JOv)Xkg`bibRTxB6)M9o4 zLnIqHk-$g%8>cIIhs%Tt;Yoro;#lZ1oB+5Zl3Ak*FRb-O3^-b{7ga&clN1G6Cdf)e z5_piQ!xVytd4)kLB*y|oYh7Z)2T2PSEI9YvbA8Fw8>GG|;56X#pZ~lT74HUU)a3-g zZx8yefu9#}Q0bJ?s{(i3b(eRUygcBb;GA>L5nbLikfXe&LfJj`*yH^_AIPz4v2FW> z!p}b+uogHU@Y0UYZ5c|aNCJ)pyiNdAOd@_4P9`Zwi(#H}D>!*g@=PT2vUn3wiOI^X zZ~}$^*+!gbQKFM{XNa*%?OISq2L&z2X0j9$sXQOZ5c35fhzrWL}_tgcftuOdJ!~FWh7;uI6^^b&I(#%fiB2Gmv}f54{HLOCO};asUYapQpR<0 zL{L>slj_!t0J_Yn$JKSo5*0+e(1}zjlTx7NR>fEpdI8g~lZ$-_(iaYHRGt9z1Vn(^t`o4Pkg@qm3w(mhKo#smfuE&e3{Edj(sgD-d(zULJr4NdR|O z2vZgrN!TvcFgt_ zgIO~UdwKev-|gDtgFQ3mwY7InKeVl5Zg=}(U9E@YZGnSlcDXt_=M>j_@cRRjj3;-S zy|;v|(3}a_A3Djje>QgP;eh=uvME)hA9df2@>sWd^X65nR{3=AOJDku9lK{AyDv+L zJZ$N)zp`zU6w5SZ{vP_2Mz zQ4%RT0r-$`c%k z5(L|6?J+X(aK~3WSBeS`=04c<$mUGRlc2EioDMt~GBqNi%UbC)z#=XtRe;Jn02@47 zTUZ?kkg9qvNCi{-f1<{N)G2LWJX32Su+WWy)8I7EfUcidz+&<->r zi>7^JwtsvSv<#0= zkM{(Cw+Q@bp^W4w4dI+}$|-)Gz!^ecUmsET-h1!&?R+3dugRRnp6wS6Hlp%&pi1wl z5K_)J*GxKjgJ%Va81sPU+pj=H2ywB9wPnq7w0P!C?lvO?ym`&PJe#?|^&F}cx@HZ~ zWw;?)c%P#+Dy#H~qNYx~a3LF+rSTjK zI2#0+{+1ZipE`QYO{MASQH3r>Ng68ElM5m!Q-S&6}V*z?Xe`whk_DRu0hZ(94+eDkpXMq zu!3G>pbk%A1haAzOp1`rs7kOcT8^%mJV*ep0r6(!k2ehuzFU9=ji5m`s*tkW(&&Q8 zMB%6eZdo`MBd`imFr!YADpLrLOfCdjBL-258PQ8?9210i37!O%xDwC6Y%(vbo~EkU zh7UR1*#t+U(1#BbP9~1YXfBvCK%)tzgaEWi8X+DWL(DI84X8uVp1{TtB*FoxlOJJCIk+RRYeO2X*X?+wd0ix-)2^R>+^xup6+Sg(>uBj>*_vYTF;z= zyJk-5JiL9zQ5~JL>l-H2HP&2ymCzA^!-1BaYSts^modr4zsw@%C?zGpLnBI2i|7_<2*}mqKK&o_rDN`x6%U9I~GW$s_5~)3; zUKPDoBA?}b_q*Sm%S||5@5N# zDxR;c1$qNZ^tBsHJR-SO!dIdOCl%^gjwzxACNLz+B4lc21A{W}lv}*w!yt=eHW+M@ zis49QYhjc|fR1)6RDgnj)_Dp*1Su3$XaNX@JDm7e9rx@{^v2`yHOjFG&-w_@!T4Ec zo#hqr^UgcZnUW_yrvx_Vo-XyW0|mX+>~nvo0XZK?MZLP!vYkLeA>|M?qgW&KoIz&YfU}3|rkr&{=WJVNV>QW~O zd@aI8MT>U5ZXt7h!h=-WK|(?=90WlkmXPWR9$kqgv4LQwiHfm_dE!A(2O0$if?8rL zCEYbr4OuwZD|%!T4~__WdwZQ7EnHaq1Exng6$b?#`Mpu#dk4-3?!W*36)RRa9C+}- z2XDObMk&af1I{Xa4dK#DFBN8D%vk|6d5QeLJRe9tm%zs+dG(wRc)uc3Seyta#{zjq z^RULnqC%*fFP;?mNSvDs+{bHqjy8i#0Ztc1yr~q=@wIloHXMkP1g%CyGAW>$4u%K@ z@oBhQSrk5kq8B4L#-fw#swIqILL)|It4c!AG|ZGFvm{`$JDD``#gY;@F_3e{f+GT| z!6y}5b3OTb>{aJ$2>dS9@Ul`nP%+KJ zE?SU*z+^Kjm~aAy8-lEgE(77{s%{AYvbZQQ1<NO#WZ8-9swei-UN>l1=N5pET93EQLg2pU-?2sZxo?5Yls9Zk?AQi zaZeDUi3OT)7!8-$L^}kdOffUaJjx6;+`4I+m=2-~4lb3yR8T{T)3tw{P?8(kJ*3H#}1m>*40_p)L37EfCr4x2Y;R&jhp(;3}89X^GeI(cGqV|~lS(f0@H z>YNW8+<$ZN?73u9o?i2O+C2EMD<=T8#gC5jiKVWnzIZOqHTHyIN2qW4rp8mXrLHmG*YIxn;z#{wgtGaR z$7=nInlYnikx%%h1XR0}p!5fGcwf*Sz@A#)08UeP6HpjW6cip=s0o3c<|Q zuGy~6?%7>EbH04+F<(0BgNO7S-qTtvL)MgoXY@?!p6;x`b#Tv2S8M0tEy`BZ5>QB%Q*M)2u}H;otxM_g{MHrRSf2{^_Tm_7bmC z0*`x^5{r?9mSk=#DB;W4@*BvC;}%X*UzUvIbE|^|MOkdl%F|}Ix)9N5&5{*?G?{hK zLTNS3rYmb`N(+Hy%c^JLup(GT55;I3iX?EKpVtKJGCEYA|&ff|@#ZOox=XRnZ;`s2CnhIBuB^U+j>w zskWeNuiT+Gz$Uy5pFD)L+4f29MHgM<@y)ZFPlPRtw(HunB`^wW=L0^<+;!LD*D#7h zfr-Ui1c9+H5~v4sL3Y69R6(iHaPPw~2>Au1X8|Qf&LX@s;MOxvJ}zYWc$}!5$XV>b zGQ8kcuQ*KHD&dGmo=SVVC0e}M!+a_8s)Ia=?yn= znTI%DbG)Nn-MPVOr=8~Q0>3lhI|crp;L%4P^)rUPZs4F&#m^D=ioqo%IK%W~hQ0>n ze1OVcl@}WVBS}vw0m^%l+cuNrJ8ncXV^!Y%F7$1FsP%KvwGJuFudiK|-H^HU_LY6H;64h8ZhMQ727VMK2y{3Z+$m}MFQGf+99l{7E{LD3D0q(JYQm?LXfv<&xq#_R@Auf}cp@0*W zCa(u@K2@eM*+$*e*66`p3AvIA9a2$^klNvg4tx*nAOsB*Ip~L=QY^s)Sx~ALIB6#v z2u(QKMAHbLz@jlAP$N8oL?Rdo*`Fz5E(S?B#T|Nq=mJ_8*+2py3nITtC5D!qPGIN# z8Fel2V-o^Lky75D6?(Z6i`XiR;#`(giJW?~AWDWn9V9l~5<375sf>!)p{zIb-9{C;iayZ4HIv0j5Vjs0`YGmm`cXNAyvW^$GAWv zn;V!(Ve(cp$ZSGEV%L&VFH%Vh8ci#Zxn`EBXp~6+oN9IxMucNQa_lOZ8AOZr%nQUT zQdnbTAbj4*1}RpO^CiY4=dnq$%9h)zy!HD7U0sKJG1%*UlY4r8bLv40jy&{t<{bKo zslv3&`9NLq1pq{LX>Q)j`9O1Xy{(SfDiKLdbZ0&GkJ)1c>d1A>uATcnbmU=&A6n>6 z<--m+)b|Uz+otV2u4&un1D-d_-wJr+`9Seq>4mFmy=&{2J=u7gH{mzc27Ua!A;$va zmTk-_LGc>AXWoI~ZJ!S;UjKeR>;2Eb>rKxG7C-7_ptuItHZIxVh(K9eu&U*>jkSSC znwR;*h~e6zmF3C6u;LtiDR@8c8)IP05E zdAv68c)j0{EZ_aeHw$>s6_@!RLq`O43+`?1U$OJzl`XyZI~>?;>BHN9KF~3JmLr1s z`|sO3>A>kzXLL;|UfHsEOrAMo%B-2ckn@3`v%i%dvx#kKDPA6MYonO0<2Fkv6d;(q zYIXK0-gmz9oo{~go8BUL_St9c)vvnhDj)D!0wii6ttHV(aaI}W4p?QBx{}Ych0_bu zCet!xxJ4lww%}(SK?F@}5XcIZMarUPflykofXr!;l}Ig`Dp^fbEOrKFDUocm#Gu1R z=(w#mRPwMT$x5V><<)Rw;Q*qNCoIr}28;#BYDW_nWbHS2pGXjh5g{SKG!Pn@fjtA_ zw6>PPq$6bVQzZJr(E=h*Sg3tl8`6=i$@gcuDz1<9Pf z5K_7*ODbr=Aw1%orCr^g4UTn<@P^w#F*|ll;g%#cg=To%!HGV?^V-1q=b!H>&nLoe zZOFA(R-%Z{F+J&fp%eHZ2^y*D#8p$ z+Yg%upguOn*pnToKqT$L5{|l{HH4;#VO@eD5yB?9g~MwoP?_QkWgs^R10|XaqBq22 zB9Wklr{D-1K1$?hAqMkuhYxV=Q7iN6qMA{eU%126$Vb`{Nsy=juE!37UMvt{;cV)% zGlydo!3Yo2Sb~vXoeFLNrJ@B2#)>6m!!9({8H#b(0kYo2RqPg>L@PssFJPHXsAt6HYEau6`XIpuY6eI$bcVsG?d1ZF*+^v#E0bnZeEHCqTz^!x& z4e+wMtj@V6k!fYDAp#&7MhuGqfh{)lLQ{$sEeS|8-NH`@sTdA24K)H|feK!_$mV%L zWXdx_3tw_lLDrH7az3Cg*hCl52%li&%vik<*g!NxpI%td2&R(Cginr5$zocFZ8i}b zf(lRpCKsj5EI4LRp6N0q2?5SlqoNd*S(09u(%P&k=@pN1WCIWYWb_$R*qe#wEVrgi z2C#xlEV4amLHwRBk5N)Y8i{1M=}b;J+--?Idd>h19bkw!k)xE=SePM*k9AUbip(% z5T^pM-A1-bFB;`6B9dT7+Dc%zAYw;5w|b+Ll5ENVj)WlqIYk8^B!Pioh}bIWQbHpq z3I?+O*x^x)QUJ~L#z*io#8@;l8Ih_K*B$|kEmawP?Lj-T_(mR*2rU7Y2+w?Xs~4$= zWQYngQcztxjYMPSg%HgoGLKX;{WSu0fr=VXhhRRMp(dK?sczOAG8Q@bqMA~KBxu4zY3>h3(Kr|aDPCfxOr zL#{q*?%=*Vw|BQSPw*>*E#vCPH#Y3$YN)HtYlQ+6knMNEzS-@*$ zu=!}9v)Ebsg{WDx=gywfKKY>WzW!UjKOn<{;`;@CH~A`b@w{LDn_(VZ>jocnS&J{f;9pQRR0O#SN$YEA>n(}sNN-QZ1w z!C~(k>`>SE{s&ww{SUbs2On|O77rJfFBcT1-dMb3-oMs0`t5a3p#DXIVV7>IJ7aTE z@!7Pe(eha}9`RXr@p1ORBgGTwo7gkoM|flTX86Bsj|Du}`~Sgu@4a{*VDXyT&~V+r zM%TE(2kIBy?H>tu^8-P(CXag}c!ym#*pyydpmwh)dy2~@V)G;Vb( zk;*(UjgnVAe9fOf-#Y`3KmNGG0ULE62iwETa`KziMA}!+x*-3{fj*$go?r5}^vHY3 z=PVj|8$cm;e#~SE1 zOAG|~60Js=nHXu$LSvbOkWHo`L?wW(v=Ck|g1X429cTezXAL5c)srMaz$J~OMH~g7 z9wLlJ04%bWg$@K_BZw)$LN7Ye)L8V@p%ITYkg|ekbepvXGRsgCnjMa9kIf8%mL4*o z5UJn*yxhXE$IEWVC?ds}h@ejl4$`Q^0yWzM3K9%KGH9VD1dBT_lbJ9PgHqJA6p9?5 z0y|3bfgLZ44ei0f(U#0Z9PrEn^6a1bR%LN6P(s>Oy*8k9O5kCKDZ~#hP9eOe?qmQs zDDdS1I|tUr6sQoDE^HE`(U&P$m9ioe(2kB#6OK{pbTot=gf2kGEzlmv#V-KoKp4Nq zs$|p1$c#W!HUaGE7B9BVR!zk%GZJ14OwQ8Cs&2J|I6{T{PzD)N`mpe|3d#VEx_Ce& zw_FoO8iR?EE@Hq$r^3{tPDp569Au+7NFAsH)XX5!f(UDy_$}3hym^HBnr=H6^IbIh5H1I$Qc+I@VtNV#TPpe@ZAAFf%3>BkN6=1rQ2(- zz1Gpe`RAW6BMl7=d0EBLr8-_hOQ<+O8ef8QQP~V60lsCz+tqCB#fY^jaB#alB!f^E2(`-ebJb-_3 zQSzx39qnjV zkS=7=4+x=z9D>?0!qHfmBvCRrk5G;LsG&L5dgKvZi6wJNIH5+)icVeaDe_g)o>`#8#bgxErlHB0Sr)#s%~(JOJ^?TdJ0-C(tt2O;xnPbU}X<~r&7o)_*_Sjx$KH(jY-Ok%Q{=9EBo%xLk=fAkqxi5@A`x_I^d489( zpKUPcUnB6_KyS>vd6CUDlpu4Bd;lTTLK48mNZB5^DHyg}xB~*LGt&Rn%Tgd9rY%*0m zzR7HMlIeA`&_t58w%(Iv*ZM!7_s(UK*(XDiCjj+&2^;U|k4sd)# z=(9p#lcNio^sa;hS=yI8EeA5B<-ppMB~q%lSg30UmN`q676@6b(hJQf^=vY;Vj2Z3 z84|C(7G72*K%}g#_)6Mt$)h4;TWBCh7&wMocc_CP`dCZjScg%TNW=AN0YoBU1Vh{^ zfRuJb+-7y4Zxl2NCKkA7y$CxcMplh*q%};V42Pys3mlDFNUM&iJwUbrOhGVehP7V! zj1Yn(u^8DALC&I2Fe^SuvXeB5DYV$Bf+$66WQ|1`FLjcL1ePHH3c66xZn&_q73XMA zdSJY8X6Ji{uANvOgh#;R#LwNmE*DVO2mQ2#Vbc z**WK&vv%!TjgpM#6w#8y0jC7j`G6Gomf7-cAyi3Nm1z>|d6)(4W{!w+dYKLo2rthNFWJUz zCX4w6GxLiJk`oxA0>i_RV2n=-Ku+=ms6)b-6b`|NX9xxLyU2P4);Ff|LnGQ^x`o7^|H+hAV@kF-HX9r9Het3Z`3)XhtxjN)wL0 zkdV4i6qaJL3QPDzN*+tnqpyS$BMTvQrqifoZLUnf@EQ|AFbZpQ2vz}k2*wL~(T_+G z4~~l7SR*=WBruEdcx7Q-#xh-HJ(UClkH~}x2@-M>*$6{yrCXp~m_frRT=1<3szip+ zBqz*-r4r>3M;62gXzIeck_XvHPJLWZfJuPFr}$wjvxd<^L9D9iMN=I?brnjH2L*sQ z7Lg=clp>72JOddZ0^kJAoE5!^Y8yx#-6nhJB8ECpaf=$&=!+4Ek8q5>II^M1h?+$? z=L39ADLBNVvQoepYZZ`YWyQCXY~T8Pz{i6Axu9+4oM}C?zPL;6k)vkZ^`Y)FcBzT7 zh6cl%8k;7xjNiGTsb$xe3BHh=Wsb@uHm|5n?Z`&YWy!BtqeFtXnq*if6lvNp87VaeLsqKC$L$6)b8 z`tEEx`Ify-Up=n(?%JXU>iZw6^{*)hmgg;{N9qUGxPJcmz`s>{zUO*55b$n*)3Cvf zbwdxjCd^;H&yrOG4}JUU@BiP|zxdZTe*153`Gdc_>E-|Hy6^nW4d45_8@~0|*T48z zH@x^?T)+R#zjR&q(%*mW5B_1v@LzN+{d&`hx9-}1Z%)aIKdfB3*%?v8z{7|aKXEXy zrlIeV5A@zzE6xXIPVJhNcL4m0!L-iVZJo1R^V)l6PU)C7eU8g-l61}Jnbv*S)ai$I zwHKG)B5;lV*J1bU$^QMMt+Q5Zs5x0IzL!)$Qr5OI(YD$$rY!CK?Dwjz>054SgPFat zO{3wU+C6SnNms=4ny$~AWHY;Q+w!~bzS~Q@&Ig><%E=A~jz9i*&tgskBxmV5do!8P ziepW&I>_V_e)cwcJqW;TL0#^}t6G~ZDA;KMS#$`X63J!qh-9&o!=n+JVS$Tw__lC% zq%hGZh9yiFv~Wbkj*f9O>LNgvW+enIC|eh-X!ztsvSF1GnDr>=SPYth9&jW9(;tpJASZZFV9}yQ8G<;&GO}sqT>{@S@TZ4f5Af{o zh`=jMetf`}3!EEVe);8og+LcydxgLk5d46l3aR8SL1J^5Qj(MgcZBnSGQ0mQy}Qlf zfI|{*-SDj75rq8fSbd6$@M-1SiM{ zVrOgsS;Vo>Ug=^uI@pO%C9ND)c9jLm=!SUl3I#H5*VlroB%IEHDI zLQ|Jn#`tEIsgwz;5iolaLd2jcb1{nT`R934Z@;npati)AoX!qli_gi3xYsPmx42!>8P7#13FiJSz+n(HGT2@`3lVCohE zjf^!A(~7Sa+(R4!QlvE`YHEqgDubYtUNj*an6XNvKx_ynah~N&S<0|c;J#wRVHR3NvAAZRc~0AK8g zM@MvsYOHx7M_I4!Dy1DXQNtHOkklR zoH7k5$Oxu6BQUX#4W_lVJ0JMKfs+nCX!5?h@9v)%wsAf%FkC!`zS;SJM_Qj{`}Osu z>n1E&HE!U+T^8K2*TB6qe(#w>u6*&(uYPyd<=>qA`Nt>p-{*W_;*wQ4AE@hpqPy&j-ByzRha~JGXh$a|S>AFyK2NzVzXH0S`DI*tPe* z_Rl|g>!1G1f4Jqb51;Y1W6!+l$YqxwzVx!A&c5k`XWsbXGm7gYXWsD9vu-^0%&(~* zd)}QNzwo}B|7_%Amp`^k-#vQ{Jy=YuK4%V3*9M<(I8fiesy4u(uR9-bI575nz!5=v z*KC)=fjOIRVMe5t}>4X za;Aqei+HtrLb4H9ac$T-jnCCd#PUd#vwBXy;LwgJ@l zxB(f{Ad|;}=?6HT}0JeE1P_^q-52P+EJ^gvEVKG5Sl7$NwE?c(DDS>Cq1q&8< z-t^J4NE4qNL@H*dh&nG2NyROZ)O8Vz*y22*Mhghphtq|cv64Dn#5|`n7dmiYvR+KV zVx$7p4}#tp1Q$+ZKt|vo9#@B{4s>z1{jgoJcGS34BSXQ25EnC@Asocf=(y!jER>Kn z8cT+RfnMO2@Q8D_I?BLU^297|5zLM^8+e;@E%32c!5R)yh|n~KVmcCPArERSllT!f z{GQ|h2N&Fxu@xLl^)h43YwkNFmfUEV0T z^2#gy{(wURKXAcu0>J5kqXS0`4DJJ9nS& z9hx&|Vt^{8YjHk6ady~iuf0SUp8}EQtibtz!vU4FCpbCCW2w2rs(i$8fGYv-NCljj z#HdB=X@myZxg2Ln6r5{_b|oi*_}W0O5kg`~NGnAPQrrz$FTfp+cuUy0MMM~&DLmBS z2sSYWO)uhlWnh&^h!mPI-74KegKr=lM6k;f3bc?SMv^Kt6@i@@l!=Ujfk?>`q%w(2 z78BDn@odX<61d4?0-7m?5FQ=KY=t$5%oNvac;o-MI9?{8;bi97WDFA-xK&0@9#`k$Boi~2*k(5`7#^TFd4R^q2@MWRYE}>OQ5hoy z)0LwG?Ra6NYnuQWK!64r7&w-!b_m8s5%d{00+Wi61Ow!Zkr{-YV`?Si@G0kt7BS3v z9LGegYE+D@l^c;escA^oeVp z-t&a7?AmwNF1>d)^*!V&znbmM0iVe};q`+Z>l%E_o8()*9pKq>xT*g>*KQ|WJ?ny1 zkNjk0^G`=!_{rZt^Jo9{9I z_WFen6xZT)wO+yhNO}HHzC&WV^{+mle1BkS*KBVHUOJ2x=NJd zhYGjaJyzSussaH8TS~}2-nF3g_V!+I!3CbY?5w0OSz5XV^11alPx^AcE~zg|kJUsb zl+3djWf`*E*g66abV@6@mW)!dWMpYGD!E++NTF6tEpn!n!Yz@oR$4)HSygqBN|(BQ zg(Y4W&|)A=3rE%_%LG|-)!C?6z^ZLqWr+cH zU%-$ovM`Z?Y^RjXQrdYC4&s2QZYhX9WM;%Vlqn0SAOLt-uT33fEmT%v8T%`g846gY zZD^H{fx1Q9vx88vU5CI#xFGJq#1kCwu>C0(2T%gNR!@&MKtL+9pQJKl3P0xn z9xZ*)?6KWLjp%X<)G_76?0-_>0+JIidqS%5IFX17O`R#2h59PIU)rpA?l2?+>4GWN zd_<9uHIRkbjeQtAU5P8iSr{XRVlG{YF`j~qmy$Jjp9iVNcebP2L3XN@m(wnOFrq#L z0~5e}nntk%4Jo5Y0tY5EWn_bfg%%1%BvL`65rK_05G3|U8zK<2=*2G9;C%#*HISiL zk8L&5mrc~|*;o%3>c^5Awb&_%3MHE>`G{eGguuulZY+l;ML=*YdG5LA%0hl~V8x0R z!^6W~6>v&$$t9PZfByMPmo7c!lv5mFddJD3fiIh2M@I)xyX;c@ivjQ{k|P4;R_XCy zc`HeVLQ?B{_u#)hlpO_tv4;b)x?8fz|BSHr-g`5P2mzjV1e-Z{;DHCKcrFtmyvbi& zDadm^z(G7x0he(u(88NaGuo|o9+c&bs&buP?uM4h#VJBXgouBEC$7Yjc@b*DM))Za zgkxqwQzr~M0wY<)v_(W0fNv}oddaB*69RThE#fC36tVTXm5xB74i2dh$s`r1$g%*z zGAqTu#)zRLtrlGjXo|^%Os8a3^OyAuG!xBGm~Hc=@2U=ko?Dn&j2P(o;Ibm*xWhuS{fTC zwzO>fe83UGo172S`d8HY9&8z0Ucd0R>1W?})-!*1`wvD=edyJXo_^&g&bjv2FSzZP zGp;@Mg1awz>c`i|FK*Daz_MSt#9mIQT%#aarvbJzxw{m^MU)E5A4%>{nXR$ zbgpvsb3agRd z_FsqP<&)^wU&W!pwyqt`&hL`Gjr}WY^Y3#$P}k?bHdcxG=J^ljd|>}2w;ZtG_JjJC z_ip&htN(oDgV(>>vf!TLmp2?HY&jojUU1jWC*QQ&!dt)ay^&x2+IM$4={DEIrNa%2 z9?V}@Zhbz`_sE-_4>%m?={jujhmRgS=BW0WJyW_mI%gf~YY5$~AL*QO%=>vhkf;8X zZ?@5`aBPpWiQQ@gS)B}|qBomN__mJH?^nL^l{3#gQ%aY&rE9C6Tqmcgcowshm!&Nz zl6LkjDpH?Jo;{L*^0qE34$N%xtUI=#hTF)=hlW_KEE8E8lu~7uExatySs<)9_(GHX z0W^y>&?3`f8u8qQwZ$T-SXw4wR;85EGLE>w0mK7YvqB$tLK=mX;n=AtLmWG!qNDcE z#EYg@t}MZN;po+vy(=}fShnzGJ(AlCDd}aS1wve@mv*>7Monq2NF+c8_*tXvSd3y5 zM6x$iX1ishWhqZDG?qbu%`Kz2BhI9RiQ}}O8FgrZom-=(U-Sj`{q?3FABvgz|GI7YGOQ^(~3~rzu z;2CF};fUa}%Pw2Ke7P?X+Eeqo{`%Ly?(|@Aa8QsFgTMmD;gaWK zV3+7{K>22Q@}0HIs2P~lx_z6^_X$Zkm@NHB_!Zn02`NwVc|pvVHBD2_PbR{|i5 zxTz%gg}OO{9SJcam@ZS*{4x_+lHH`)SkIgazOhD;pLX!05k)|yW1(lMsTTANNe0NI zGgfZ|rc@FpG^vAlhUj8*B|ugeTj7N-*(4U?DFcXheiPSy&kyDq|Pzq9Dl$L!^LPy(lmd zgR^`fTu2x>Lno4>tQRk!4h&S%f_R2&S2vc;1Bjq+ly(4F3#K4l=&R^L0l-9u$}vLX zDsx0Vx6H*L5a=s@G{QGZI|_wZebdBR z!}#C%t>3-kqN{%6h$B8!uAbbH;G_`=$;JrMEDH-NS&nLCW(P*_sbfc5>$It@M;~>} zXO8>Ku}2@f_pZB+Z)|L6p5XTfC{yUu{^=8v1-SVDzdj_KWLJ`e6Z=N1k05 z+_LMUTPL5j@`msK^s?vvbK4g-?%aFlbvNJn{C8gY&P(5Y?%8h~f5S6VPrUqBE?Iru z_y7A1&;HrbLtpl|v{Uarw8xgzqen04!+}*UKl9;?XiEAD{p0tz5vkYL+1^( zg)3Zpf99&IUK!c^w<9x8{6cNP8dt+-@7(W6bGU;FO|3|u*`_pUi# zed(o_|LD~p{P`EY`A_>Vym6w}IgYz`;wg_c^scU-e}9Yb4h%h6>woO#7k;wfnui-t zylcXu2bz7GV8NP+i-ujb0bedyl^CcSc*yy~zWuk_$tpXqwH-XF*g z(5BRbzm1=As}IG-9v46Wp7gUlHmXsEX(&EaQmUf{43TWyYKN~L`V!hzS6#Jf)27o; zKV9yUpRHL*^^%xWW^XSo+jLn_q;A;{nnedl)bgIvdL*9%DcwfS$LM)*lgwp!IFi4G zL#oW8kex{u1zFUR0m1U8MMkv}*^_A3qTQ`_>$o+GU|A)tM5uu*J#GOOgd~Q|A*LiG zu>Bzk=|xEL(ARnd$Ur+3sH4O#x9F%Kr3CPG5kOrfw|Y@iM^+=>=b7bfB}ACZ29jk^ zCZUp9l-jesBsnxKoWgyOnGQ9LyhfNf5q<>Y1(2B6sIJ{uB_hgr)+iN3P)iv!l2D3} z_!_HAI~)X+I2P2)I8@gHQ=qCqgJZZ`jam{#83mbkRAT{NU?RrJ^f8-Qk8Sa#7aU*) zalMB!?U0=h#5GO>1O{MLUbEBVMmxQH5`+}8+Ev6AFMII!7J;_~uDk9!Un02v`s**e z@WOM>Ip^%N&vriGpa71L;~*X}5rm4D=Y^1P%E>@+OfX@B%=RvVY#C}Q*@8-*zbKH& ztHdsugB%oO2{5^wv&ji!i4%pN6j43ivKWtZcYMl{{F0K_cmbFfW&w9_je2gm6=(r^ zxy(RA(wngml5<1_2LTZxen8>`Uv;yoY%8A7MW8U#4&VS?JewH@L2x31GQmtzlO1bJ zBc~Q~Umg%n!jDK~(+ejexdpXfF{Uflu`@~cLJ!mg+_6vASYnbK#YTnUXwJFntvtO zK;-1>h#D?*i9HEyh%Ax7uq0(w(g>n#s3~a*R7zosBqlRE5CG)~L2)>c$9(PBiMK%T zQ=&jHy%`(9ply-2_LI#K3;K6dQK=FOhx_Xj36J9(f^lf!{RpY~5rUT}?%r;DEx+;TXeGWLAH;eZ#X zyD!@C#aBlze(EpU7hKwM@~yvl_n*G<+K;~Z@*n-j@4xcL|N9T_{Nc!NUAA`8375}U za`QD$zIN?XKRn>DMmBNnd*WBW`bQ(r{@uvz zlP)a2nZ9s%r$zUju;Cv!{qxBGa?Qr(MR#`m-ZQIz__yEtr;!&%MmGG*$VD%YOd9&S zUwD{w(evy7&yiP0Mqc=bk=I5>PJd}+pJnTu4?OT!BNx3k;(Wm2z)t;ZPuuV(n?^?3 zKDW{9?j7f?y7&)A{$yn2+aE9<$xWB1?cwFDg=H7>Di~MlG6E{8oW9I`+pIttF zp|17L2PQ0BGk$@WXWriVz#n()>4@NiT{GrPZgmLI)_$1t0oO15e87Iy^M17lwmGyt zwlP*}tTv4~CD5xPc><&4Pc0IUM!Rbn_?~<286F<)>+6$jtsT-=mMW><;$qvMoGfok z#Y$N&i;mLDVzp9QW$cBrbCcUW6v%`c4cCicRwyadk|90Hoa$I)$8A!JR=M#2yS0c!Yaj3hKd7AXk8ZB|ccQB5zENy6s#E!A=i z6E$?;kKMx{9?%ZQ8pBk%&l!ncLkbI(1!9*|=JWh!19P|;<>nf+lD6bv|GhqYMp zL?DoSeBilK>EmWB=mPSPLI4OJ8$Elf=rsy=zOcvOO29z~0+KT(${NW@)6jtlkTOuv z(oT>=paM*z0CQD4!#GG|T+dKshQLiM%nJ}Go=vY_bZ}>Cpgp@#)C|!Q2N@M_#)$~V z+Dh$6MS!@EmE5K!vxyCn!WSd{N(CBr+VRpt7bYI+LQ_4SVtkVwnErrCJ+cWZCXGAn_w4cfa0GwpH4rtuTnWLcf>%PE4=h`@ z>nug_)EE=;AgLUsqI!BQ-m}_0Tn1h1!GY|S@y#sh9WIy)rc43XeLdW(NRZ9wF=MyB++6>78+zLNKQjD z#Bl)(0yHv91#SaX3mnJ>YN0jy;g!UNsg?ll8tFxSGLtrtmMR{YkveenB1JZ2g%Glk<1!UC!3d01Im07KWuH`F#?b}>qe2#C6*xgt*NY23#^7TeS~zuXaX3Jo zP*a8)f(6|f#SuXoOX)_x*N}k>0zyG0(yRji;rD^3h zIJz<^L>eL}FoNKz;s;Zsh^?yhgcFyR9ppr&Df6@_p;`fws1Jt*vuE z&@6?T8t(W=`{wf1B?Yv@|x)>Yj1rF~4@$hkmv5W3vx9bSfK?pOM*3 zNKg$hOG-A;#rX6kyt2EivuC?dR>cx<)^@*fc6%+oy6q;1S73 z(yshsKx6L%u6&xj^GP?fowMr7XMb}3npc|U-`;T2ZQX-c-}LJL|Ggjl;kRCS`P;Ak z@LNB4?fD=4r<+!8+@*ij_=OMdGx*RMFN|FE^iK{SyxM=k*A_hFo82C1x4b8xx8-+$ zGT%4%?Tr2v^?eVxYW|e4_+P@}Zw;IJ9(3*Z*{iR4b>!LqHZptuMa9?N2R80;{MCIA z|Aj~XfB*R#_c;E_ue>ty^2o@d+n%2Og>|Pq^N-K}Z`BxO*j$bf**M?{Rb&k19gRH~vP4u}IXiKtkIUWckz zt+utce)qS(f7qUD>qVYo>2t&T>}Q>|-}SC{TJL(-+UwijckV6*?%em(t^1t3xfr;k zq5Mameq7@2rh#om*M{+(m%57n8-~Ae^W~rY#_?BfZRp!t{{DvZfdT)wLJVvzzo%1v zRj2%tNZucqaKiP)e>-RJ`vX&F&YS%7`vX6jQvC0!#e&)XvEk(DtuLO|a#&029M{yD z{*gg@vsVtvw+;?>`N?3{bM^j!{3h3B1+mc}m;2*`LQ)_{J7oqB!Q0iz!Lre#W zmqfBiM5Y1>tR~rL;gf|DA9Z}9AtZ?vl9FyIqa+1$Kq9quVJV(4S^>`NwW6V9nqInR zr(s#-#ux~br8AbIfzP%CMic(b;TFo^k23;8pkhslr5uHlqq6kSflwXw!e8lDFIy%A znCJ*^%cR0542-KO$#6(raAp@)9OC)QGa7Swh<1RaPy*w`f0g%nG znBf-Q0663m-Z5j!-yZ-uA5eO%^L&SA81gN8<{LY^eR~53Rwti)vQLdYA$s%tl=`pV z+aXZW;|Xy}X97z8H!gr^e1Kq62f{!r4CVx}luFEj(W*(A@Sr?ooX@(%ye=H2i|vr{ z;{R}9|#iar5`SQCZ@nk%RgTi6cc7QJ3*NTeaiREiF|@Cp56PB?HQBnKK1 zPiICX2Q{AB90dqDNkCv2O$7DFxbk04I7)JugFd-JFLh&wUhJV4RE`n6MR4x9=X!HM z9R>kaNhg}-oXo>Q%THB^CD|{B1Cn9V-E&yVsNtsaU-NvxK>-aVf3wW1IN9C{2` zL{J6@B91215M8opz}zu6%}OBTAkC3-Zqyeb3e%sq`mzoaCPxR-Y0H^BmW3}t8&+mz zl7F695kb!u{?G%Uu;|EP>LWVLj63xNxv6ahu>o*gY!BdYAW)qWXHKyKeX@l7Z-4uopAWRP`3S^FMb{u3fji*>AKEDV6*$v9JB zpfOCPd*{xX-O=u62V5O9I%dtB|zWnRj@#n4Hn z+C5+V=3YIQ?6LT-+6FGW`k`Nc=$EzGr(E*F`9LDm`9S$UB~Q40@cF>3^FRLnFa2vv z{}tt9{_+ow>0dp%cjb^bex&d|z)Aiq$KAu0ZQuRm+m7G(=xeV3T*LCUjtH)J;HlSN zw#oTGdFrCqvb%~E+Y9F{gU$!a`m$~R@AH8lPcF{~7S3t!Xr9tCFs^Zpu*tSsV1l2xS-CnUe9I&C4Gu;NMi(9=Aj~h46)0u6&mw0_n=PiP2|0Z$C zY;u}4#kRz5N-9>jQE_Xr$QmRwTVi0WFZPO9Ded-^GCV+^1qf$ZF-$B37B#6-1uJz; z@c9h$eM3N<6uOlIppo3FdfGjD{+lV{59TRSyjvaLaZDCd)Ts8sdW?jEauB(>xn3 zl#s{}P?8QYKMbP)O)x>3)z;`RACg2JE!G(_i?wZ%+bEAeppv~bp=c23$XEnf!lEZ% zWjAYQi@6=9l0<8Iw4w~%^o^hS4ZY#^c z>xelYhLv?c{uE301`Y?__{KM$dg`gCoN|f}5wcq#%af+Z69WM}(HInpk*lw0Bw9&5 z5Kq!vt8G#?LXa721TcDO!o)2y2F6|yf)Y10ka4@fKnBS!b(98_{|y8TUva*DGACz5 zI8c)jRKdZpV&xVk0$p@hst3dE#t3CPvWtiW261*%2y_PsP{QB<)RAS3v?eg%5#X5AnUxy9_jp#}EX%8$sbJJTNp&Zk1%ERUnBm0cISH zpaD(PAxrETW!(|bP=JAOzzy>#7L}CL6J7F;KvJqx1D>q9nx)RV=x9>YA>AR-xP^?8 zsgOk(iba262823ynT)21=?O#~3bgA z@GuexS@FZ*5>k_piyC=nfHD>25grX~*+}!ccgu%mz9m{E+A@{{GcJi19!S6#7m$uh zU2wyby%eZ)phku%YBM$>l<--X^>RDdYPSLO)zG98vZvd3o+pGXNCadJ9ykhD;h~}l zLFM7}avNm$^NC>sh&4qtN;HA+$5|}#47cDMPpU*B8XzXoWQ|J@iX7n$k4*4zuiFra zRlw)Ea4%VeM!GtTE`VZg;g#_`XYx6J=G2Hw-PQwV=Pzd_LSW*nG~p0?F{HLK;t~MS zoH7;&OS~n+OM{jG-z`w8TSqJhCOf-W!4Dt-Bme&~&IkO*^OpAcEp79B4mff4!UJb5 zIB>>GC(k;1W@|@d!?2-4ijMYa3lD!~$GpR5&TlEN`f|@4LlZ}3jQA~s%f>VrWwr|q z%lPcMjt35IpV{Fp0w-}k;VXuY82tV~bv`h3V6$uIFA93DFRziWZ#x?uYd2Uw}1D+U)PSi@Wx?FS020Z+u!=f+TZ*`?cwkL zV*Lj{`I2|uxX-e~UuvJM z)fT+@+QxwmuJSRqe3JDO1a#h7Uc1_OEnm}c(mL-3l&=R2+~nG=d*z(>e0<9n{&`{7 zMGbHKRMB@&-me(hzur$16sK+|PF~l#^xbdV@Yzp2{@u@h^?S=Vf2iZ6cdq*U<4Z2S zrm<)1@bV`nye;s7;?%9hNl%adz>Z>IM}wD12Da?I?3&`$@5uWD(_7}b^8Ucg=JvVm z^S;(re0@gId~n-=GY^{5didm)7fS&?S?_2ruZ5Eqy4t3_)YUx0FOjzVQQsf1^#!)O zc7s60tv#XKsLYd>gMu6m*fgqyEPGlQDHO3R?KD8j^^hg&dYji~-pZ1+W;u{`tsoM( z1w#6@@3M$kP^4v>!}^j^eh@F?A%>T$?HHwWn>5=t^Z~>+V>npOutHBXL2@GuKA2dr ztY0=fQY(qs`KSPt@@kaPT`!;_!RiRFFXj}0lz80|M+ci;1lUs8o{ExMlb`j)*=_Vu zK}jfNR!q0S=mn`4N_8a-(bGJN5r@Ch+KPZ~>RbV-Zb78HTN;Kx8Wr8c4J!mzSd;{5 zB7zR^SwVHo!dTw#EPjibHSha1>^tETEo{ok<7iy4h?Y6S( z!es8EElOk<;#QGCQp|W6Rvuut;u(kI05qY|#TY38S?ausOsnn)j3aIa5uO6sYh^evgaLY~hn_Ml&A_qCu!aT) ztk6UU;u4l_Ng+-b{sC;kAD@_sOjKk>@H{e_5Qn+p4j6sT*#l)(Pj}^8wi}=~4L{Lb51^D*qME z2b}RzqssHu`GDMRqB$Rs0mQ0jCFgGr2Vgi##b#dYaUHLk2%Ha8+(IS^7$a`yWI>)m zEW@HcF5I5!mPurQf-xCYbkPwXK_UnRQh1tE_!xH>b1K0}mLUej>8MmUo5TPDWcs4V z2h<76RF4%(+~`9+%8(0GKy;=90+b{Iy>wTp`o^d{d-J3i4wNh`pg(U!*&c!tv8sxvkwPy?AR^i--dDj2u)tc;=+p4xvMVBl&4t#0h#=?v(JEDZI+uu8==56}%+x+p7p zy)*$BdJ>di;3&aH7Gii()ByrO4P=>mnJfuHilNaLl2^luhs_T4bf-oj%A|{uh6eKhY9 z_y7XZ5}&1?A?&Kp`!ZVWDE=7d15;XNIU)cQLF>Ml);xR4w2uAT4|YCqK--b7=~G&q z4-6kxOr5gdyoE2DbI6g?J0{OsP`+Jh2$XT7;daY=e8^Zf0>+92zz>qNsZ&1~nB#vU zI3n;8q5og-@0=6&Aqmq(p<^A{g{ z;)%z;{k2CP{nl5Xyy!E(oPF~3`*dCKnrrUe^yJUGul74^TZ;Y-J}56v|HzQ;b;J5M z?Q+kX&vZV}v}|+E2k!kvZD!xQ8y2q_(Ytx?<1cnT@WtQM{`=W$nwH!!vU^SUnSXi7 z##=x9jBU7!5s4}Z1ynRjCb?Zo%Ja6YgzGMBF@R;>M<^MTpteQev8{$=*-&npH#T%34sv243*;@dtj_M~ma z2`h_%>rY(yiLGC&-S^11zVtUg+4i^p^yb^|-}LBHi!Zu*NZ01yo)4U|rSPqUoDS8` z2a07|i~i03@AH9g%`RN63uZbWa5ylj`7nv>Kj(bFCeV)534l$h(%w%A1FHS1{V@D) zyOrP-XDCv&|60tfYGK-)l3x`{ER%@aaAcZpUSwzsN z@E9^outK1(Wmhj`6xJ6{D~^>K5{3fADXmacvRI?nkvC!{JZ|Z$j1vKZ1KMj_)p zx16aj8jiIaH%6pmi#ZX*A+S<=02BtEIFtqg8O`k+_TGE%ygyJK3se&CupLJ z2T6wj*%EkRK%ky{^2u&J`+J1MmXzp|u%w<~Q+mb(2x#ar0U0E%LY8Q83yFXrV4I<2 zHP0*Yp)eci9N#Kg=Qd&E)>v>CRgt+hI$C)w;gMdvVT>|@{A1Iu3x8@gK=4YKY!Y zv7JyuMw~i*B3eD14FP)v&$#-J6H0)f%8+v1a|l(wRY_8nPM;UBCSH+KzgHI;G(`tf`_{li~40=N^fRzF`l)3}z0m@XpA{_@njcB5z z07~I87{Vd8Ac$S;RR=1S=*%h7VSvC(H1eBSW3q@qG@95FpeHi}^-iVLnkYaMl_0|n zLtwfAmSR{=?0Q--Nil~HWi-JG9~x2~V8|8{ks;PaelXT~D$gnaPiGxbl8#b-NK#@2 zAk?kCNkr0uN>$ITbb$sdO6pF-(1c9iKyI@ZMYLn8%sy zGP1^0Jb*-(p@HX(SQ`Gi>zg1+i35Vz6`sroS_c!b2nSPuKGbl_u8`>-fC2oYwQ>kc z-2#<3K^+ZBaZ-&nSF2}mBN|WoRIb*STp1X!0ux@<8dfwhQb1pvbp)k0b%4Y<5ydAe z+yaS)lrp61K_xH@I#8jHumLJ=(JO^eyqcgg5mZ<~ZkVV8hM*6))x^ofrKCAe0%I-1 zfV`f>w;~WQP-{8Z^{?b$P71liVU_NjnK(p)k1jBrK(qj`ne-WfrQau6P6m!U?l^k@ zON>QC;u0!Y0l7;OlR#`Rk{F*&T7Kr=AE2UZ`bDS#iF-wJm;>bHa}TgeAQ=O^t$uM^lfq#o$DL> zeHiV7=?@kIUbo(ruJTL$>>cD)-&J?zt&ILnygI(?ii;kvedr%*Edv+(S;%24b{z2M z=bXCbOApm*uRV9o0Rz{)OqEL&e*1Gksg3BCs6Q}1o%wMz{aW1VQN z*ygo?@?T3V_frfX8{WOL{XHMw{<$B#tnXbTdo~X5THn0*%$}=m`^Xoc*l^dqN1gP} z{`akZ_)Cv}_3>|f|G`gw=hOGz|K-QO@Z>i?^7wa7de0T3j$b#ndrQ%KXVLHfdu}V1 zZ%-r?{kORq>gNM{4P0FubJp*Bf8aASCqB?|(2>mx7aV8@zM#4J;63NJj-A)?qB(P1 zlYBL4#-amf9PVnKIoxbT z?vWJ+6ktv_nq+_&2p}=Z(+VeOVk}#X5n!zD2_8-Ah%pIXsEZu+L@8q#sBXMC86R%s zF?fI*54er@G9#3l;1OpKm0VZM0k9ZIOswy4uMFd07`r!!nmL} z;*gb+#u_F&G_52i!1RKIK}@1eJ2JAUp^{x0wjc^%h(ALR&_M~}L+%9}>!H%Cp0bDC z8h`RUH^SShWsHnV#)yZ35wW$CBAh3vb2ShrZZQ;ZhQs&@t&~DhIN^zTlyO@h!$aA{ z8i+q%02 zd4Ir&8%+*3KwNG3j0;dVh-L)5aWoJ{jq_pPjgGpJh1Y7xkQp77OemviSdAut$KQBm z;FQ$_%pBCJ7cvZ$M4NXw)TgVuC{j z7$yn8nDxYod60SMmf9dzz-KnmO$7}C+9qeJo2P+v*Gnq}h)6JN4VfnOFo(f8@oe^) zp$ta=k52@lj4hO`0B3kKdYRyc)zp@1l14BzO>mBsm=GlX*a8)kh(uj*PzK~5pbi;^ z!Q{4l-m8OKkUBDudNh&ToDU?$$uOFv7d(+wIfp(Ji*@WW9LCO2Dn$Z-fk(g)W@5rd zfC;sku+!u9Kd}f;z%*Sr2Y;Yl3BxCJrhuuDyoVT>CS3xRXGo0UNsRicz|`$7-Q^ZC z{3&U;fq{d;6F1BeWLPVgvLY^`09NqfkC+;|hr?i%D#aL*8C0!4nuv%MF;kOh=Qqj- zo2s5j(3+U%+W>DvQW#_`+y-J!-MeMzhJ#zW@qanw_0g1M0){(-%QT>sv23IyP0TWr z-LT@o>QJgA2;Bl+Ma+SSWfI2%4hQn)K+Xqj1LPU02|)~TD|^U4b`VrHRpuPagmAW{ec*UAg4i9q+vN`ir;`=P0CqjxICbzYwH zf#&{;ioWed=cb8oIQK2LJ>h)d*t2h#&~@dt->iMGR$IK`(fQ}x_163T=^M4$ySIGg zfZoeD|FE{@pK7n&_>~3cee@llt^KH0d&?#7-{;TXb^a&*w|{DI@!gNLUG|l(`)j}Y z`Hz0`y>Cr?`-h7qt2cb$3*Y;7?c&e=QRo|{nJL!rS&Ifizrt^X2 zKGrY)@8sa~fm^=#e8BeD!*U$V;MqY|1Vc3d&5{$ zve0DdQBO)#5`h3W;^a&WWmHggk^d3sLJ(yTNUBQ2)-^h7RjQ-3sX&906)={J=nqdx zbxWHRO&lA;);54>7!0YWqdLmii%AS*8b3hlm5w-MQNxpHvb17C5QdfmYodzoR>thU zAcojH0knM*il-UJo#R?fSxkwX-V5=|nDh1q90CNQRXV(OSvl1}GSkN=l;c?cT zbt+gXnXEfmB!-DwNC3$+6|9u_*mYZfA!)^Abwf;N45>;1fC)pidUCX^J0(D-F9JI{ z&nAP<2XZp7*Is+=v(G-`$B)+}EUlOZ)KjNp0jC6~oN~%v{Ka3q^{sC`^UO0>tXN@t zz}4(B93CZ%3+9xEG0Mh^G7JZrJoQk+vnm~6Siy}kga{R&uU<^UA)etPte79qbABpH z)^R&b#sUpW9$*~|f@-XJTQDTvw35!@8Ef4WGdl7Wo+2T`p%*@oC~@Ow3cJMt0sRpW zVF!gE7&O^wXhMJ(LAK>~zec1U3+2aNDsCaeJR5AvxW!O+fDEWmqmC$J#)zPyr0$Tc zW)3{tx!2)0c3aOe@BR}mz})F>E^FwrGL$$Vzw zNg|aH!-pr8D9>1SF-q{rd$ONbr<4+-)VB+s56JLrAACL_7<{N_>g9aEL4j?&F%>Nw zYYI#6CWxUiQ`{PbjD;a{8=u1o|w6IQ}68Y1XKc%OHUy7 z5`ID*z)+^%Qa-Q;V9%*VzNAdKgbdj4&jDaU=s?MneL{T*v3E7RbWt(f&+SU zBtT(o)%7LIL@<$M1E~WCKG)H7HgmP&Gg!COi2$0==$`ad&jG)E!3j?xWQv8kG8G|I z0il6lBnr34BpILrgDtISLKY2CLaMWiAsJueBHl!W3QU|9=d&gA9XHD0uR9D+G9P3V z;x4x1Tt!`)lnE+$#^Mm8)G^P9P){AG0F=oyN=Qyq;>;GliV31vDwusw>6{gU)G!K^=XhD2a|YbVnnuFo8+Hs33sRk#Bj} z6yR#W=V+p~)`S)s9I%Q-WQDC(tPs;VPKYi1nc)snnF?QJq=+ypO+%b@=LCQTpZE$T zR*>vvHR)!zR|xDSEHp}o$$5vc+K*8NPlhl-@JRlDjPrqMtu52rT4zsN)IRx;cZ?dl zVeZ277tQP4YY*QgZfYDcys2^DeI~TpthF~EJ)!-my?6d1kn!TQ3;`dC9DyVT5-k~b zh66$2T(G&dyyncF`{Kh6_qIWKJ}|^TPkj3S8&3bTNj;bP7XyApaOl8R*YN%guKJG; z__2K-ecs*JyKzXjFI;cfZQ17XVSmZmDQDbx)RhmObN7!fy6;yjKmSixed=c?-S*Vc z@BL75rtfIqQT`g+itW4gU*+-xZm!||>s)@NaF@EuS2C8}l5esP9oX(ly?p%a;pc5b zyElznw)WgdYPbKY=2d}WnP0&Bz?j~vJ8%2WeYM(4&nu5sj@a`U}lRvM0_8)6c{B!MV|5|(dCx0_>`Nko=oA*EK-kbiW_F%2{ z=x=JD_`BMU@7Mgi;r?&EcWC#PecpKcTfR_x=-0JJepCBQt>#UGNvnQjyz<)!d-h!K zDu2EI#5;!d-s;+=28*#ppEoXUYh1pq==Fa&{SV3yGQ#_v{xfxxhDT z{`!F@KlSL}KK97NuFpUEHP=IrJn4G$%TKsI`S{wtwp$z2=K=?%Y}a z^N#X;jQX1-1Gg2uH<#}Z3~U+S`~Kq9XE(RZX>FU=(sr=lADA>_&gAxaUL|s1IJ0&7 zjFxFrnva+~{qX5CJDS^PO`OqsQ2UHoQy00W%s9m5SIJ#j2%f|D2R!LlM*;SJ`6_|Z z?zaLPLZ6!18#_Mr$*j6AIu5PBcUqM>BEUql^38&+TerUHO>dHNC0hwr_RfkRp-IlN zmfUO8B}IGGvg^}o?U0S(aY&Z4Qoz`i*MA z5MT%}ESJFg1_>orS*lb*ucH-2nkA7w*y?M!u`a04Bx)n3ygCK4@DYRw11)gK&{J3? zQd9_{SVhKaZ1p8b7xnC2DTy+xWcCa&TAA#bNa>t#&21%|ey$3I+3P!wRY?SWPpt(*)H=&l#tJfwI-z#)Ls0Hu0f zN3{P`_t>IBb3XLo>D>b#8NB(;Z$9IUGtN2ZoO91TSEawdUsE1uY#W3nE8KFvDCK|d zjWQI@xEMs9G>-7ppbsnbQl_I1BlI;Wz~IsrO@_v;j(YJ4{ka9O9Ud|M#4#2Ua~(Ml znRP$@(Kp0#MaBXvgN2?}x?_$5hP)loN;Jl?F0CxE#U~=Tmy5WXpg5d36x(3S_qO5^ zSyLfZGD$UwVF1H*1aTeah~o_vkfKUbQE@93m@EiVVs85Aq8zMk)kP)5W|rI!J`yBqyTtz85^ho7!dz_tz`>FcP?T};!`hOcuW@%E8L

CMh#m8(UWIbTE=Vre4sK-cOZWB1<1hQx?Wm?)R(KxL34`Rfr&tLy7Q-7(Uqw| z1V~@K5_M!TCx)|vHxdIG8hA*+QgzB>jwguPFj^5Sc?ol4r-HZ|5o%D(D(_67IwE*| z{p)O|ylItj$B^7AvlKhQGMw~5>4Oh0ti)P?UFJK@GdkG$w5 zi%!^gd~3_hVND~Q59~dD+|<@7u9uB(J7P?E{$osyS2+gtmr1ybUF>CJ=A8&JIy}s9 zj&$HO$ywU8=`-49&Yd&Q+$(>d@b{b#4C(jff-U(@!Om}F`(D5aca1z@nT=mbRhxBiA?fh)I|Hk1b-QLi-!8N+)hJ)U8%Yt+6*z@>H z%AdqP@$TKbuH5gGbw`}LegCe%Dm-8=S=({qMXx+})2rXPYQc&NcVE7>sdrt`xw5fu z-5~?-e$6?nj(^96$DVffKE11UfBhBZ|Jv(ZKWpH9N4qabDJF0WNF>Nr341HgDAmAF}e4yv1)W`K)ne%~` z*166Hnp@{r=L6m*npHn0nBMl%sVy&=Hly7&X=dB=em;=huTugWLfd0|LgxcYw?0Uc zCzU|9v~^U0v4!?on`f&VZn)v%i!Zjzl2_#`IW~)e9BT=Xer0CMhqc=ZB1PMbc|x>^ z+m<9DXZe=*bhl(=p;02!J&S%8Agh15Fw}Qqa;CLLZnXBPWC4;wrAkYN6sidg5!qJh zg+B~@WKo!^S>3WIP$^{i=m?3kJd7tbbeF4X%ObbgR^ebt0y@HzrJg3;F-L${orWsx zVoS_X4?P-v5fh5cEd?UlvY53mi=etC!+Oe)s7Iw3%PzX<1%o(9$}<)*pJ>IO71=Go zhh9g-AOu7s&=C_Wb-5R*{}2I!>}0T_KQe4tYK)jnE1a`PA&3;3WSLGAh2tf+?7}t! z#|eOwsRU`;mhED;1WI_$K|_DK*+9|_gdkFQCRzr0@el8VL&>npaH~b0xG&^ zl+ozLv0Q}GKr4xWL<7_bja>EkR;%Gdj37~`7Y(V+t^nOIS7yEthkzQor~`Ebx&W1M zK#wex(TA`20Y(=l^Hov=Jg0$pJI8Cr!c>wgj4ynA4yhx#n3KhPhA2y?)b$|<5J3>o zi_WYN$tuQ0>x2mti!tDIFBZ43MIN>*O&L!5mRBE(V1&jfJr@Mli{%d=AOsDhT-B*coMGnn{F%fkv!J zUnM|HL;^-^sNevDfS~Z#i|EX|R6W+ik!59od@W_axC*AM|#>EgPTB<=YaO#xL*d+{B z%Cjz_Bch4{tvtgtcqYTECjv<%MQoVSmT4>gamO9!Qve1%8kHuEy>S#p2aP|MlhNUmh&;Q-r=g zaO)o3tH$)K9@f3pRsM2&|D7Yc*SX4vqh0YTJ=xH^-8H1Ayi#xIy=h3FcLN-@+%&v* zWAXaynvTC_bnlv>%Ww3v_Ki!g9o~IIc{0$qrD^#s<^P5BuOE8W7faU`o$L1Oe*d_h ztA_S(9Of~0;A6!JpD31GU-YagI&UtP+&E&{mhyKXd$ttao5w6&)AYKln)+9dIALA+ z6Z$l(W^jW}ULQ@>y2^VRt6KGZI+`Y?^`-0IrZhHSU)?ZXyt z@^1%=zRjb0Z`iGG<xTLV7JVCCL;G(v zq5Q;$`kpciUUJopf3!SbX1Qm zN^6-#BuzS6Q?x=7hZu7J!^SK(Dy+~2kflV1-u^8e5wMP3o;^{j`(PB3TpDIwOXklK z$v^?92+8@U&U5OYQ9Rm>n`KD@qY5NBKx4&m@KM`n1|pY%LV{f=sR~)CM*(rA$>_u5nI;wDuq9fBL%0Y} z-POed&#UOjV}Ya*{*PBlL}pM(*9+SyOky~T93B(HL}UX=92yQG2y;MafSFpof3ipY zy(#&vdUK$9oPVwk3Mz&w9?Y}3e7?$@4+~=L5XqnT`V`6G3HGCab8M^1RA# zMnPZ;Z((n`88RboMAQwO$-=`40HF@l_0o#olre(loheq0uW<=YeTd4!c;P92(jCU= z3Le^;tsWKvrZ63%04o5k1_Mk2QeWnf6)AX9j7m!N zfO@8YFay;@Fagb}}V$KqZ4<@?frUWn?7$4FBTME(^hU?gCXaGMjP_NJ+0K%0-%;i93 zA~_}9!hs+7L>Z5jmefH4SDxc^MNjIDa12wR!6ywz_=uv}u6_{U| z(pM#Q-D9tgX<`&)bf6v=@fhj!p^V6kGO>b6fOIrfq-6x34&L%F41&SLSiy6PCY-|` za~M7sZ022-yy|=)H0aSFFl)?Ke8`QLG9@F6PnZA>=L5b4A4j8|m!-3ro8b8@n!Q8_#;_Tu#Mlq8I_(vsm@gN2S z17C6G!3z(bHFuV;-|+jv^AB-8VAgpLxcdEpoDWRwzNF~A(UWXr&stYm@4aznz3;Zd z<+1UE+xE7Fh^==y8x4HbWcR%^=x7U2V+WA2LExRqfe$g<#$?qWd~W1jb@m*YzWMFWPP3(uo5X@6&mHThF!S zwe#TS{(DX>U_Wvfx`i>5I7ug?boqz|5=OLnva^<`id#OS!omcr^tLy_I<>4ef8P5_R-RTaAz=losMsFi$3zyBC4I3ub8aZ6fS7M%J3!gxi z9t`DD1a8%{&>(;$!ct{Z6b@)`aO(-(0;f*@EGsBg+^WD^4RKJU_fIG}qmVgO85ktd;U^?X2LLz_&WG*TPCe^w{EK z@v>k=XC?l$!cbJ8_w+4byzs9HCFOO2=L%zu(qK_iQxu4X@sd`=SmBRMUvt}C(Kw)7MF@QeT9cZ z1~h^sCkA#D+@-Dwe*;HO6k8xkc-j%7lkl+JEBhvrP+1b8-b zGJR+T_yhr-x+6x3z;MJBVZ|Zv$RL3(fLrjdJj}@eB_K#dspt-Li4N4Jty_I{L=Qs~ z%wYgxWqhTHdNffXP92#F!+8?GSIVep#ZWwx%N${#L@WY%lG}-P%l4F9s)?%&6H2Xy z!($y*5lszva+xWLVw5Q$HexANqZ>+W4F_&Yb!zi~m!D<7>ivNn2vm>r|G%CONa+>G z`GCoQAI6RyYk>Gu8UcBb$wcE`PBscAuMw$62Zl2ZL?(;YWW|i8q2zF34{3;XG}d`G zH}%}=m1!a#GC>gQWyr7<@CFMWgbdrkl<;mVnmXamm*+F$_!C5;nQLWnG+~J`RjV_K zsG&@SN`Mt6yS~&GGuYx*X%)p1lQEN?kb*5>7KrvFr6ewRG`g_MTtfhp0EPr^t1d|n zI>Kbqsb}iJB>v->*iHvPLr8ow8I`G|OQtFl097%;&_ILeX>d(UB}_`9k?DvJopG)p zCTNX%p$r*%45j6yXomwp2ql&v%{!r`gaK6|iiS9=fOvx|;*ID@XUvI1K$+wjZlp=9 zKumelp9qVWYycuX;&N7iKo@S0>#&MkLL(yHMpHVmzDbC?lxPy1+^7Us;J|=x)xOfW&WPrA|!FIXe zxji3fZkyxsL@=>!_C=$M4<6dSanZE1#uR>x&~F3`EryR9GhzGzd%LDjoHFge@;ylr z!W(R18XFA_!wtG7eo$6Ef%pEvjE?djqS+hy=Y}q%6UL3p`G61h%ERbsudB`nydF@# zAy9vRz?TSI!@F0zie~S#$U8MfdGPJ2$)XcEQm8_2oay>sje4 z{PO}={oJ7FbN=8dX_tHCtW0j`+2Y!H+q2ns4H|q>zjVE_{NBOwtBdZ9<#+%4ZW+GZ zFBNPqy4MXUKW^SybZ!{7_?nTO*EjWTD$i&7K3JUik&*rDhjy+kmag(5!Pu_LM=!ag ze8d9Oi5( zj|;jHm)Fh{o?UFbyy((cp00Qk=H?MguiL$6)rg)|{NP36yU*$_GzuqX8KnOmF290=6+jE&htqIBzgz)I@PZCk9Qddb|X zVRf(&NV&4HOlxUSx4Dvjs|;)>nN?Uvpl+4X3$gB!b2e{!**e;`p_kZ|7|QmR7=jR6 zk9360>R{cmiXo6lvBk>TVVNk?X8rM5t6tdJ=BW@wH*9SVtrzfgpbS1bDha|ICX1sI zAIwQtM?(reDj@pA3U$4d(LrvP#&rbr!IqLZP+OVh5(W6lb;J}l@Mu3T{92YFE|E%$nB}*tkRk1-Oy3vq&L{r|N zS46#w8KVY3EcpMO@L%P+SP@2Ri7z!Jl^+l-{12q{AK2*m4>U1`OjM5i9 zGQbbGp{F7K@LU9RL~qblxILb)h|yz$6%MJp1-cM~p$e~Z9S8EH+wjqf6({4Y!kJ`6 zfpk}f10;gFE@d!8LrTI>gWSXkKAJFBYC>uFKgQ$dbOFGa5@KFyd-GO@MCP6X)uz1P* z4lTWJtaJt_2|%V*N%;W9n3Hu46U>Rr1f&&Uazw;ZO>QB@n^+awv89P#=;MUw ztVE1q=7>r-C<)C7QiF7mk);M5WZ-~~ZXpBFxo*c!L-SmL4PRE zQ3w(_=z(@7@MH|H2%@%IO{QK5(5Q>>D%90YK&6?ei3mLP)iIRjvL?5nbYFex=OwPA z2~eR=kvWI8KB zW^|^uys`W4yL*y;mhjB)4@_&BHNADVpChZz2R0o#{p>x9w&u3sjl&xoMhtJEAqmb;CP*}h`nSby9ed;B}+ z13g|Zzw!5;5A=G{DZgUih+stDx?$dC_bBSPple6bbH}irZNq!FdwMO;7Buy&dEtDZ zIu@uZ|JV6I*T(X<3O)P#5Pz9h&9@ax*A4e6^T{75JhS(#_wu>JfueH_GOc?q^LD|t z{&|E~IEoeb7X2S;>{?|Y8ht$7wPyFl7nfgS_pSC$ZyMZG9ud@^Rfjl`>D*kLxT9gk z9S$PMDweJsvSM5L>yf?dhjncqWe^=B_>KJ+&IjrzAzpMD*14wq$%y*-z^JYpM)o=% zTUq{AK;Nc@)7}`~))C}bAf;P)M+alaj+M793KG5yoCU(J48~^9XRNXY_c2Wb7m2LZ)&Cxt8`G+9uXfB*+gO1(mZn9dYd z!H}`^#2kiQQNt>hh0HC6_@G3VO`ww6)-vgx0$i6Pf-KXzWIa`4!bV_eV2-uVq7blX zW-pN@t%zBT24q;>e z$DRLuKvV3>7#R*ba39vQF;0t_I5XT99iD%vL=Zn`S3n|JTvrV=p1`tbLA2Wh%tuC5 zuCQXN#8Ju+D?`8{tTI6OtJ9fclouF=n+}xWAHY8}VI2+QHx+=Mp1M;qp3$lTkBMjz zTC^oSBJd&CAVLZi6-~_4g#tumAP53lGmgAx__XR94sO*0@CXpoQw2i?BFHV8D9?2u zVSp{62uPtA0=;mEH!zF?4K7xi(w9rsiNF&9q>5f?#YDZXc=>T>yrcqyEn`VU0LX>M ziZUSlA#)o8AyJxNneV#uGpC`UQZyl#)8Yigq+n}&6S_2{zfuz#P2pcjBqEW(BGM^r z+8S}$hETEeZ_fv$yWe@h{}0|uq5qZ72a@V3X_LJ7-h1;cH}a}yx_tJ!@4oxy5zibn z1^7)G}SYKlgtHkO2#ua_*n^(d$p>hu44cnm{2N#U=Rkl87XX)LV}cf*YZt+ zgjqrbbIPPOdw$&!=!HNRtBDCNrGsOSJ=T+gv&!m(PzuUti&=fpU_zxpG-M7?*F;vB zM=?sm1ZYB{K+TL3jUrqSie4puCj2sS#38ceB20kW&?n9_F?riqm<1rwjs~E?R$wE8 z2PzSi;Lk)L5unecK!aNadg($>D$z$51OSJ0feE)Lj}jS%spwVNNR#NG5;ZdEgi!Se zoaf(Iq;;^K#NjMK#j64=K8&R(DL@=|aa3XhB@BF^a!3@QL!~?>xP`N*pfiRN0^N9( zy(rP(Mgf!z3{OZ9d-a0UF~pGQ=?t$DZ4r=;Ef1^11C)?3B!Y6N>HtG}Ry2!RoC5=| zomQ10Dlp+t5kST*G1ILIp~TUOK70sxj8Rb|lvR+>9Hk~@DtZC4cc{@~e{ zfd~N(;m>0*h;>n+Qr(L?S5=&IOHZH+OXCn6XiG#gfI3QcF&wD4jh=L-o9=AkQm(7- z2oB^-WRZv_+++rmHyJ=BDJZ20OI#)|p;F(oJRCs&%;y7>Tjoz`J$PE%oXO1{=ZxL$ zrXv=uS+wxXF?-CM)-r17u!f<-iiXDB_ZZ_J6dr!Wg4VWjzJP=Z!;LayIg_d^;sHph znAIwRZEEvW?+*yyGQ<}wayc>aIp6P`4;6x_0djcEFSI~XL+_}+H|0pi?w7%F^*Y7I&?(~6v z!_xIbj=O%i=T^V2-|e7ghc63^=vv*h-?*N zAzhn?4Xhc`bHnb7ui5SRtIOX-^qxTPs=|969%K7&9ND?O>G;h<7q1@SrzGl%Wvq*V z4X&q8Gj^fDDkIZRF}S*KEqZP%`tK-uclb?CSJAm+XwRKR&#gu0O-;+!61>nfQHtZP`ZwW<525nbDdmhWkJ)5GCF`K^#4&e^=Y!RJq( z541MVc2(yCzF#n-b@r_G`43MU^U##hN4C#BWJ=4Fc}MIwquet*Cw5ZJ8R13MFNKH$YFJ7gHU#2gMZHkLm~n7Y!flLUK32})X) z&y`ZW1w#6@7T8U#Sh3=ylTPwkOcoJYSIX6t>tqoD~GUg#ft4&8;1vgb9;nF$;}Ein%SEj%X|vRthQ8DgdtwJcYBkP*N)nC}EUt zW0W0;2M3@RaRgxkiNCcBF^1WKViFH94UO(vV{aBmC84agDa8;OdKsQv>RAH#kSlQG zjjUE2#bkgLN)@YsT|pMUm`shViAE$UA2Eqpe zi9^PbU0T^rVx)%;w#JUP4GQle(47hJ?4mO!@OL9JuU=(lQ%p2;uD7ET^Gc#Es zmNF0$TO#y|^EpQaXwoYt zr~}>O(u`W136GdQl#fG%kX~9L(F08|Mv8U(U=Vo^Xi|o4tYZ$tqcchnM_~ojwHkVU zAPZXrxT$ExiZXPg51z&jxA=sycp`}TDmbJsOgLj=2#AQcDI9IF!d7>40jLmdaJ5F~ z@X2J<6os)8D)xuGfqxXHs!C!*_j12Ad9v=1fZB96D_{HC*BW|()ahoEJYm8F4i__=W}*Sx(HFgF=YI_0XEQ?Bo4L}p zr*A3FL@+MGz(n9u%K?I<_lzc_X_AL-W$K|ZJJ4W)KE%le2~i~wSBNnIA(mJO6(mZn zx`#li4x<-7(vCb6$l-v~0I$Gxc6N4mcRRQA6D8GK1jyt8900Azq9+VXMT?TLFciSw z1Oe2D&Xk9wjERuhAqYjOs1vA4byGl7W=HCX`HdAoSfUZbJfFTgf=q#|7j6YG0)SW@ zJ?6?(5E#46ufceA^A0O~0_FuWy~v^rh6psF$utkL&iJpN9qpSs?Cx+SZbc4}l6|6&gl8hQwFgrOv$>xH@@Rprm1G;nN2`=~DR?UN17g@d8GkL$*~zbWbpvb`Wm3{kCIAi$AQrybxvS4P)SD$XY{d!DLqx6JD5kM*n(mD ziYx0~4p?}eqvAtS(Bo#@%}~=>+DWQ$Yl15UgJ6>`0#ctZ7bH3V!72Kg&j+T>Sm2sI zWA2oeS?7)$ean%Dtvz(noA(&q(cCtoq0!+$Q4AeEa@4fumZM+sl9wNKxH*y#VxS6h z7-C$cAo|nXKrnfqefH7H%xNvt+S=P3-#ZXlwD3^p15!p4OZ@g>(NulE;J4=kzQf+T zV`$ep*O0D_uJY-%d!t`*_vl)9knD0AP(I8ydG+0w;(gJ;<+XwOe>dG5-Hjz{{hPvK;O?T^SZr+S**vm) zovY}%xjY}puR3(D8t&@3rm5>HhXX^neVPA#aL33c*YDQ3vZ;4lgRdAYy=LTz>qi}T zl_P@UL}v?Ih7K4qA8`9M!kdOI_6q~sM)quMT;i3Fx{~#=Ey8O)xjRj zPDzFb@|ab_N?{SvQN`v;PR7CFA}34T_HVj482}O>KDJ>P+M7w;x?AsbB+&w@f~S>2 zp44~ndW5I-$Z|jy8n@OX1USG)2ijU(&=4)ns>`m(Fh@y4#Hk~o7}G2w=uu`J%%(yw z42eiDdV;KFVNN&Z!=P8szSLft`S2uyIM8htUlwKO=~gQ>R0yRK!!3dq3*rECu(dQ~ zuN7xTy{yRf6}5btqo>6M2i|szZCnAPmsUIxvxVBEvjR;vArzn?wvfz6W=X;XK3z0r zuZ|m_l2#=MjY_=X5Wt?C!wI4QGWxJrcLR+-7l{f!=WsNh^*oQT8V7p9WN1jCGrS`L z`vKH}(Ly@W8B=6&2#oYXd0iltx)@L;4w!4g zfns#XMoS40!&3$yhEQ0xF)l_&c>4wBq5<>i^I7ZNNCdfn>) z=s*|05me42!;zsE17b#rXDXVo!Wp2^g+!q!Bm|z@hz?JzV0012^pt^>4rzV8$bo=k z0fz%UJv~kdaz2n(2&(e|OaMWY#33t`)~rzQI8!^IPBe*B6@G$H_=z#`CJ4ow*faYQ zmQ|}sfyS+bz>wIIAp~w| zg+oAHlhi8D>yDljO<}HH-9Fu;{F_#yL1dAuZ(VYkfuo5M^MJZmeKCxIY+j|`K$ufT zB@x2L#9M|wWb|iXMo^uB@R*Q@r@lDAC@B*pJb*#0qlgl&(i9g}0I7~M(TG_T&7-_} zaz&X<)y)t~;4*Zj9* zUj53WUvb2X51&7G-kxK|?y>u5lx?%;`k(23AIjA_XI94{^IIqHkFA#>N_&QmFN!h6 z#A9c6UR)jp_%3|cx)-h&Jn(`C{zx7e(Yv|Pe>_~grqLTC-PaYJ*GyXao?%CwJaPIF zQ`=tF-qJC%xqa%)_Q`EBo=*f0{qFQe*MiphbEb4mnt6zC8MJmxZJs%K-jq2mG_C_W z4smr%pX++A-XF+WXg0a_fy3)RHQ-plCNM~KDRGZI_E4(ZB@R9rsBU#c?|I5{UR zCCy@?w04k=Csuf>BXDaG$!ZR1ML-N=fv_0CxV1(Al*q8P9FPJN`m8>=RR@?@O=6nu zO8Qb82exCFm61L;SaCoWGPmJRH?71`l~MMkJfotOMOsm6#hf@5drk!Ln~tH;mn=)C z^)7Nb0lm7_);dTZtf-1IPSC2NJI}-qxM@Wh;wXj>0-(Y=`qP9;Fqmf%=LCweR2LXc zgjQV`lJO!AB_Nta3@NNaE{W_izIJ6;;e!SN=i93vbIdWAV2D_EN>W3evDq`=j6;;y z%Pl~_Iy98ANpKsvQJZM0B0!I)R$YS3cB0x*c+$x!1Tu2@F#e%-`f>}=S}Dm1Xkawq z$x%QnL&TDb?hIrLd?@ij32#g}iXYUq!UJrH3)Icp`56!^0K4ePim-)otBdZ4b;p?| zx~s$qe2ZS)ehIPQcgr&%cuvqoT`O0pgYbdmPe2f!Sfxau&Mq#+hjo~c9=Y)mq4s=t`{30kc6hK2FJSN1s1-fgBu~gMc7Q9}R z*UDWnSs6^2OD|@39`|5!GT_lzMS2{ZB$F!t<7Jg~Ri5|r0ZW7QUP016#en6&xtS5< zE@L6>J0gJb{Q?JffVTy_(Uh?{P+*$^rUnqMc@R@(MbHXlwmhAg2p+dRXamz0K`WrHjOCIxqid$f2DP;ypFL;!?q*pk@pqCPJ z1O$mKx$s7u37JjQ)2p(MN+32Ot7Pc~S>c5f9b}#)AFX_6(COImT0aF&`>X>+qAl^^V@kcz+^tpyf(Q2zr`VS$L#b>6}{wgMR-Q2 zI_AGKUT%4Sk<3X{#4~XYP3WLIh-2O29OecKV5>V<;Gi#v1C^L0#7MJfp3B%4B2d{ap|8 z<$qOd+`VWTz1!|h2OKz|ea6fgt!*7M+ow*RGH=e@*S_XY|LnD|bG_oIqmO#o%bgFn z4nOS0vWq&uhh<)(|+*08B-4&Gh)b?oDU2cm-B&^<1h5N zzi$)x`MVdc7d-HS2mVMNa5zw&4|J|?@}DVs{OsZNle;b$@rqNO4@_x&sl$Q6=L3F* z{M%E9e0O@|q8W$GojPlB$3j0;=y2da;e0^Wu@SYi^?*P4d?0&WNZVlhVOde>w%RW0 z1#+vS9pi)v6J&LZtVKuC&H`uIm1b@HWLJq-UB1oUOeHG_yyR?=va;B)*>q{L;%Lao$SwSy*TvS7suOf#p>0Ua@61sjb*D%n)nPG~}p8xEQ7#LT>=tZdIo)oNTZuk&riht^&$^!E&- zL6KhTzpR$t=E7+C`|LXdUal?p-nD@x5q)?EGzy8+iI@gNV;aB}5}>wPLa*>l3NEFA zEDe?>%gbQP&43#K8;xbh7Y080->{{h4dcdPruSL)7;}sFsM-%w7tHnf&dn-cDg#4o9MuwlqZnNCy|pE;(yz^p!8fUpWHp(ds>J|- z^yq2--!XE*0b4j~2R;$u}S_kGi7sP>Q4iKrrwY40KU6 z3fhv1Q?6vPTOBQ24$(Ql4TVvK)Q$>ke0t#|Kr|ypd)4?*k#8)L)pC#NQTE3G&pOB8 zxyN$~MJ*epLK5I8bjlJ4XD-tjA)%^H<*w%&u&WKFj_T`L&hV z1%Gy+-$b6CUD*5N=(_{E{f5C4PfhH4dN=%uiDSo(nM8)kEVkMb2e$(gd`kK$BrK>*6 zvzL7y*Y^in<*Xr&yOt5H18_%Qt&{N6Pe1tM0}tH~bTi-(3mL6HM~+x>Z3hlcR#yv` zwHG)_Sy~;LtX zF|-}9YpHB=;YKUG4T}aM)_GR2*>r3@?QYnJjP}U!PnR%LMZ@5pg%?gdpXp4kosNjE zG_)%TkYfzt88&4>A<~0qZ080OeC7j(brr9Wi3194QuZ%w_?a%Bf)zVAxCe?|IGC9m zGQf%`P;}WwJyOLSu)Sgii1-CQm?L8Bgu`u8x)>#5Ywoz{7}>7cvBdVof5X8;o{%yS zy3lE+r?`YBa1`3uLgyHSZDYFGldy2;E%djqhUWVZmW(cLx zltW4INSkztqSU2_W4ag>CJ=SvD10ccl0X~()5efp+uAI4$`c6y9Zqk_!5^d4}A2|M?d<} zk6aG?>Jl{CPvBwblWv zpVkN(Rz`_~-0)~|FxD1EA~f(#7dj7hX=$dP_56eiL2qzITs=rdK9{{5qX%)w1~$yq9&zO~jE*dUGNz1~Q^OdlWc7m+ zQA-0Kh#O+6JmP2F0D(q9Dguv)5@IL;q(te342j}1;4Mo0#e$NQRyJfw(t;8Qhm<;k zLg0*=*M=zmJcpoHX_XKkWG4L~rG02wwQEwakisE9xNgFI{@j_P|1 zdZmt3Q45?Bu4>^-2Phc$!Y1mX z@dw8p^!M)>-3#|^V!M3P6ocI47eZo(cho=;olkkHxnQG za|D0;?2mNwvYB`T^-S_#$;_M z7?N@fv*_7&>2cO_26ISjn`6t;ZIN%ovRlDzsakshfLP>#9grby+aj+(+ad~o*oD}( z7{VDt#C+qPvw@byHdcN@JPL#fQp6Eyf?931;B2?+J zCyJspdTi&yFEbbdYWYAXHakTpE6P!*LQIJirH7JS^@zA2|d z-!Za18l7M#1pbg}Kh@j84-4}I2nwk(*0hO2;D*vq@tn-7 z7V(M{kGS|IE+UlRzTR4M{jvJ;jog$HqwVB~yTu1f@~y5i=za<^T;I z*%FAL@OTs~e^|_IY;pqFC5V$PA~-oFhayGP3S2CFmZEG?NQx@rC^W+XyV`WpUrsO! zmRc_$OzV|-CeZOPp%8yACUOf7K-4vc=s%5vu&8T7Io z{#e>UA;i-9$mh?;%-8{#1063PYDIeZ@L{vVM36M4qF_uMlr_HLy@ z3+cX2Y&j~pK3ko;vwI<5OA3Q;`i+WQXcs{j_kqxKvA%w zia5;eoM~-Tgg`Y4A%$Q21ls1%x#()Bk3dTT7PLcAEssTK5iEkLB9WxOF z)IQbvz(hkMV<^=OTbLD(ie(xxx{)QGX}$Q#G7XGH05=drLO9U4WW}IxhEdGA%9S=h z4VI`uqfZq*qL3vS17*e|5T-7iv~j+=k}f7Hv)q;+ej;)pANa!@D;d?&!v_Ef;MGIP z#6z~Rps-n1Ea_wdv96JsG2oX#bRLRDn{VhP0R`(Kz#~7p z00gI?#&L`S8FHwXa)yX&;R7=^QdCjM2V<=^0%Lt}+xG_^dD(r0`+?=f(RqLF#@y`n z)tS|m>6Nv~^{v^(_7IT3A{}+5gP56WGRg3OM&Y_4L6#yY~}*VwcZ^uOsXl{ZP+JZmAz_GK9euZ ze)t!k`O&}k^v8c?;uHTj!OmwV13MY`Ml$g9hyU^ZkN$@LV8Z9=AO7AmzxmfMe(x{r zzx(OMx#y=A?sh-mM|ZwIusXYTdHKpeTfXp5=gz#ixP0~e#j|TS&#m8jZvN)QrROg# zZ~C0xT=elfN&0xRuCGv9Sh3?BA^7_?!y5V$$A9nV()0dB5_bqW1FMz3=F#)X8>^`^3V|% zPMbt|Bp82tH)dUo%8#*da$vo*2wdJe&N+{vmv%(?VFE?3gNI(wi4H;!1`3(r7;~6K zfdWXef(?$rBW9XqfWr!)ys=`uIK~+ah@zH5+H^UkbI-YvIOR^`@*_-E#3-wsz{yg= zhxT+9`Nrtzgf#x0`f`OWq#?kcpX|a*6otfz>dn!%$&h9K8TG@Vl;Hv zpn->yoC%0Xxk@>E|14E(RC8Z0j9LeYwvVa5f`c6l3bqQc(m9Gq?R788Z3`w z@o0xcVTQAw4<1c4lUfa{1hYW8OmL|a5gy{KSDyquqC;5WsxBZddH_Rky#)0F;d|uI zDERSo;}uR0(4$uu2KrgYpTiJwi5D~XOh)c8boA&^Yn}T6m!(>3W=AZ@UntzA6FQy_F&tN;^?a-;Quw-uxc z1Rl96D7~E5HLB^)X1cj%@c}a2tWlf_xOqVw|FDu&0m5H<~6m0Yn!KDx7}H zdkdi9^SvpHp6dccgUGHG10KLFk8TgFjol&O;g!h(893q8q64*|#egCNFf6b%SZ0}4 zIkl{?NIXt$QYfPojJs$PzMupmT?SMkDU!xfJ0R#%suF}R(!rCQp&5lL43dvoNhDGU z(Qjzrst5z14H!qjZUC>M6qN$QKw;x6&ya9Fm?_K|zM!!i3RMljS=4L!;-p9+JkNQp zt`;bIbjgpLNc;AT5yXkD{IsX=fdg4&B8XU#Y)=t!`n60*(L>q?0Yq%N5Pk zB1SJdq3Mdq5FV-H7)oVKBylZO01pO&a3c95{Ot+sv4qf*D$Lb3dYP;Uc{}jy3UKnl zFadb{vRVOG9vFC{FpP3w@gG)OOXYxnDe~3#1GDR^Q!7gg^Ea0kZ?Da+Elni2H$y@BR4$pZvA`Km4mZmjgQ)*vY^*mjU+!qt8cwbM*P)?>+VL zzkmGoe`(K+k0V|pF4POVd?tC$-4C2!xOHLi z_8;5*fK#7CX?FtM1B5#gyB`4V3NSb#T2BC^1LTn-M{N2wM@K9tJu9lE)iP^KwdVq> ztKHMV$!2QJZySXp;;|Q?3~Ue!vVGP@@5I&5WvtBTof|RRP%P>84z^nP?F$|W(mANb zhC;vX$@*_=!$t(O>G0FGVpqbJLfZ6p(xZ?Ddl`$|Zr?$~kB6WQg&ti1XC^R60vOH` zdO3ifIXw0zdlo^l%Zx6j+myK~Qgq_twHp%Ql0BM5vKXjkf|NrMw-G6kD}wY;OO?Y9 zb6mn14?TH{A8rS9DgzK~0&E~K!%6Yb!Gm2=@HlDahBi9K-~rPBu8Ts50uVTDbc)51 z+u2*{bg33@G$@!M)Iw;$LxgE;c;XKirg3o&ckq@&hUABcoB)A~%L&s_lW7d)4bda$ zc-d)6L}h>{5X1*3;PKD41dHA=*iqSIy);NH&1~_F5|8r3bAB>c2+^^5}jR&r)u@DQp_=N^x4jn(h;}KHqq*&pGT=ChAi$QOKm;t+b zF~f_T>6wzhXO;BDF>Z-QgCrr}o)c$zYe7g>S;V))bp zQ0D*x7;wGV)RpCw16p{_pfC@r~)VE~+|#g^u=!~>k5m6l+Tcr8Ir0wu>`nGt^3Yu#ul+c%}%pg4^fR`nyR z5(P>raX#k~h0S`IQ7Tm$T+;B77w00_4LWZ2TmV7aqRrb;}?z{IeYx*xr0Ye9zXS*&ynM2 zo;`fR-+OQB zu5L`-TA#eRIlbxQYSCwN@|Ms1!iLXd|N8^(2OLwKe%%8=oC8r@4g?W9G!Can2sVcb zE3K{Bc5E?ki?O=eH0|0>VvhZKJ3*m1L^%^${4rR2?F((|TF0t3dYik`m)8A&6B^v9 z41(f3&{|E5)17q(r9$HWw5;%-Ko#jFV;zx&~(u$x2Rw+BPitgouj< z48+^EI_qj>SbliO2faKr90F-0j^8dRA&7X0d$bQ4BSdN`=LSLgJ0oFpFi1q}6z69~ zj&?i=Ft8#aDIu5xq^Q#C048cPo3OobHWrXe*Q>^1aeYKN(sq44*~sL zDtu1rQXcX{Ephs(O3-j);0&VB_&}CmA*4Y|CrTiEM_gxA{wJb!FhJy9XIGCY!~+P@ zz@oy?%7aIq$TRDl=PjtNFbIts=eUBuJ5{0mm?~$T23wqBZUWA$lpKxe~(3I$62Z zON4tw^cJ{YfS(o0;e4abiwT#g;vqU_`eky=KKivFY;dnd{ZgkRq7~9Bb89C2ae?JD zRS>J|a1j0GkY7FGe&zju@TJ0PU|eLZa#a#Gf>WnXnL$cL(u`(r<<`KK0#h4NNo&?K@c#Sny959bw*yi!-HNHqp<6d)W< zHd6$mIF($1>so;&E8=e+G ztu;_<+1K{UZ#^{V=&g_u%`(G{PCQ6(5Fr&ynv=vPY^)Mu!U=Pg6K0+7Ow+!+Kuv z6T*5iLZatSW6?OGi<vUx@|@Qpz9$Q z{{Dc=fw|SqxuxqDrq+KjHS=%Yf8#H{`sUluP0p^a`ESl`JdBAzqvqa zb!Ee6cInFE+KppN_s(B=bI;PZo?3hR@bcZA&rSw*GVl#$;LyswXP53iv-*n9(;KfI z*t&mW>GtW>yWI~gEiU^E_XEpw*EVLJ*_u0ea(Ut0#_Hts+Wg{`&FR~Jg7*WCsZPJc zb3ry~gh8Oy$gm zh#~O98e2S(Pd@qN=Rg0sKNaPK<{gtlTR;a(MlI=<{nmEtIinVH+lmdsp~b%Akcrav zWM}EMf}f1yX=}jHChjB&;27+2^mL#_wB6%xi;RwqT0RhO>w(w`JE#!%$O={1h~sAt zLljCd$N&wwSFhygLZPA1q!gRej&r6iY}}AN49-7*drmY!J2Ef&XgQD2oW20DD`B zE_IZ!!V@~FLcv2Dz%RhGaRb0PfIfE#gAJ^poJ%8f&16>XbD?EP!!4BYr-2H$oNoM707x4WGU^=TE`IKmLuNgFhTxPNI9Oa4iGKQ^fSsy^#dv- zHKt+}w#w(80C}kOhymy&BG?LB5voQ2k=WYmpU5~X55AV5Vo}H@&IC49O^S7#nbVF2 zXT@lGbGIs*-3Af39I#evy|$b0wgW95kJwrhP#`G7+r3Ii1WyWEX|cteptjy* zvq*LT3JIzujtRLyAXXbokZhm`P%MfB$RS)M7zpEHARuBykrtc)B3K!w=b?O#6aV0s z(Ccb7NUGjp;AB!k0@;p1di9onbVm8ZD-J+B;>`)^kP|B?Uq!{_?Dse#|`AJBo0e2Qii|h+ae* z$~>Jo5lht2OJOs#0e$A1`ToGt(v7*fE9d-w1goom>G=Nt>h6`l_58-~oOpV2ZDI6T zSf5?FJhOD;(%cnn{zvZl#jVf%%q?tgr+b{8-Cy^343& zw8MfM2GeU{&Htz7LftpNCKql_FZly#8#|w!4D4j!8_Ix{);cr4xZ*RpcKO2c#--Vn zsrj{ynH8V8#nJy^;?D?NSle2fzp*%XeP!v&{OtOrnJbH{cP{u7TdS+bR##8i$d<26 zPcAJkU7np=UzxnKK6CH%(!%8B$NBdMd@H~q(CO5n*NN8wcsTLGt%m>|Pv=H0oRq_) zqq0rVxyZt9O>Q-|&O0vwdj#A$5RT2GlR2;#w7*z;3ED#)qG}zeFl#*myS#65dbHQ0 zJ8|J`)3K`C5$I>PJ;L&CgRuLc*afWc!^)4L5kVos8Ft(BZ9pJS;(VjF)+07}wy5QH z8t^3E){jUh(;}+H*}0d)EaK0-_D7m&8)UO$w?ZrgS>n}bR~zr$bb4&prl;(Yk_td4 zCt1Ox%W1(&O*wJC5;!HQ(E(2jM{zcj9}1(e3)*c7Qi6vb3|dO?1ExiajVu!$+11jF zt(J&$Ad$Sq$+3>s4%PTsG&;mFFj_s3g%_F}=82>M32F4n@`^%i81QqoF;Xf+elTFe zfS)+FJb~cB&mU26gAX`CXNFF{!sNVgSiuv*5VauZAyQP}F=GH@e;>Te8eF4h^c4p8 zgxLUjPf-|RqXEicj|~?0Q1AWU0KN@PtcRrKneK*~NpO29LzK2hf?&#jZ!P z=_v$VIO&lY^-LS1y723gItk=9oGf}c9(v&XB&%hSh^V#L1Z!&0%r~5XI3?H$vm_KO z{&J|5E+N!Q6=uEOR@@JGJKn#4^j8SBzs?T}=Ho(!1@@PJ4)u*cS<-eQ*DM~@ymb_~6%14&b;N*x#lW2!Y5Jhm!Y5G>~Ab+-gocrVn} z2QSy|2O4pM4icxqgrXBD54hGi0*HxbpaYySBPIeFJ2LWQaDa7&0K1$4tOE!i+yMBx znj2~0e!w3g=uSYFD+1qY!wK=F0+$KiMrjk5SQ4jJXo5oF6(?1l5|S362$dX)%G~a} z8a7R;a9yNYL-2U4OARYape9kwKJ~8`LMMQDZ05q5!)%zedYRyltje(AfDf6(OnEQw z)M~4c8RH>DhNTx^ z1`Qc0`~(4f=#4?<(FcFHVfe721I!GiK?|po6@f6#E6CWp(JD8#`HQnnA@B->ONC+O zsw@GBM?}4J1}P+h-hv4MH~|V~wzezRi=J8tSq${>hr>V=+#Uc$Xu=7?WuPgq*qV>( ztvQ0C7aN6Ck&>daXVS>0v0K8Bv$fYy%kv?PD^_Xqr@osY|blM4&KduZ=Jc;V{b zyuJSCo_*rE#pw&nvs2#Im;LVs*QXY)jV=e~uX^kM+>gtFE(E4$*IWy@A6QtrytH!F z{lNG$`fFw`2d0;=EUx(C!PU9x1s|6KEA#&9j+=)oQ;WA|SMGd6uSGj*cQUY(0U2oR zbvZD%uzYEC%V&0Jb7A$$a6jORp!)%r13q&zYwN4mr{}Lv&0X^?Aiu!ra^SSzs&*eZ zySBV?b!GM1?AdE;(=S}w+Bmnm{1|_~;7jfYTnkta0mR|(q5A=+N4vihm$Q)7HL$2! zMZMHJHCb0J`_@&^rs>E85HaIyi}7eHv1M4RA+*s+w&RvZ#13HS*eu!vE&h~{g}0>J z7VJcrQ5-EW;B-i!)&>VK*frP%9x)JvV?b}Oq_Z6%ufzhV#fBfW8HE&u)<$FRbLiq8 z&l$qNe}_+=qmyDw9)!TF9L5RnRDeRH?TC#osfCaQc;v?!4^Ze)xw1|hTM*D;gCK;qe%wPtY9Sro;>QrsMwR0t=!8j- z5}J8ix+KT0jm|DT0@16BW0Wv05EN3t@ZlGove8nGC!cY$j@Yq~WB4)XL~^hp z5=7?)krKr^&?OfB`TpmZyO>{!m^T_0lOEH6svRWVr!h2s0myc;_NK zh#uW^sZt0%94Ia2q{kr^J}|0_0}*Kkh@HR-mJcD=I7T7UQh`okC1I@TK}Sg&wt7d2 z9-qCrhf>H8k9g8kn1~^1ka^QYj6y@oj{QNCRASy5!A>NC-Wq z41`*CiSt&9B2r5^N|4S}2~Zb)6B(VwA|i{ZrHv+%Zhe!yY~x*~X77XlCIv9wxjokAb!`1$ylhI8+5Az;~u504y^ffFZASoswp@HQtc zZch9m8n*>gWSu_5-huFGR|g6g4Fy<$^o zO0MZ=jS1HQ&) zN5ky(AA>sqk8TODX z#+r4Y3y!F(HPc$89)O_-5ElhnFaEvnD-w_9eoE*UMdJ9oAJBr~et-u2*!WXUIL|{d z24zy1%D@^T1QE%S#{p!rJYc3rHu7I9IeG~S9}uCIW1=4Hk~Ky_I_1qs8Lx(nAPu?( z9*^8Wm*)V5A9gi?@~+ zZeCisHobmxZROhNw+xoQ?6bUbWo6YX!&Pi^^XoIStMdz+e#q#jkUq=vTT64B%M0r( zi+;IaZFz}-)%nGxnfWDeB^PIw{Ty>oCVo2%$GSG$sD(wyXe=8+16l@ zx71tw)6izoMx(W_Ilb5pusIMC#1>>LCE?t_W8ZWzz;8?P2zbkfb_X~Uw$!}kKhubM zDM3fE_W{J>vYk19I!tQqeRfj2Qb$vsw83!|pkt;-GU?|7270s}38DxbC)_rNS-Mz6 z5A1-6ml@#;2LsJCMC7E$OyKWyCq<=BFQD0@UgBEHJ<2nqlH(}i5f43S7;U=aw`u&? zw3I*`7o8iOvH(N;LDvf*D;9y^p#()LgeL8LV^P#9q+oTS3jt9MDLQYIg4`%Z5fwg%Imy+|x?Ca>5uMti!z=^vMyIhrWP+a+Fi+4kM~N=} zt9iixTot}DXx8AN6C1Y)vL&C~#>ruRat1{>h=5n{G&9{G76`}a(VIV1MW+^#o&-In zB#Sfv{^JKsq(=z!FvN#+Mjsxztye4t%QR`c^ioB$6qO260FhD3StnR6c{@-8x=bPo zF-g_DENLYTGY!C_$w*-yssR-4^+-9*QlzE46zSrLR@8|6p$7#{&?DS<@mY-g!N!dk z1WRYJmozvc25x)#wH{g(_wV1YwL(7hUjMirTWlZs{Q1}}2v`KJCR*W#%Yoss`++V2 zqz=H{3lIxbYU}(Dxu72Gh|r?+7X?;wJ`=$|Tn^Zt+z;q# zI@3%XcoY%fId7Xys%Se@je5CPfI=IW{OAYboJUvfrWk+=#Eh%jrQP&b;cAsmC93ij za1f5z6fir?anlW=jO9drqz)UPmJeD^(jSp;)T)0qPte+^Z9PF`8jfh7z4Zg{^?u^7 z^|Ier2)Z9Y?0sLWixMuCgp^YfXL<%z1mU`Pjbu- zsVf$#qpbz8o(n|sbzzf}aryt^%Rdrj>X||2h_0cY88vE%<}V`U+NN`C)JjFl zwT&z%0SEY|H{Y}|595`e;uVN+#6>E8fw0R@L)jt&FS@kpdu`^wxHojE!0bMWlU;pgVgoSHm!;^L{( zm%iw8^3=r>ColLwPM?`Pb9Tz-)M?1{xiiyePfwjYHU6Bwc=ptVb7!ABd*YdTViVV}5RVYjN%BrKRiV=luf0-G#Xq zTn?{ zIe?$Iy$la$>^Ris14=uTR1li~w zV#7R~)-a>vq)HO>YB9u2j}wUVQint0DE3*8-lnP5#RP|$(+=hw9dikf^H^g9XGQpw z5btcmwEWPlr9n!KyS-S75anEpUgl-k5VJ)gapOyzKWx#AO)psp3Uk7thZ2r83W!Bl z$fc1s`5C&nN1I1H7&gL1%?UkCbQ?t#AaTI0FNXGfE1n5+fjp z!eS1K0+C&Aq!6wbJrnHmK@xaafK*{7B_eb!H;ABfi~}Aq14tnVGn_WE9H1YkM{Gq+ zgGX$Xz_ID#gX)!S1q`q3$>OODurU!oJ-U=Jih6MJS0NBQmAage8sfs%qh3Uh9OHoE zseTLuABa~8dU?o7p-C4?<&oR0LlCLTNotAUp{lXwIX5^=i7xIzh+v>u>ov!v=x{&q zxNZYlez$Aue&FjIK_3rqN8jOopas82E&)y+Jb2K`-}G00eSg5s!13e9{i1=_I?0q< z72c-ccDI$#(uW8j)_GG^{fzd2@hKg}WYL8gz?BxBz@THRR45OOqe4Y*6~(C(;Q-N4 z#s;UH-C8C_R|8`h?gva#SJ1#-^S$xkC;Z@p4_phlANcUY58VTZfcXSQbIDARMlE_Rq&drk*NJ6fi4Jfs&b~ZFjPu2iibEL z&IBH@@QSwpPIgG9q2U$5;w>%{uxTqT&0G}2WKshelc>f>;B+={qNbT1z2(!;c*F^K zm|cMjfnxxUNRSeyG4q5@fDSm1c{ESP8w3hw`e`Pj%~j?Q#Yh9dLmPk~V#6RJAz1w^ zl3#PR{p$Mxf7!@qdU@-@{Mx^Dbl2Z~Vg2{+E&th5yJn`ApWJ(J_r!s{6VFaOxqHHo z=_V%jP3(H&i$A-b*zL2O!Q;fl$cJ4MyM6XfJn`hj?mZ*i|9*(k|8KZ=V(-2~XP&$F z#UVs12>mT~uxc>v6D|fy#vwC-7{>J>= z^@}T;e&gW$>c(>`>swQ6S7$f>^HWFuvlEA|%{{+<@#-aCD%!Ylbm6?u$>{~3+0`4q zhv1iwW|wbXSYP$|ChiBEdx5VCbW(L=;KyXn!+vB2cQ|xh?5t>oJaFKEh4*Ja`~dz|#WDzTH7gof&0`)Wt1AXw z=&V47eG>xY!NJT)EWwn>4~iD(b#kCb7mzD02UyfP4LYqkx;d&*1&EOC#Hi)DxTKY$(a<1&9qj(|~V`a#iuG;p&9X*eKM+ zPi&OHIfkDS2u^Hcl_Q-f_))ZYAavr<66B<@5W6l4%YQ|y7hPNg0fl&U@fqmN6LdV< zd=nt4te_iZ0|a8DL5x~#955or9fE=ZVq{UoMT5|=>0+G*erA_ih2-^t^Q5p5?3njN3x%W^JL724Hj9BJ-RkXiytjT69P~zj&1}`0?1*Lxz^3hT zKyM66OTAV33d}IUl?ozIbpQ`lwh78fRgLI~gL0aA!Z+Ir;F~vkcLLt`T?+(o_tNeJ z{8t4Ze)yqF0CZBEq?u!I*8-L)t=j-P(d#W(F#66PU2VOMEE?) z(HOi>(GL}uNHGu}6sl5>DqKRq*yiY^2AeKLt8_7E(PXL4wYrR*HgR34f`pSY3tH#R zRwJ&p3s~?01jU^IFe%i47DboY4KOGM!~m{~Hl{NHY3A|}9jF|FBki97C5RRZp5V__ ztAXf*tjtVUX;EDbrLh3&$LN;?oIt8QVull^2f!;K0K-5$zf}a0b__UUkd6GTZ8?%& z46PERSTXJfh(!YgH;CwLRigN54u+x8MG3$*n2w^Wx@+{5j|p%6(`83sC7;`~ z7-|n9+m?i6q|^$n({JOhrG%g)00?F$C`Pe~$RprhMTOW|OBZJP4UN#~!God= zr;X`=x9BLmt!5;ItN=Zt6X6)0oWw(?t~6lCy@)9^1dW0)>A^sX8*mvA5&ugLL-M1Q z4H|NQW`?*_8krv4qm~K1oB`s^4Iat^x?WNq^W0bjej}!_vIQ`OsS=sO^yV5Hm(t@Wj zivlw}oZ%8#Rtl2_d1xSp;U)s`D+xadbwA*UxP6`6{$Bqtj9XC$S6YXlsy87AqEhfv=L9giUR3poqnDScLLt-z4*Hd za0B2fKnn-%2fX`(da;SZij=lY*y94;3a2hUvx1W+DpOslBBiBbD_Yf6WvVm|i-@av zD^mOlm7wTY0ip}hi+`A3iWaB(rw6e*A1C8MLQsaO5hv!RNfW^|RR7IE1#i?qb*|Jw zY$k}=+WmlCz=Cgx3F?hsi^taB9zX%$R1%bH3E~HkL5gNphJF0wmb`1)k3PV+$9-IIhW>Lrh zfE0C^7usN2Zig8`FgJ(~A~-PsoMLBjFghBT&%|Skf~^YS7@UV%@ur_MqSoy#HBKy_%12ZeDQ%lSK1cA?wpF8&Nyma$-UcUO>$z$uYx1O9h zx@%(Zo{1-YZ(!mn|0a0g?)Y;*EbZAfv2V{4`=8o-8B@lyByf-bL8Zu*Wdd7tFL~~=f(RwpPdZsWZ;|1 zz)Nqu^TKOyy>|bdS6_Sk&dYDT{KofQzW?6l)t46ME-%b(js81>)vb#wYv=uG(dpG& z3tN9UGx0}r6IKcT;py_mOVbOt{>H!id;iD(`1}9#fBmDs`j`IttpEMgpCFiBpP5?m zzambrKj#0xz|r(`?+4rr`2Ilm1DzNhAe~+P2+3;cO!cE5{m6Q2+4pFPwgOvhEx*I2 z(6)#HI7it-bpf1KU~8|9)#h%WC8gJ1-$~LztD~1)n4p$^>obL<#yiGn)3o?AO#k(QMGf*|F#3@&lQPCecdM?W$E_=&e)6Vb&D`wof>aFuv_ zqLvcj0Ct7R4T$K{Nfm{7L>h$yq-f}oq1+=Y3au_g7MZg@+W7duE((U>_ypg+A!63m zVF17A*!9Sk1UdjXfH?_hah6r$%(3o~MQqL+&J~UsKp;$r1p|bJ&KpEHBMSOOE&t5v z#m^RIYPn670G+^{0}E`Y=Vd=U>J^E;x-M6giat`e8z*QOL>@^ zW{T+}O#0J9b5QE2O+#tV0SpQQ-D7VYInM-ypFqd}19SMtL-F88lXNnt7lMJe-h#K^ z4_GsYm-=55`TzL+fHmL!04E)fj~_p7fO_@w&UoU)iGFc-7odOVzU~Qf~laUMRCBHNk=7u9N)TF!b02Qgj@n6NCE!WzfP)(9B9zxJOdVK`bvUlA=U7yb=+LF3K6wlEsfR z52dB3<4l#75)KI8a2O`z`0>XdJC+zkquiolTrjjOux0McBq>>yC>a~-N-}|*%bOv< z1BNvLPDC#$H9$(vl~$Edi$Y;~7_DGpYk*M5Qj&g#2B6%i5eH0gSaPJOz_|f9?-A$% z5E+oA(kq9fA{*~SrCJ)Td&3YwN_%;rZGdsC557A=Lpt%p@#xJ@ZVy$&1Z@~{l0Ujs z1s={9PU)&3(Z^mt@VqD}k0?6Kl7pEoxNNXHFyJpVEfM^B%L%(E+|UJh1w2M42(_W#+b zGvA*-^X=yjE?v61Z{o;azgMvBe!vw$8h^EQX>j=9fvHR9H`iBgT)X`It?Mto@cgT; z%D(gJEAPJXt#{tM|LxcAyU~2{&h48wwl>zEJ$7tjpWj#5JF(}Y^R@W~q zueu+&y?FVbFHHPDOB0KmThq(_g6OrG#oPbGKm14k=Rf{~fAT;7;XnLu{`-~1Ytxrj z{n^sh<*OH#RxU0-{@*Y7^7{d&-|hDU&dE04pZ@fx-t{ce)>{j^mDXMiK>^nJ)?Pb> zMceXgGj(pX^0#+bZ!OoIB)wmg)l%z7=KSWg_Q3}q*z_qOs4JZ|VyiT57JuTDU|@8# ze2;%#V{c;GK83;B&a{2gI&ZvkWLx|WV zvGIx<&H#DB1U4G@0AU*4i3JbAz~1D?Qs|VlZDqQkNKrx@(9c6kMBU*^IOqhaLIiEr z+Kyg&IZUvqc|tiQ=rmC7k*r=v3r7f?d@Gzpw6;sx!{CUB2Z9JFp%7B9LkNF}cMPi- zw0hC=fn$IYrVXxC2%iIm%vB+bHua??lvHV@LOArZC{bj2;sB`?1#xsfGog66M1Sr% zIy&31$Oo;nD=8vy3MIB-LcylX`BoR8c{l*;MQ44S;E{XfxwwSJAD**2++6XeOg+q9&1w4-eA%((c zb}^J66b#IjpZN90CKmbkYJBL>p=Y0c)+y0X(zUtk9I_TG_H=m zePN&lzt;T#S2_92_&+yPOUACB8p}!d1702xCDS;Xk5+P{X2>8`Z!f|YNpxchtQA_L zY0X5}>p~c3%mXL30piyhXkZEx*9-9o@o1KjwWm-B*oF6MhVGGmURi&<`v(@`05Q6j z+t}la&)yXBw(8JX%s7O&nl4 zcqD}ms#_EVFBSaZ20b~(bkjkF13Vrn2XH#+X)@*#-zY@!Xoi}VCU0OIQ6d^{W9{n! z23qTppE+qV@(QKiR$7mPszDD`778s}EYeVl3e6)D{h(t-+k#AOxl!<@Tz&CL6c&izjTmwozK;mZ8xn#Y-2latpsE?m1Zb!&BD zZJ)muu+MK6jJ`JDW?;hK64?C<(|oX8BU_&>#X?hx;u4)ov*H0o`1V`he(jafs-+aK zSru-N778#kHT~4SCr6=7>^gknx%=P#-ktmJ-hTC+7w*6NWuMpHd*PQqckaLUE1!3% z`Z6UuyT2_0gnz>CN9*yY}MLg8#`6>(~DI(!?JvOkCT#GCMgvw{pwpU;9^o=b!w+@BdH#%OC!QfBi2{u3kMmx8}DJ zrq-{lEUv9CJ+{A3*jnfK=eT>|!05mB?xgCv0Df=`5I;N`j*B?0t{t2#MApyIQa)b% z+irOE&$P@*c7l?#5&P+P;_SVbwTfvc1)b@1vJ=4wATD~ zF0IwO^AEL5vr8M?^3G`6P}Zs9jE#df%Ow;z@g4Uh&@}9#T99P6AF@h@A(}g+P`$ zX~94PqDQu{A+}4}G;Qk~!;As}c<6x$jV(YH1B#HTA`Za@DAzihVdEYV3^?;py0Xi( zF1A?AtI_dg{Qv85)eeO-wH1Igf;dqm$LKiVq2xcQj_%mR?gUF);j_*M=J>1~5;ZwK zItr7kPLhtD#XgE~e9RUISuGR%grL(&GtO|f(2JTC*2{Bg(ehA>S(n%`6B!b&tIR|6 z0{mJ5ria7IfGmc5fD}l+(Jc8C(u{$tobd=S01i{4km!**=4hbbNx%RR@yaF~AZc0* z__c{+rk_rnbPgkqK_*#8toShyAxmvXTsUzpIzeNEGpX`WRS3C9naLcV!Pu$MAyY!= zl!TneqreIig#+A>6Z6p&YgV!)*wKs{{}}|qswjpy35dV}aqf9UWR9QFdCM*e54A=d z!Y)JcmuEikL@zo}LWjrTiohCZowP6xFZf@ASUf@R*T2d(^bTDp7TZTYd_H{e{B@o? zZMM`qc7kv%uWSnTh*PIdc^UK)=WVes54eLu^k||uR;t zRV`sQ*@0Pa3-D;5L1m^ej5R@z3R`RRDM?(r9kAg65E`gb8$_ae1gvlg3?4#$6$Tz% zL=mB;s9SFHF!v+`Q5R;dVk53x$8|Tl zvJ0oMUWF|!eBcbAgeMd-P1R_j8Q-D7vB?!+u{B5W)7I2Lfl$ja?wO&6uloT=lN3>x zWkmgZ{WtV*M4pWO8ojMsY|)j08t9s6Sfb4@4CzNC2ro=_3lM@%iK0pzj?y&bFh9j& z+yR^vm+})r8y=C$XQN;^O02-GNadDYL8VrD&2(9kF@lr>kCeBAz#$&7Su|)M0#JZt z5|r@L&MSseRl;>uuG|0(bR`7Wg@IJ##ZXolLd0N94X$3cn3iXz%XYYU(Sa0|TX`4~ zi>Ff2D_4eCI2@yp=gbWe={1hnv<(MYL^z_vLfGOSPqZw?5Kkg}!vi2KusB%+Yyn24 z7lID>GxmM7IqE|3sLex$=oxr)(acbl&#p&SXiL9GT|@7HQvx!irH~XW^bfK$$Vp=X z$EFLE_F|-j;2>oIY=N~lKJrT2&-s6u{a5Y>Cf7FH4=m33k8*DLyIGefZ?2!ex-!4I z*Y6eV9sSXP?e_z8abVaZTv-d;lJ)WU`!f#DicL+bBCU#gv;1>%1*yn6k? z&EfLm(lh%HxE$ECd$0Qee|*5@fESi8e|vi9a=_!STn?b@+z%T)? zdt85izzPGL{hWB8d1mx`wcGCpEIV!p5M3Y)XGLd1`23F&TUpa+AQ$2BMfvDj&Tpdw_4#)+pgNFgDskIYT?A;TAaY0hRi@H zr-3;NdB~`i9*8`ourAKD9iv;lwKjTL%^$rUF+g;Q2v6B?)Uhd0g_Cj&^`Zdz!SA5O zqNHg%`^i`i(}N$KE&8RmgBImf(cI36C(|DD5Q3jL5P}vnwu}--#Dj>x+HmmW3H=_q z+Suu(SsIPI5P&qwm>Tfa5uj@rYX#%Wz=)U$ifHf(!l18Qlwr82S*Mm=4&ZEDP$&@vC72_LH&t=clTPNCri~QbYXu*8=n*}(cuX;QC`Cf!OupfS z7%Twc4+;~^5dn|_r%=>oHKTA0T7m+UTeA33xFk!J0S9=MS}nk@SIZM!>NY27u=H6E zTPLlGkm05NOAxCo_!5SPx-femw=Dnif%1>ziP6@13qBvV11Iefb_DN$rn52fwkRPU zy%_f9D9^Gg$)>O~>O1ee<45q`udSSF#-eIO)X!+5e)dCHg`{k36S2YLj2WBpqL7rS zjd@U_@PMwdvQYyEh?tcVex;j5L;l#h7CFg1015aI=mouOh6sV6He^scXy&#l zK))_ND?(M&q*FOnVD(=C^N@RmQ%x#4v!lXmBAZ8mo`GI%H!({Hiy5V`gwSSU4td*7 zM+ACHk=A3bGGt1cXsR7R3}urPQV6E7q1PJy0Nn&ZaeLs306@IsBkD>?6HNw)48(#G z7bsD>=mFR;lVx2t%vMf{LYR^)YGW;jy7){v4MHd=5lKSDFsh01YiZ0lc}01?84LQ& zcfHse3(6S+qcnX6G+Sik94COF5HZmBwF5u8RR};TMQZVAIj^>r5P$%&pz}8UOaQ9T z)u%F38?3M>QmzglT@{H13Q-_Z2aFnAP9y}qzwpQIY2 zQZ#aIET{_wCkEnLlu=&BkT`UlhS8P60P+TxR6!Xgd22ojSq4fkRdnV#mx^UDl+Sol zMH>W>|9KK89FZs7zyJoM4Dey_$}n*TAmSXPAjOzD9sd;DD%QW_EsIee=PeYP@#k>Y-;3PWZ14p4dIy58Qk6 zH~y5o2JVEplY!68z~_B!U~~!N1z+nnpcnt%_u*gin+Wa@d~hb~D+Ksoxc|=G*WSMO z`giZV`ki~@>$qS2{=nkW*4+I1;{4ji+ST8mI`qFUo_t~P%GHZY=cj$E=*H^xtB22> z@dpPkZ{D7r-#B-EZei)VyMpsjN#De@m|I&ravj7Kzi6YiqE^0$uh6nT ziN`8O15OJ&D~NEaEPAAD2X+t(I2>Ku`VVpHqmV^Bq}r5u0`Krc17>dH!O3kdS!NNr z0f$&lu>}O3AvvQfH?WBd-j>HG@cl;Ltk5MQ%d%abatyhFpNTdv6rS6IfE|q|1I2#l zk)Rynx9Ll=UakVM@RnEYo}6UYBL=Ft4dNs#Sjy2mMbIpJ{3#U;3c*eYPGvYLMCZV; z?Q*#N7m`;!GTIr&Ba5S5b_`;tfg7IqM!(a`_Olty>8yCF1gC51avHbO{ru-Y|Jl!e zCV~7Rj#-`+#wVYAV*BGfPD!R*4)wCdF?6G&ONt=5ArMyNsu(3im^tGtstW_a0OzOj zrZ8qn1Lz)kQc!xiBwmlKGtGbQ$s0X5qZB(IIH?yAKPAM|)4*Y%BrC+ZM>)2!<i-k{BS=22{(~NGmnxRI`&{qH+4Z1mNnp;-^HjipRB^XM2%pJ_2lB)|& ziIEN9O)+dJT90@F7Ci#yh=a`8S?m$kY5=je3|9nQ2;@?WZIrGH&=D!8bL83B9Ocz8 z|9Q?OC8Tm>$;|4VSEVT-g`^01MWh%pqu^I;17K5)l1YhrMsH%O_G%cC5_Z85CVxr` zWXKE(eiUpb#dhn6ik~@Fv{`Je-~fsl0nic6nql!YomE0DWVj!w63_)Md?ADKFc3{= zanTtx#RlaP#R{onml^(ZTbK$4K;)n2=CW)EQ*T26F)o7D1wv>L9i!XFf=etiA-6;f zoDIl`lu3esazKyd1Bn6#52o)S_^l~a>KS5gFpiCJ_?6hMe` zUY58TNXwADDg;Hk3TH@~cxB+6G*{v!tlR_USW0Vb`7jxxN zFaLqqb)jJPIAo8AE{{XrqxWc+=&;k(K!q zOY`Tq)+d+NNB0Ax|E|!#@s{9P;gcCqDsc1im5r^@pIjd0|IXcGM~+U6|DJ*Sf!DtE?(?sG*UzIr_oZovxRZfD zB^mhg`+;r)deiqUf_``4bHA$5O+vp`fDPh{1duPfADEoq?Dq@&iotL{u(opfe_J^5 zf32OnyKwpX!Y$CRmcBnkDq+93t}phqdn9@9p=oDlIyoI-VKY09A3ttM94-f3oDMJb48d3@ zhxwIoKCu2^;P2-H_Qo>c@lEQ0g!JjtCvOf^=L0fq932kiq}L6bIUG^J7$7MHZXAQ| z7B=F*oeLl)H$*cn{#0*q8?XP~HbiA<+@nOBIz&{l*j#GiSx`dH%}ADVQ-|q2hXeEH z7jHOdflW2YX$GJ1R4(x!e|37`lAlaeZa^5KKb~_tH??w-E0v}N?m-mACJEseCRvrH zMA6lrY6mHDl+-+WRq$l-yHxY6Bs3PKLKg~!+8{{?Jn4eq2SxXKPF*ZA0b;khXLIl9 zWlon%ca{}FAOUlxxCE#Yaz3CKDnQW{PHf?El7N_Hg|-w@TDKU56}ZHpoS3d1=u8w+ zCu$()M#`Xo44hFGW3p6v&IF^}pr2-7EC6~nBF0o&2u8NbhQRT-lnPy(!6vr`F+OOG zK7gPb8q7?G(}>W_VSd_XC?u5@S5>2Mc#8+5bSXik+$D2Nb5a_U8BuT^#e8K7twtnq zp(7G8n%Y_@N4Qv|03PC)L6V?F!O!{Jr2Hp>Q}~e31zuHP@}nzhK~I-U5dKh-w6uZ} zuQsYg4Z$2+mAT5vgz1tSAc>`)tC#_X)QR3mX=&p>wTuEt@M=WZ2&%EZV3- zL5~vRCjXb?e4wGNyRm&xOT)P4`mq!G?>MpkO{42~8oB42+8VpJtYfh}0q)@k47S{| zZgc-!TYVfns=7ssir<4aN2x2HFEIC-zJPs{!gF7Ubl#lVYgV6d$|ON%X}_y><}sS_WQ;8QAEH|)Y?6u z#hGD8Tl=7o4C;PgYs=8)VFUN1vpS>2Sb%i5te^H(cx{Gr4=&npV;^!UcB zVs$TH4B(qfrgN#~5;jUeG+TYJ5!9PyjzSOyD^A?N!y-d~pO#?$@Y5wul<0w=1IkgV zg$aTp3W#8{rLmwhL~}UxqGSz)P{ki6@IYh+8=On5+n9wXIYFd9>mxlj7&al6S|Uj% zB8VFVA(ZIlJi3jFmI;?pB?LS!WhR?6%tYvziA!=zzs&V2; zk`ZYD>B=|~XIC4fG7XUj-X>RiDFI=QZ*WHW2B9`tVo|SPS%DLT8#1|aNgFnlC@07e zpa-Cf4zq-aqVQ?`-U$!2@fo6*1|pIpnbCt-##b~{88|>N9+IMsluLm~3xCR(iciY8 zBt?IMA{bTl@Ep!1Wr-8eLy0aR^O#A+VHsnBW(q-w5E_bdDG!KpnLKb058Pct8=NdQ zlw{tM0y?9KJ+ic+B~CVb)N10Mg)tC>_I2uA_Bs)GV} zE?+t41ANN?0f#LIJMFZSR477V;Ji@bF%Wp}^8hHr66kiTwyY-e+{L+-45Hf58r;;F z$risE0|eK?@#hZ3Y4qU%#pyByrgf=i-1~YV076#v0`vf!TGLL}7td(^tY%XU=9N$` zIK}yZMan~*`9FshT90z*Hrsgg>Y|EQtSd8+;%9=}%y9`(EvY>>U7qF?UTRN%;&#Hp znIcq&imMk;}a0a00^1j3WV@(tuJ4jvv9fQJSOiNgT|&<{t~%V?nD z)CoXDZX$~=W`c@WL)G6V;TmX%~c_yC?Hh}Sp*deG@i z4l{QAQE34dZ3eU|ka+EI5W%lDR1Wvl5>QmttwE5I6e>KI^kg`aa}G-gSAlS3CKDIm zP?AOr;YlySl#u8!eQgsCgl zo-kd?OqrD;Ep+G&kDQpjUyk#E{whlG8b70z>y?w+WA4AAn1dbFobw1G0I>g~XeREfJ zKG4$IwQ}2Sj^Cl@-~mJYYZ^Fo$6fo+*?Yyme(}o}p8usKip~C?Hu}idN1$bx4edb#;t(o7PkD|?5nbpKR zY!yJUGTL96$8fqdP3f{MS|x4OOjbEjx8hqyZQD$GC?-10<}oufeiOB&&@>J)b(^$f zH?uuwuvr?cm}YgCdUf#xJ^mn~0DkhpzQV$djY2K|O`&kiS+XtG*x-C1B~k#%CEwr# zV~cpK(7*vEh^H3=uPi#~S+KH%(IY>2Fq73KuCT=o6e8IJ=*nf*O)W}1hsX?yrHy6^ zrJAdh14J7kTR8g%oPa+}(+udeq}Ga~Pz%UPh&;z7OOmZ%r0B$;mo5B^N;0(qK|yzk zfh?jt@JFuDB~vjNWen6};0c^U2;d%XDa@*8j0jStiz?P_?RbKRI0^=(MIp_k5Owhr z2#RJ^q)RL`Bpj(Wc8D~?=_Hs~@N)nq%tDhi7O92n#Si$yVHBMB;SeTt(Zef{pahsS zq60X(EMXwUE=0yCj2^uTiO+cSX2=W>TU4Pa2AoL>Us`yCfn>nYtC{1 zf1r%!9N1L9?!AF6iZ3F7TM@YJxi9yEyvb*t0X_72HZ;8$7vpXYcRpZNuO5Ojg(?zb zYG^V#2FRr{Gq{EuWR}2;lKBu%b<5D~QWXW@fChjW&`$|jrAUc305_Akp+KG}Ip!HH zkNl8;IRpi`#DFt`Rwxv`6`h|<^GE%t7C7q(L}(mN{iGlzN@?NT5K?I=W^HN@5x~_a zgp~lb08WptsuvGDcPLM)aQW2XI87FtiGzI6Nu=9=cM=>|IO*5kR?D zVT-l|9zptJLTkoe_m{XH8~h<|lQZwdX_h-QJd|=zU&E8PArT4f*WY1$>QdcTR>tw*T*~F_9-9GYp_~C~i zal{eIX_q(eRKMpQxhr?xb+`6`#ft2vXlZJ$Js+4ltNd`m%*8M4xiV)0MLS{oyube| z{+#+h{=G15uRWRmJp-G1KHU`kwG6+s8F)?sSC_-bPMp!T0{FI@M}YX+kx%yJYkW!B>S*nxwBauEN1K9H9RoEvlwo#_36=bR5THg^EAJE zkC*3sz;@RrFuUEH4^;0D*dJ!!h+-C6vu2G~2uw;QSTile=`M?=gHQ{-8854+rNNAC_RcCsiqWi477LfaWEe1QS|V{WYGPy& zJ$}+d3Oy?_e;}N}fX*?_aEvVr0TUoPEh31zhyVzNh=hk5#4SBMVbP^tT{zKQ>WcH$ z9cz|#2Vx1+@`|5K<3!KOPJif$T0|y%M4r%-#Vbo8HX)$9#FLiWvL{k@dBUPC86_+N zZ1@SvRYghCQ0QkALt4%!r5v-r0ub4V1~Cem+kh>}5ldw0;jo~%5jsv3V_}12Awz_7 zm5JmWr;H&AkQJFkQ49)$ARe)BhGSvSVpb%0R1VX4FaZ46B9f{@;aFuWc6A8>orr|c zMnryqOv)R?GMZ;tF$zJLWU=v(1JuSV6w1X*Ny-45E@}};XJ5f8_(;ZLgROiJ}8U8Fb} zqmX2P^Kn3!1odJgTZxCC{>Zx2Wdt*ba4DrkP+W2;R}{k8#SDpwWQj{b*z%0C{r1I= z7kJY5bpH>|2cC0gU^>N2WQQGgaLCZR1h^+|svHs2^1njP2dX0i2oOSbJ|HJDmh%A* zeGUz@ZWGy4CuSaZw+TEGd*)cxo_o#68h3?i=oL)v6qTko)1YYqbM7M}3oxg6j42$2 z6%1sf4GtkiwmJmh1~7G)AGF*s$Etsj$4oN@4*|qB+rD~!`H2IQi3y4VAxV+ak|jCG?ZZhB2H~XAw3q>ka-}eJtCbwg0Z~_hLv(?XR-}<2 z4chSNs+2GtCo6H@!jr(bq)jFhLWT*2X{v}<5Y4$k5};ejZD{sT44EhM7_JTCY(Q-Q z&n7^rpx|`V1@eR*JyZeotX5S5IV`uv!U!4yqhl-#tD#XdiU$}M!(x-hq)DvUr6};6EE#K%p=1JJmM%VUQug##`9w@sxu>G|Tohbc za-slm5oLE&l;--QEmExWM}-K%I2zvoS96(h$yn<`HA zimrZYd#f&bSl3dX%rFWE_yf75!8{r393X|lXv|q1q#|~cC3tcO;bi3}on#X!aUj4X znF9$~Z%pfjms~}31XD;H0B|jr_^&s57-bQ}I-NU`Y|M923dF%7Xb$n{#@VD*wx~~46&p99PWdz%AwvD*BnvzpjrYzg?rAwDOB2)RI z6SDA^Eh~NkOpU!|pA}eo-!FK< z-#_r$`M}?w=wIsR(@p*fd!t7LFRk_0v{eTJ&p}Rk$3LI{#mm0>jqiN^D__6pvMc?& z@Z!r0#^slkCyI(`wW#78y{qQZ}t+0X66AC1`#lsI{z{-?DmIG3kj;bGw-^YbA@s86|ExFo#!52F;AR zv?AEOWW}*|;K{_8Rfe~gX?E$!j+Ae3&hUXnY^=DXDz4JZhpcN@DP%a{L`zzwMSayBZrud+X37pXrL1Qhe@y8x4 z;fO8)x@28kh5#EwG_b-kZ7!2N$}>6^KCzHuh0g#zqd*(qjE)gBpw!}o&O-p zNe((y7*fXkuMFvm!`zEFD{#&WD!`~qX(7dJ`l*7W(4V+?LM^tG0izsXl;=@}9z6uB z?6C!Sg$F{3-bgWR^nq9;A3g3tD92n45I2Z3$AQqf#{@yDu*CtM=mpGC!WKO^flI`s z$R(ZxjzT$32qpZdMEKQkV8&@Y6*)sLu}Me}Z0Mv=gwKBvH<&}zMLZe9>B-*2=t(~l zqnY!CfGL!S=WF8r^s`e5Z+g?491)=FtyS_$J|FOiCke6vJmq=ZL+R6}kJhDh8Bn*j z_XliQP3G`C#HCI$;>sZ7Wys*^Qa@&9vxnC0tWFH8mO?E~$^pc<=t3u`i-vHLB5no% zrg6Y}RuhN?B~t`L5MCixJkAF=>{!EWqjjk(%a%55T2f?1p)6CPafTa+AaSJ#6%s_D zs<+x$Qdi0^6{r^?E)}kIsooMMZ2{&2RlF1m9AKc3h~$KaETc>V+M)^%PDvAf);l<$ z5I`go-P8&oE-9xlUJ(zl!j>DvB;%fPqiGGjrNM*0){^8>kytX|h-yQf09CK`kdCf5 zfHU(|6h<%_s=JtJxs7ki!zdUFqnrWaztFVY_QY-M6rSN06u~4p5sjKroOA$oZzw*XRPwtS%lP8DKRa;gp}%K%&;BI2-c zv~Wn3f6A-!$XGBM3U5&WBz1y0^&=cacKI)F+;gc{Vc?Iq#utu~S-R?Cn%fjIL{H|! z6c~O)IM4+k1OXhUA(PeQGqopINv4FbsO6QB3NQqzoTNNT;u7VQFiHs!LPj&zwJrhc z1aXo|6~zseX>fBJ>cvA9CB}{?6pArvk(qSShO?GA42fE=$=`h$;iCYr+wS$U zEom~TR7|!W_ML5}=F#09QlZG@L72Xj;Mk+zHfzRoQ7>M+_`)xI@iU+Ox0Nebx=m)! zob~2DJ8iz%7Jk2=_nZ4onOXd}p(BD#Jt6wi^{I20j-EUx$jFJaMopSMapt0Vd#%`O z@BI&Y>(R^iJ9PS-#bYPUnl^Xw=t(m@1Wld2#9vPRn>KIx*s0z$STb(v^ZkC}tLzIB z$4y(9f70&L=>GY{x|h;Nj-Ne!?s7;jtJa(9aIHs9?cVzxdBkz2(J*=T(lJx!OEP@w z+`UInF1{Pz7vm2fKZ|Bak^fTv#F>j@(Is4O1UEJAuQqy~-+h$8n*hN*;~)6e<8Hm@ z;qyNKm1EbOzUK6^{9Aq6yH=h2j#JM3rxQ*&`{Xm;yXNiZtUBr4C!cZ7>QjrZ4}Sc- zo9=wzm=oVVbo5m34>$+N#|>Wi`GD^q$om6c9%vahs8>_hZr!6ATDtnyw=P_|-&ZgH zw!?vCOIPgFJfL6K!1e(X8vBiWSu3hQ^q=;*Ihz=k)sbyDCI3Yr_Ij zg)prPo0f>ZmQ?_e!yMpS!i@heAwcq};sDNMNsGb_4(FU9?lHktAp;D2;334ejUk5v zJfVb>$-gd%qKA7Z(j`S?#cpZlp)Nf5<2D@7$t(QafKx~01--Pvt#$SNUI)P zuY_0=W5Oj_AR+Xi8$KoEpb10DGNZ{{p}GXjaf2YYlL4(u4)aRu5>N811-TR~Hd*2Z z=K)t0l}nN8O4JEFQg|TLY9%2%77WHK6i!i29MHyu){tcgcoJEcDprQ^6U3aYHT_i4 zOo^5cx-dY1H0rJNvkTC1GK5VA5(~C!m~=&_F3~ZeNT^MidgT){#O-5fc$@p3tJn-2 z(2GA2r3i&UEn>1QklcEh;Y=t(y);w8N&I%pdg(X%6w;P1E&wVsFrVG3 zvLT-)A4eQO6pjec4Tm(EMa|)kkv(y{b4~9VWdo#^w0Pv!KuA7Zuj0|_4MR~q<)9mP zh?+M*lp9b(16NMyRH+9zC4tmQIjI-lLkQFl2%?05az)8A8al*uVXK_;0kemlHn$Ni zLsXenK$M^m=PH*{*r~nBTSRdwIo?)slg0Mu(sfi39N`o(oy7GFbFL0Mjx?P%l{k!5^Sm z7q++>yIRv==Ft~3IY0mTKwCp=$AI>JO~d*Q80viB;_*$N8P|SXui|{5ZmX^8wkXaA z%KtXs_KmM=>uk^Lr1+JJ`O3CO6$yvKipmTujmkUuk^h11ZT?A)B7E0bXCHj%VMJE1 zUhVq{x7~W1y7K!6{CcyVu`#_Ip3P*NOwjO`YS}%KO#csrLHx$cb}`=g`RuC(c;9Y5gzPU*uoO z7W1gCjgy|)oe7MZFlWU9N8NPC+DpE1ol^prIVkX$x$G@R?0eABGw1Jh%@H~^hb~&iQ~- zg3%LaAAH2|*WY^2oV`{!_!>K9_OP*2ApVUQKh5am5X`v^Szk&pbj)NQK)B|nJC8f* z47Y%zhWwVni+X<`=L5}cU3+x2Y`@!^>qkse`LA6Jl_JYen&19N-37 zCOB#9NIdIr^mBk?{3MQ(AUXy(bAn}>OO`*J0R2D$zlDG0Hil#7ZOZZMHH~vJfPpxo zR@B-E;zy(nLL4GAYjJj2wY@apXfo%PuzSFOj%M5Rj6M?6>7MsgP=$ZF$2P(-cZbbjAUDNc%>b`7C6;aSy+`QV)g< z*uc9)qybTFFh_01(I^12+Kh!%;KUO);V{RmYWKq7L@gq{OjAxOUO@l~db;pKwDE!6 z+A(segfJwfVxgQWAbS}p)`2dRBrTT|W;pl;p;lagHmxY=q=%C(F_7gmW~y|RT8sBN zgOI|*c>~QW;@A`zA1L9!E)?3}L=vVp=Ex=wF6C3@^CxV0q9IwuKslbo4spptc`yVJ zCUBw~(A>W~=Vw({Y$fw3H1jYw0te8UHs}UAQ$(fFI=ja6KbQCzzkV?CQyre#xIWtiVqGz940si@DQCp zUwX>+lmsB2uN@t{qRt1*^Eo1b1cYNP;3uEmt*K{taXRp(H|5a}UAhdnVe`QM=1>`mDEOx4S#v#7Jsm=81TSTGvPNJ#;6>Sb$=+QB&CHjJO&Pt9_xsL zG4q%-Sl4nXD^b;j0@7>sF`sbNySRbsh=7#Eh&EsngPVdl#-f68e=*7pMnxe^bd*|e z;W#UX%uz%DX7mbBD0J6o0V&~VbIa2cRVV?5up#Ddb#H=PN|baJ0_8k_P6_?2%YZ1f z@ubQ*H~5bjfD4lYtOOWkj;-82YQU}PzJO@q3IJFp;HD;QT3sgglzPhEIWsmq1l>^4 z<5nezQ!jv^kOgj1H#NIrNzEihNnl)Z7bgk20yqOzCS6Jki%e5qI$L~j44!#_pm+_6 zoIs*q3kS)$w4@T00k-f&BwZ4#E7`-4)Dg!cv1H9=sxEaEHhCtZx)60?s78l=b}2EM z@|lbY0m!XzL@ln`kYx#TrgwP4PnHlxnxTOc*SbVB%S9W`lqCcugNO%&N2-%;Ee5vu z0MQ#}ZLG&P&Wl2T3Jl_s!=y?z#bbMhNr|Em1hv}OMX3rqwo0yb>sMl=q}C12L=QtL zes*i`8qsA;3DN+F6H#xHoM00sI>0~=W}D%h4A>7p-+^n@|NQ3z?QNZ{Egk(^x_mSF z*}b;Cbj;u{jTm<7>$h!eZtSr|kK%k_3%_c(S&zCNyY$<6_JUda?YEz4O@U?NQbKBg zlYBOO>MFw_;mOSCkt2NnfW+b%K62EEQKR?SXP?tfJ8jIU(c8aqJHMXjU$33|PM$H} zhYO1L2c|79{%!Dge6J1U&4DR%mW-P=_d}mL|F-)cx$LUzR-g3tw;p-SfrlKSJ^Q^M zy6T#nuD|*2)6P7{gOx9Hb3WkV$b+pvc2AqT&)6xi#zTM&lUYlt4hImO4~!Z=bKK;) zAN|yYe|z@XpFI7{!H2IJJ82H$_$l*7j+=4urQcrr#Lrgjf5hksvnEWP|AmXc`QxXb zS-9*#sg`hGo#&6;o@e1+YxfEVO8NKe;u3MhxET%&90)iraHNoz3bbA!sCDVpjOTnn zt|0y;tA`zR;gaB79Nk(!(vKJTQPh|4e85)F4%WPv?XIn0_O!OF zwdVuaba{^Rg{X%gez<*4313;&Z6NR*~ zjsoFN;>AoBkKGgvx(LE~p6!+{3=*gSfV6N`9vrH8SWp z;&etWW|xxSGNui8Hpa#Xom!@K@xf&jLhuktfvGE=V{?0Eo{?Ci?;iB>FcZ;W#vsK3 z%=FMn10=Dez=RxnhMw~o8g-kbX=$S&f$NRKq%t~sbBEG^&9ktHar+X?nWoB(f~m6h ze86FXg9Vc(s167G5z})Mg^mvBq$hK))?{lJnvH0+%Y3;J=4^V`oe2ET|M4wH9G=}| zBR6agH^h}A0yC1qRWK%PFAwa!_ug6$-7d{SvTERfv6kv;yig1-fTScaz!jLmt)-Jv zS^&Zdg?JPdY^%E zv@}r8tIRe$;Vm3dFW?F1)nUp~If*npq|`HpDiuL^4#ZAMeG<$qNjahxT{R*Cln@0Q zBK}x$Sy2$##aYSblB;~+XOhMxfS6d3J{B3K*)5aBLM6CW6@$A>s{ryx zd5C)_cNRpK$8dnIe(>TVi$sNv~ZCo`N>0)p!{-ElVaBm zi%k+zP7s%FVf2I$(^~u}=rT!FY|)%jBo0a1@GDMH~f# zX;UetsBq#zC$6+~p+m5tXaRE=cqI?=R;4Zhq6 zEBrVUwRqvCKKu;H56D17EsJcCilDYuPwe6W$$&78mrGrk`9Lj&6(@vd5Fdi$R~aL?w>cWuAb*G3Qe;_#s-Z@YCbBf$%dIxwYLCW#a~96t zYp=cB#ilYRnaWA{@+MfxF;a4?s-*};9)RC3=xA$INaA%qFlJowabOiYxO>p+w-r&3 z7kEA}Y1Up|9`J#Jxl8tQEO5=ucOA3l^hvW8p7GB2T>AAZ@3{McuYBzrhpk*Sd%?1E z-v6=N?tb{Z3on_qV8yU8GyKq-hoj<@V8+td-XD10NAJlq7R{Q!{I2_-_{DGj^5_42 z_5&X|&pE)*`b9y>RIPjuF0k`F9_G>Q_tmJsa@ShlC*TC&sN+xh-fj0j@YqwAUv-^lf3L?l`|@spB6nPn^8xg4e)opz zd>|h#*zo%aH+nvh-#2V*?#%BSesu7lj}INOxneaH)s$g7%0rrpf!zyn9Gup)r}N3%uJgkc|u{9bwr%;jR|y@2?~Ng`vIXL zQqHtCwj#(4A;%fo%-f_aG;PSaBH&H#koT&l$>CGr>3X@Q~uOU?WIpRU64|n6U|5SCuPzLZLsY(+0uJ zZTfZL&oa#-gigJHT7V*OoYnRiq89}xB@uDSH06R#s`W;^R92Wn!G?h$Nh6rp6+v zLjgFcg}Br8f^35cCPo$o!gIA}9xyGiWj~`B!i+N-XqFGn=K&_n6qZPjB zs7<+I18{&1;AakSPrLwwwo1NBJRXY8huf9lk=cXuroa@c%bckt;t;^g134d{1QZWK zyY7m(sq=xC`#|71`kfD03mgpaxjG(z1F?wMIe>>alZ*^Qgn;6F0667PY%**V43>v$ ztAnTPJeV6_cVaR2>o?@NYqTiF)Hup~?lmQp+0ta9DOs*XjUhhNI*TDvPLi z-r*SL_^eH&h$4jp2oY7S*zo5Lk{rZ9(uGb6AY#icoU*J$Akl!0QJg4IO9@-t<9wp1 zTtWmcLn-4c4h?GQw9z0aw~`ww%Z))-3;>d+d#7GNk>GJ#Cy^~Cy)$5C>Y$i@r^k^7A1Lz^De2n*nKzuRv9kR}|St0J3Zu?tzSS|PY=fJ8}x%MAB`hWhr_;?EFx zygV>uSn-=vMabo_^MY4?p_wBah#9=RFUueeCAj?mqHutA>u6=%C<+Tkrk1&wq8sycN~U z)nh07Rk(lf`GwbBEhsWDV(gS7k2&$*|MK4#eCcZsKKjFZ9(>%9%b1BXCQO}k^Bwm) zG5Fmd|MThJ{>jHWrq9{y!Y^O?gP;Ct#er`fHF5gNRVQ6@(;Ywm?H_;l=l^=*$4`Iq z-@Y(u=KOI}XHT88=)BKg{KKFB=BK~@cmJ-w>E5>-dThRzz^4qnMc~5)`2fhP;qm`@ zW6ZlQInm1ZJow0fBbRG#yxSQIe8mArUVXz|Yrp^V_kZ-$e#Kzi6yH6#(D?vChXW`R zrhAKE-WAu}c*3b?`mqCN1+@7$ar%-8#hW?4BVzu984KM|&p98cZy7wGx!b?ymhJ&f zoh?lRJ3EFv*}n55jlCw=UiE9;V}JvJ!F^krW-MATZOXj1mcjLn0~-c(wzQ3C>loE{ z&jIZ(>G^=Iph*wZZfNakL3KU=w{^5pH1nK#>Z#|Rd+ssE9Ah74UCW$f2{Tz`*2*3O z#nf#UG9#H;S`(V>nS~F(6);;h+cUdLe|3UbK=oQROl~w}3D8nvt~P0-TMn|k zLNW(Jvbt$w6sL8K&!lLx3S=e1z)99=pq5w6S>>aUdx!u(9&y?6T4J(xutj+S5euU( zsjV_V1Ti}wfx}JITFSYBZUM5;TjrRc77v|pg1lm#dni?|SaB&9i?vv?KH6Wo#7qO_ zlyDDGFPuLB9RqPVo$-Von%Tm}v8<0=BAdn6#>^%DC{H-tv+h@Dx%F~T#Xwt16bi3ol?pWbCOS$3b9$DhquBZ&K5QZ zEAo(R)6aRAY%vs{V@}@iGr?QQ#7{7RxP(gu)0~My8brsUs5!$>>EOC5q8Vqj>4j^B zLzWb^JYj-nT`bb9#lSaG=y8Kf0wEQb61Xlr6!JX7momd9X@E0KV4#hmSaBK6TEH%C zsTTaA!-hE`m|00#;sg|?Jm9<)MU3K%w+VriE{++UxMxHVX~r)t^nj!;+h7TFiGdp! zlv9d_pj(C>3@Gd}6u=2dGCjL_Ofx5B#=z`xPf75WOD>rc2tQc?$&wZ&@k)YA3SG*! zQJ`On5Oqn2ONd)CgN|bCk{k;8tc@xn9$sEwg1OQEi&=7GkhxTkIa7V-kp`MkHGIMvN zIC&MH6OKp|QIU)Ff9OwDClE@);}XCDBA}4wswUm(DP73{v@ua?U3cuD7Z68`51bEk zT69PiTB55s(NXYF!Y*^UN8B|k0Vs()-8=6}d7JrBFu0X4D4SFcx*1HVxGY82iHAoQ zarX#4a6H7>a`Q6Hfq23hz6Gy*M!_KMnfEAkx4M)%bZs@m7!f%v)4A@itAa8K5CjnB zw1y9xOakH@kajIR*43?{R~|rJsjfIClVMN{scm%NQmv-^RA!`V84^q4N&(|xf)r1< zBpX0nhTbK&`NKUH6QiKwX9CpnS-dy{LId!WC5C{YKq5sEI}>bW1kIU%U9uEbY*mrt zrw~MQvV;xP7Htx!7qG%&5+!8*BhnN1XeLM;56+Aom$<GhxgpY z=V6==^w``740`x*f%5_117!tOPAbH-rZ%`IQT&%ZVaH@q?5Pnh$8O@F?iI3Mt_f?139x%lhf_HXuHD@IP7F>BHCtFFKG z{s-6kch|iSJoL!pk39av&wc))JkRcT@X9N`d*cOP{-)2)dvx*uHF@T;;)q~_PcFPh zNe1%e01j$Cd*Q{u{N10Ov3&acFFo_uXOBMq6o&&d=Pfzu?eD(n_WOSR>t`^WaPm9k z`Ql5j_|en9o4sgnhX8jy_}K6N@_#=6mCOI-BcHne(I+=O?j+`*vD+k^&a6aH9 z!4bg=JRfKrFwprx*TA6;2Ob^Jdwk1~?p-}X4D&OH$DVT1_wKy?j@uqM{hnkNeP>INmu4)h>e*gGP^aioGl!R2|N^twI=IPX1Q3& z%4puE7A4v+V0LN73kAZZVzFPp+*>0!zzqyswKQaz=1GVaV*Xo;i&bR(I-)lb;UQ)E zWfz!xDa2-S)|F+5PM1VjH)C^&pB%Qm;f7Q&ofU^Ccu?>&O3)fa2}+hHEh|jKHvuLP zZPrI>0d2gZjk&C<7z_{|uIgfu2I7(f5=Fei0J88UfsFE*T@GXBA#E91474SObP8OU zyp1@ixNVnc;nrm|#YGl{KYD4v3@8ybpT!Fp(iO*;pxGr6pjQcHf>UCi@v!Da0+ry^l!FdBXyL+zx`@Op2xfZtLsjDC z9;3SWOf61oQKTh+O)s|OR*@w3BnO=dU4RChGD+O?i}}zl(cJit-yd)+5O7wI^8v34 z5U-x0@+8%#PoEuj*ueuh<{Tzy|F_Nu*sb0i2*Me_z3sLu-XEwQ>!geSC_9!Q3J-Mh zBX4TP4QmEa8(Jf1RyW)R-2kbUfI-2Dm^oILOW8(;;|CCz)h$rl6>ZueM&A&#oG zIG|Ts`G6--g@&QxiNleiL2eUNZY6gR;DE_fVJHa?{!Rc?xMzGws>Q68E)}8+;Ah+sjK#BCXiat{8V1ahFG}72X@0#v9TpIJYk@O-2ijgNL7MD=0@sGi-9e@oJq)W29X}j z7Wy2ZgwE?+83_ZDupUHE4z$v!^k!Snim*ae(ssEtX#-Tg6Hu~4HXaAucCJ-ym z9(_BS>$cu(vpRY|_*@BgRgB_c`a@|HzNta`4;o zezk`qPg1Y)$IlJJ&mWP|b3QPC@jj0|`7^H#cxT|yBai#-Gk^QqH@-7!{IrqdrjDI7 z^OCQB`xn3Y<9-Jp**$FR=n2!E5B%__zjire?&3A4z3Z40P8~LS(vXo8PCWIUfBM_A zpFHpL!^ceiz(@YoR~dZh)k zA87L5ecC%mO`PGxz*iKOA6qES2gc4=FlPGvaWfZ=o;ELU>{Q=BkoN~X z^0zj3H#H7yZ5lYJbJ$PY>VDQ91KI9Y8&pXC{#Bh1xO6@MYzTe0;JowBTfKU)O*yuO zW*bXkR%(dp%erR%$=ro*Hp^ZM4)ofj;iSa&EKii?F(SImY1Gn*5+Xc{yEOt>L`>sm zb-kI@3Fgu~3Fi`^gohX?v<)|7|yG&&9ejuI;Vnqih=Ih#b3qB5 z6iPBFhgGCW9S=#t0bI+~5D5axJ+|b0z$3rCVom@yY)zPXvd&y;BF*35b0(nm00o>F z^zPl;qc;X3(L?Zm@qEA}?_{8y?ALwPfIoZ_ELV-AoGUY9TAdGA6r2ypOv=)jW;!)Y zo`AIO%1m^|9T-z>?j3Z!swlOQ`qAq$JhbIrgAl}T^33eb3c#j>Qk({~9KCg)4AMn2 z9~7Hu1gIrbhZYf-UYt8Q3UDBxx&Xvkfg>r01DSl-Vw7o>3AjxyyJ|I%5aJd8)l3R9 zHKU@Gkjjkz;-ZSf(FRYXC>Wxj2?$kXMX&oyH{5-Z04bzgww1IN&M1D`KvYRc?n+Xz zo`h?|fIo@VVhGL$z2SjGVRX`yxZGNRw4!KP*IcFkir-TMw zT2?UV;tyB(#!21^5Oa(gqd18YaLM_~f5>{rixUq#EC%3I1?U&PqAEtT{0vC4B!TP# z3`q+mkkq8!FjT$#5dx49IOQ0s^m3jcf0)+lGQKG%6$LO98rK`m(C|d<0nG7)+BgG= zCov&EwGeYS*$O9Sz+0CAIH+Yn7o!x_4y(D^-}4<2yqGEa`M;mg;Xp_8h}}Ax_mKXE zM*n;vw4GZ0ppLq&h&vo8&IdNzavQe~Ka*Zn#6xKjix`tb_lp!sol8lO;i9^R4fXp4 zD1!3+1A~SXQiApS1wFUhezP9F;Gl=!FL>Vb0pC0@f7tu+BB=wo-^d!JVb?!Et^`yYDjOBY}2aA3mZSqC0=^tCtM`LR!b!E=+ppE@F#GHdVG z-XGZTq5C=K1E-z&Pd-F&#dmM;)c^K(p7YRSPdP4Fy3avgA#fnztiY=U`yB9APx_Ol z&-?Nv-+b~XzgoQ9cM;5*HGk>*&iw?+)!)0#FG@IAIPZdsoC&;b)yY43`uBhM^Z)T1 z6QBC*7Y;gdwGS6K5XdJBJe+bMKV-0>Z?8g%1A*eZGN$hZ@eiVO4?F6l>uf~@9;XuH@be(xaPcId-34ijF~ z`M}_=;Xi7w^RKh5!}&l%>xlZ6;UD|RhaX-0@cj=y_2G|xZr7&H`p)5dbPTHR8rs<3 z7aG2l-%n^$y3z9id%_LR2kdfBIN^j(eBu+w9e147t(;|xM+|eXwJ)=)7A2EvF$I<2 zvRJ>%eP9-J{1#1nGk*=VXY(?uEg7&k(`DWZTNW~U%ys5B^M95J3q%aDWy0iusSj?R ztiTdU35aPrX>)1KwQ{-4ihvS7X&{T3rGb>0HVX~JoQy5YiZ0>vpG6Zg9=+CmVKNaO z>s>tID)+4N{I}-1Bt=9laOuIXiwUa&#QF$9zxDX7qK_{Z*n4=92 z;JF{;68_SQ;@dE6ww)5V>3E`-TFUj}*V4)VDsN2F7H8y>ONlNaNJ8$!#KK#b6iOfs zdbLc0NTE}L+4jsI(@l)d2OJdSiGIV@5PvPoO*%D2@eoD#4R=&z?PXy`s(s z91ht1Y8@2Bf8hwWSFc_k+$1U~k_!IsxZ{ov2OysE(51*w8WFdrk*c1La%<;#p&aL8 zXu^iaeXR?{$SME~x?H9(6j*A^rE1B-p?BwCt8<8A}cLH z!jM?xjRQc1+>q9KG45)XnmX4hT9t3I{P+tHM9@)f#Sxd zF27&4#pYXY)?-V*VX%3R&HU@xyJvG-@%JXaNgY4k9a^!wN8q_P;id?2>B2U2@Swrn z#TkN9aX#St2a^A>qsR2>xkKIh?;r4Cc0XQF{C>eE-v9SH`p~g6_C4g7uYU8o%fEfo z@&k|Z>GhM(eBXl)ul4@G&9~k8*!O?v`v(p_Y^7(_mB+5R?xwpw^SO%_?R}8{ z_%Y(Ip84;Oe&$QV#?5pxU^u)#pndIppenyACx$~>iVt5*ndkclZo2*c*$eibGIQa? zY4aveo9hs4=A6Bz&ssQn>a;1-rk`}mskh#K$NdjKeD8w~-hJPL?|uKdSKn~Us*_Ih z{R72M9!y!_kRk8SctvN-w1wUraIblbz;S_Z{v0@Lyzd^YZ!Nxjz(4N~G!N)(9njU? zG5ojv>;BMK=fS_Vsl9*Ws6FaOOdd1g^fjj*d%~Hc#?9{6FtD+82oaM;Lq}JA`%8H~ zV4|}@wdu8qwGXr>)Vg$NfF7`YwNZ3%>aR#=o_Xd47hJGv)hc^+Q>d9XQ&1MEtOZ(2 zAqoayCP%T%S?{uHSQ&xS0Dlc!v0{b&m=)9CYi!=&Su{<^SwS*mTN*OYYfXKOGHrS{ z(E(E*3R~FV7_1sBT8=BnV%lt9Op@h`(^1GbdbEJ6w6PmD^KGo~fjEWQ;5744uQe2f zPSKGfj%b$VhWQx|IFl}pWpRg?!wIs8&A!W`?2`ZC!N$EPN$hY8h`hoK5i-p*M2RRs zHt-nO#lSs4CneFzRih&VT;-Ldg@y$1z zu>&{OtYDy7Z?&I{SJ?P3`7FvR-y|6kbEGJ@UH8{LM@e!{3O!wTc*rj0+;Eu~_2Q&Z z#*%P6;p99YsL910sL;kVNSPB62BA z=JdijMoG-YA|6g+E{C-EzP|7v;)L^rS}lI{!xKa}L{{;@QRt`EWwv>dw=)e6S7{Z&~k%ChAL-pijGLqPRgLWF+JGi1Yz&MQDl#cKH`W1dQM zWgu`efrmM5@7}$0IACHlLz*YemS#@Vqjpn(2VnMyO@n9ZJXt$2u;HxE87K*ulk-=q z7qIz!DOnhGGEf0GEC*U%nfbYG9#Cl#B}*Rh5{2^tryV&TkYSmZ_8bo6DLYSdo`c+C zKrb-Wz}@T~l&S~tln}aNNO>qZL}2)|3d|%7h{K6fn^`LrMM^zr^-@v+ourfmbAX_# zgII19m5Iek_5At87ZRGRRHH5k|1DA&tWBBl<9{j^8-#V?B#_j+p=PSL2q0=nizn|7=%q^D zfV&S)77-f+1>HO#E`dm+v~!Pd{H!2>2r#iHy)qEbqn1BZRp|;35lEFZ{230Z0AddV zwR}iKlweDGQ=b_lS>=_IP;V(SMFLUeAQWvNL=2b(m4riFR`*D{gvOJ^64Qn(oKm5S zZ}B-CaLX;WDSzN_b6U3C ze2YFi_vs!|oC~QRju{RGDG!`i-o_3> zleTF?JKUm-J9wjY*(*2 z>GE%U^VU1=zUZr$t~~nqxeJ!~mBZWbdH9p(ePP!8Wex{?g}$FK@cjdxwmfrfO8={n z?%C7Rs8biY^@9T1y$@LFZ~fjGIQ1RxIsT+Ge96Fj-uGc&Ncin*Z}#B=M+BFB>uO(4 zxbK07`x-;vNKkw~;g5gm?E=i+I&cW!ErP)##-DP=*?;-3XFvYw3w$ua(E%cU#|XZ` z;Hjto_~=u=p0jv=W8qLj+99v~enD;dDOBSU3dHvh9CG9d-@E0Wxrv1nH+XO7H;w^MsR#OfVPCv zWtBvMWGTT+4;;UFSPK_*)*!u6m<3DAJ!U9;V?uTCptXJ=~Tu_MRmzl?l?IS7s0qBF87-1$~>TMF{t^}SV~&S(V$SZ z=l~D3%2EplIBAd>;F3sg93p_MVbbctmYFb>99fjOlvHP~#-KNbFmM|kFu^o8;%Cgc z6l1`x0aS&vHI?8t$@zdOND}a9_2x_fk9#c?3?P>@B;+_>sx0PGAeQKdi;kcCNwuW3 z#KO;{l>dB76104d!X!kO)FnD`K|loQ1Q{A#YR_N+h)X=Q#SO7QXvWVC5G8ovoZ*$k zst4tlafhoDpkP3{AgTx`Bov$xBn6=da6ns`5FNWhKnyeY5cwuF2rxhZPh#O4gsWA4 z!k{HWTgDwf9(dA~RxgD~OQnrM{-iMIL?=rdA2L!IvbaQHcqoa9h*w!9j*_v^(kw1u zP7ouujBMhf4Zx{_Fj4C#LsV5^Cc3!6y=VwgToA-6Gzi&dOZl5y%+M_JN(a2zN zvu5psQZ4RqAb;cbadpQ6AN<4xH{bo}*S~Y~neRU5m{n^IJmd(61LwT|qu1PU`}H^9 zb@J(FO`E&ehp&B7+soAi{khz8X!S0At>#xJ?leF)@_Ij95*!qq`^gLc_@B?d_d}oX zdjw-9&-6`q)8_8=-5YN6WrO=4c9hEtF1qwTo_+Q+7hbgdfWv&q{i4gR@KXhI7q2+( zq|?!_yXCHfk381b;`x5UKm7H-Kl_ER(DU*0F7&;HMCL8o$8Q|`?6?1M#{)lbAmE<| zVMEFEYrkJm6``EKQ>a@1oDX<^;JRDxUa)Mxsk0W1o-pIEmB(Lo&CPz}@S#VZ{K_Sl zeecFw9(nu+_df9O?RVXK|3i=5xAyS|9{v8^4?O13#x0QZ0iRRwH3dG2KzVKihWv_w zuPfZ}{ektrU(hwMedtvq+piqaHn@F!(;kESHFo-n!d==M-rU;XZy7YS4ry)~+0Zz& zfBoPAO~dQE2kzPF9fM{cM{--cwKIEUvf9{8v@u%EjJDD90Xx;|h``xmz5Dc^RU^~3}%kPX2Qo~Pi5-`ESfF} zIuihPmGkD!L#M>dY|^s?kfjRHK%q8^5!1Bc0eCC{yh=+piw*|P*!WRcF8IYmO^imT zm52iXTQ-N-m>^D-N!6v636~(YsAZzo96SqFyyd6ln84}5j0n$^P6=6n-yAMLxP;JP zJ|~s+3qMX<5j!hHc*HpnRm2Se=C~vqn6br;XrrIFRu{UsFoa*cQo%H}e9#NAf5VS~ zc(M&ghYP_t+QvW-nd1gF36vswP;k;CUFdcT0HyMllrG}TS;goy?xbh{=x`7Zr2-os z6bY0cgXofGmxyvAs6wE864Vt#+W0Ip01u;h@W-FHgdQaOJyH;{Lt>O0@Blq@iqU8a zkZkC=1zeV~7GF9MZ8Q^)w@kalK!cJKrY@Nj1;^;53PYGHbF3r}S{k$&BW!#Cv?V&$ zF&Ck(-wX#w=Z}^kz)v|&w)ns_Rn%gR37i;s2VYI8GEE>aXc5*2Zm1mV=mwiqc#L8m#RBNir#u*<^c zm|hO(g+!IE+-stS(?g-Cd6-ck1)&q*^z7qF+4C|m89F6^|1+2;8MaRR#lk5XO>_xH=P<^lY{Zq>NTJs zGfy6u5Dm8x0VV-mL?A@aL2eV{i$a!8^8hQE5a56Y@Q9K-Q&RU{WF_2tbgvyjn)SuApxa#An~Lo&q`;3Sb+ahF7dhC%E`gb08Tq)Mc^v~a}KYDy6s5nU8A z9dF^XfhcwOwRixel9gT_x~wRwD3A(I5h^6$UO=p%Dz?(iVxe_L(5?Q26$Vb#jgzbIkWEO zrhdaMzr)&`4>UBj_SjIc-z2@nO}_{`xrDQX}s?h#-J+-vT^ z{Jxne}_~;LO z{Bz&B>YD3syzRT!-l+9wZbto2FnH92LslNQ z_6I+C=5Npb_?N%`%^&~v8JsY&J4SJ#Gs>X$ftMP{!_cW zvAuCb$AFRjn+G+v4c%iOW7lt+p`XuR83iyuq-87E1EeCvjx#106jQOceZDCS$1XU_G31C zmRI6telsB@nbosqWvaJcn849F0LeUw!FpjPbjfa{;MRJJ4vH@A`t^3*;_i}HAgi7g zfpSEx6$CwktYmxOQXtfF46{pYfOQU|6T!?AEpIWzPYiUz3F-oz2b74K6#Wv54UsCc zc+BldBSHQr8*qRP0}7*kG#PLMbgTH+Y=#)M08 z2})={mrJ36s1<_bBx9Jlnhb{lxhrd_WI=L?D?; z1rd&cI9sd`PpKzSs#LGEkk$2n*}L;+zpwMK@8C{R1PKrnHxUFbfV(faSO|~=L2;2p zf+EF5q$typOj(j8d1)n9uI;Fb#!fQrSWT0(Gab*^?Zj>~lkR^&r_;1`VmoeYIq}le zndwaPd)q&uug~`l9DPZV1Yi-QV%=x%96X=rJo|ah@;Uh4?}ZmH9VH_j=&0 z2;2{h7yP%oA3(=5&o++_DR1K5$ANeAPN8pi;=Dq1M*G-6mjkuDy7}gt@4D+QwIO?k zOlBlg!pHpp#LJ-kNTcDlbocpH3!3%3I+t?^H)URqAs%h1Z_YVKtxhN*PEgs$S8ga!C*kA zx#^?il#N^|p+e9Lie)}7fy)~yV0NfIb4N010A?#aS`{eyx&R*2ffP`#G?1-U@dO5I zu#H|6Cdd-us#NobGxQ+pr6fI#wJ8u$ivpr}gyhU<`OMGOWK+^rfU3~K19*>W30q+P zf(uXQ|D~t!n|Dk=u%!o+#B#WLFrXDo*=WriA?NnUiRg5dG~*(6W#$o)LI6S0MW^I2 zAy=g6;RDBjNGU{Q5htEh(FP}FpiKltm~Ro`5w#WhJTu}{9~XYJfb}6oVa`DKmj4kw z8Vim|mz+qHmT!pIfZ;Y$D7u6&2CKAa>q3XbkRBR@nP$ohxzX23)W~y1OB@f*hESI1 zp+s-hHR>wUltjq^vOrh-;*v~IZKKniGuk|am>SGwtKn!U;Y64KeBdoTbZR*>?+FGL zC5m9?JaUOSYMGE3{1t}P{z}{rEUc{`+1y%KIdy3D^k3Vz=QmGm|Hqrhf9clSmljuj z|G=*6Tn_kxLN^81*f=byz+iR5fO33psf9|y}|ALpM zS3dhCpBeDi+=V!Wdx-vf^wc9y`eH*O(|?yg{qj3}zrir{%aVKzV6;TsrKW~eERg+CtrH?OW*lhf9I#a`g(Nls=xa0{yl$R&o6HL!oT(H zZ~f|beL0@*&;Rsif9Bu$wSWJ+fA2T-zVf-R{Pn;2AH4Q6U)SYp^l13@-}u{q`#<_m ze(m4;4}a<_uluyXG#pQTsuyARHama6U{syqsJt5&bYt;_uYBWo|LLE|;ZJ=2Xa1*u z^1uJtU;L|o`bU5Mhu`}@{@I`ZUw`z^{Bh4e{o_CR7yfvMJAv>0>A&>lkbm|U|M#E% z%YXHaU;d79F&A75Og94`H#=S$-+$=RVE*$1-46gOLDaq+Sv_`mWqa8d5v*=6EgxN7 zJAPnmb^pflU5gJM-u~$E)vaxRs$liVhnE(P9NKWHxUhI~arJ?ttBgz3^`qRWX_Uqk+hzBq@NYa+kM)&QSiX& z7L96I&D?a~;K30HU;>@wq=0c~Ph;kZO@u=17l!6W?m8*2-9&u@5v~?SvI8Hj{ z3PY-RZs~4crjxkX38GLgv3g~j6eWm!;|2tUhIZcK#h+co_Db5yOtOenWeZ&@ctwgr zj^W{eRutUEhM%e|idq+=<&cxbf`JlU^gs|xAY6XDJ{TsdXokB-;(&;p7}2>0P{;~d z4tbIiCE?)BN-4$0VLToY6-k951Qg1pl!vUtDFkJJV*><2IaLiV9*z+Kcy!4p6CQ=B z%Ol4!O*sd+SN-5;2oKII_NZl-2tjyfB<2b#Ll~%1c*;`t6d^iWS}w^925KpRgo{yc zZqqCfvc?FV!<6s@umUFwAb=F$JU09gi2_vN5e_|C;Si^pLjG`uDnve%1UPMQz*#CAO^w^Yh^xwQ)QU6aD#3SMYwDE7jf$GKFUt7=6n&%}X>wKxE^*P|{~s?=vwYT6VCN)!Z9 z(X!Y)l|aM*vtG&p3K14_ct}BlDxdQ_0cOEFL+0@Fke}_*O2UK!=BC9BC>wwdAT0uB zG{h7GkQnL`JB2dI2dyN;fD@gQqL4#FEVl;KW6=0YvPZ$<`^ZS13=8->WvSa;Tw=5L!fN|6rf&ymOVt!m`Va7yvJ}YNE}_pv<+zGmpEBn5=A+H zjP&BilQR&UdPn)ih6reoRUT?RW~i~&g_EFO2!`RwG!14Gp-Az2RBYMejLZPTnk*$C zx^x*G*~Sn(<@7_!6+z6*(L8o=IT;LB^nT#L^8NQMo&5G4`~KmhXMg9xN8ArAFRi`l ze!%*?d-v`=d-jx7;d76};%Y7{4>c(vQ>JF0Te!yE~pC9OEz^f%>`o)3SZ)89C$jAL&wm%2&KTLgK zz~3zJ!RZGcJ@@2upYic&UzqQ0^!(pXe4Fn#7%yl)CdmA!DJ0YXR?E`Kho5}#Bj@_V zd0tE10BF5n`ojE(T?Ke_SAf%B+4Ba9hz&CPD#+Cb(s`vJdM;LjX9{KN~F zct0>*4$STce2QRUd)*bmy{l*atSu}ZU0Po}y0);sftl)2Uc7t zY;IlY-!E`#wGz(X4|wdvXs`eL=Rg0=Z+`QYS6;D3S=jCGb_C0*1!vm!W*_#m(ps`? zXAmp1Rm+NmVza{rZx5}Dh(|aEc$;hpacgz!zk>%u)p32r z7Jr=Rb#a4B&U-d)2osDFByQJ$V{TogfgZ|jC5Vu=2{@gChVnBW^BUcD4bra*Mz*V5Sp%obUIsMQM~x&%JbV$cP`2Naz2 zb5b4*kebv>KPv!{AaQJ!2cxpVx1-v1!>=ClJbcrORVkf_pb%i1U<_O|w@LQgrf@;J$tP+z)tVwmfR#KX^aj zO@IEy|4q2wc?RNXXn}PN`##s{Cag&HWChuMf~Wt289YR!|{Wbbf;hIhBtb4 z;i^biI@v|xOmF%Glf}cmZUeLckG9JJAw2u+^vwfa*{Vq`oCr2N3~4b?&K93@SgW*J zOq7s0(%eyUKseK^n9Yl#g9}aSl1fm$DK_n__P@WdD0qO_^iMy*fc|u{0^~N$@TwXE zXFO(9i=xyS1-b$h`dQ&az>@(e;dn?T4o5T-6^W(BR8k}^ku3hM2$V-Fzc#uqL~P2* z93%oNt#PH`5s^Zrl^gVz0k*ix|3H1%@a^1vLWkNJ)btZ*bvAX<3~z zGJ9mSvdyRXuwgg{ltWTpE-f(TMM_m8gJ;XS^AMoN%JWJU2r*+YTpka zr6s%znQ&b=QREzjh({tQ_~}6$h=IW16Cmlt<9j9zQ=cDzxSIH}O8z?pD>?OcX`?;! z#4|nv<5Mv|@l#*(Ck{XN#b5B^|MF+Q_|i{&;WMB6vi2um`>LPMe&K7c{?u1ce)0=H z_wrAE*)TbZ$*r(1s{yb#<^8@|e!za#t>gfF+8J{0Gw0zX%fR7L? zt{nBVy?^7xL0>TX@Y>=7`NK`Xr!r?J%ogodY%8;MsfF56 z4UGM<_08UAb94sN5^OQI+*!)V+7v8$RylTUuk@fJvPh2w9H&hL14><5Y&Ksad}D=X zUfE}f=(3{HK)FqU2GG_6(M44)J)+aLA=*CR1*?U(x#%ULMWmcs{#dK^0{fa3Te>g+ z3iZ;@TR^8rOFaiDX*;GFzo-#`M>th7qs1m7c-t9;)MCpPb5ZhvOL`4chVXbyi7u)z zLj>L~tcy9aK(E%LSip=nd5*$!nKWq#fg*l!8!{l8jJGYk5B;9{&=DCargHVVfu)8J7TDZmyeaPri$tK|TT`0K(C;Q*uPX-1)e z+cc93^x~n4T5Pqsml6jCHI_ClB9{;;heJH#p8}hu0+CK5XvjFG7afAgE`+&RC{xah zy}1nM5>*)Tt%+u^OgB6jXsE?NAq^R2g-*l}B_~Wdv|{xB1yN2Y*zf>?*i<`CsyH_M zFCmCPm;goZ7-izZj0nddZ+a;ylLa`LnQxp)HU4>+%SCt!TWgc=I`(QK-U7(?ZAcm0Wpf&QB(bxp<9H6k| z>lzb^tzeo+7p55f>fcJjXr>`!n&8LT^ks^33Rd`JsmjkWBIrOYdZkeyk{`s( zF>bVwlEOCS=)!+<4+q{ftT|Jm&MNf$w+^j zat`peapCh+0T)1ij4~c6k|>WOZ!^cgzqz9mDp*R!aHCXpf<>k62_ zzya35U>+Gm7g z;zu8oE72_-S^U5azW;F2c`3hN;04p$rPn1do?cEpb`RhU$d3<8yCp#MX6g;AcPsC< zexbnE9=auX$YsJaue`(WFTBGm+h55pS?Wz+(!9ve-b1IqCIFXS$Wzb%WO*)p{Bo<; zkIav+4j`BYbeyRT*VPvfHe|$&psubU;L%CtNrryRTgmiO4a@&5Gjje(pUUuI3_m_j z;424x@!;c6K6m!QmqR<~M)t z=YGz~rX8hB0{2EF;L zr52l(V~!1mNlx$(VGihpV*tsb@WHsKd}_I>MI^{QO4O2)z(AV-b>SIfL?=&5Y&mJ% zF*F3E46%vH3d9OPT(I2c13z`CI_6MlpiSUffDH&!%aAtThEcXejbGQB(uD#jL8pO- zgMoMnNi#NY$}R-_mpZU8YA@w}z~#W(-49q)f7I>=Eb`Osz=it(F^bwNTa(u-8{E5_ zUpfHp2jC{Pq!~vAVCA>$H+&V(ZP7+B!0kWix|jx8-$lNYg%*+C|V3es46-YTiNF- z4^=700*{JEtyc3&NQw~4hA6~RI8uRAuL7&yriz?xOuA^JRvuI%9)QPVoJ~*6(=@nn z1yOE!1>lShesdX)$TUwdm?@OdR-W|+WA5;u^JW|{i2y^nhm&#|h;s~^iDvWaHD6(X z?guQ4=t>B{0itxgQJ97!yM&m52<;mpFFUIWFYBpQ0d z-7q1F8h@)t5fz2>0($g{dI0?;7PBPG5-@GM7)pMeq%P#_{7Y^Wt<3OBWpV~o{~jTh zG8De4PfjZSSpiPJ&r(rggJ8oPKTd!sMh?@Tha$=)UIC97816i~uR$rYeE4P@ul>LM%K+8N{2qz%zv@gEp6coZ!jX&lPo>}HW6z={x* zS)LRHHW{YP_)-WNkCk_JhfxeD9@W-{lKz{i90TGGI{eU0$ z1OLs#D?UH)OSfHn{__LZ&ptn}%RlGu2V5g7MRP|UL}9+DPuY+PX)IS#Axu1G(Bk1k zK0hFPQ)V7`@cz?NqQvXBm2bZ3gS#$#KcVj*c+gw_+y8yTw|#A#{Z@6qTRq>p6L`y? zx7D-rdj~ri_>szC*KD#x3Dp7i?v$u|;T^dW(M-cap7@cjex_XCGkw|zgM?;luP zJHE1h+$RSPFKzl1!2|nme0bsJ{j1A|k8U1WI<~TQ|K{Q&YlqIPEgkdYGXs9M4?W~( zb$QFryZiY8mjE45JLqZ$=yEu``2slNIy72vUVQPz*I$3#>%R@oI%8e3zFAA{TqtdJ zPE*cTj#BnJM2l@adOKp-8PRQjRxQgfZQk6Ud+xbso|!(_>CxHDLCzx)Z1h_dJ1W>E zqgV_rjBPOxD?BUwfmjbA+#9_pJY<)-*-rbYE{ik4P78@xSJB}Ry&Ypx+a`kU(XK(; zZ1|)3qA}OE?Q5!;pD$KUmLeqv|GoXfvEG7Jb zpnUnuU;g^nzy87tFJRz5w;MY=a1_qSt)RrhB1BHw*TiDz)sNqpd+DW@cut9WP$4+I zjEEhP1KfkqNg*O71)}9MsSXTy_&6frg_CB{sS(NRb$K{_DBPrdb7w} zXI+BEYdZ2?ILcxpNIxamh%>=1B4!$xo8@o1$f8Xbe<~+g>TL^~ULv$9GYK(LX%Hs0 zIP(or-s+WyVu27h7W5Pseni?ZWR!;uB1Cj@Woqc65D!jXjdWpP1%sAUo@2moPI*(~ zBp>4SPc+cIMth$W-VJZSb3;Y zCsY9lqBpPJ?jiZ6g>w~*cYlae_U=)Vds;CVVk5V!5K?r_Q`9>|- zs>_uW7zKu(epYw|!3jpvgkT6-m*fgkQ5k(jsP%{e8;5B~2|W;$VlPoBVjpn{Es<6R zB6{&7!Vy6t=pfBQ35%RD&>Wbr)!gHoGE;Kh3GfqiD8c~LiN`_oNC}0;t|7}DXZYDT z<}FV!r~v@ss=|=5Qmr@s1};^C3ZVgm$64J?g@-`++0NTacF?Jo3V+g+p5#2RGIZFK)XZ*f?_5&--{k z;Kl%0h~^K&t_vK4Et2*rpC9;@U-=cQljYP}ZFREvSd{E#wmiow@A$ycYy3w{r>stE zRwrweQTt4ty?+8DLT7B3$Vaq69Udj9C14_ZWBtdty_fC#~Qby2QnFq9mz z!`bC9f1+#Q1o6~mI1mHcNKvH)II&@1i**6Ar5B*+icUXO8O4B;AZB^slGp)GIJ*Xv zEx26eZN8~!mwp~xq%9RZe2+tF23X{SBH{5`JJXvR#cmZm~6=0xHZ&JiLpbJl7=8}{K%<&vi zLdGQ0MR^&cr!Z-dI&9uzbkXUZ#j0o}v<$i&09Hu10e_Y52V4udALw#GT)TJg_JIL! zc9LMo=I;mG5;%W)^^->VH(u62tGB6bod+I`zI=iz!Ej@12qYPfu6}Uh_eSp#4=EK@ zff-+8YIFcA074c|fS;gsrd7qZVmU&wdcZl;o4y@~2^4^N&}Vzj`Hv6`&xbZT;oPH> zLaq*@>;`=1EwA{Qhw4^=DJsR&<$x5aAH6t92^>ODAgZ*&t5B7kR0I4dM5t{dNCjxp zNety=;?%bL^nrB4d8=8$t6fpXtSG#tt#{k{oJO30~nfgx-h5{ zuQ1cK$PC660R&wt1{5Ye#5wFyfvGoFQovn-O9m}sZs$YFS;-l)TvcN{2XZUJhN&88 zbuv0dkiy4G&&_&9?FKcQ7-NDKF>l=6f>#u}7i2nzR< zq5@N0oXlqkI?5a4+ z*EVX*jV{*nbIexSP&hy*w#1XIa&*zJ9_ZmiV=*~2yVW#&4T{x%+y+=72mX%8#qS3W zuBeBjkSD*j;1s~XT?TyplIP_(LSJ`n~ zQ@fs3|GX6u&ke3tAShaOqS8zjOZ12DzH4P^Ix`6QBac1)^fS|+6jxODpE!Bz?pt>4 znmp|L34QqA6~Vi8KXBQ4{t~8lM0PUp{%2siH@NWg&eNwGh8L%AB$)k5&ivmm@cDtm zYttVu=xl3z9Y~O52w{ZZAv*p@iPHjk=l!dMhmkH-R zt;g0$Y&Lpq#HosHEblzw7!TVH+P~Tttg-D2R?eK^kL485$pLKej$0hSPZb^%tF-+W zPAwig4rb2df%6A3k@m{A>@;_pa#-r{1|yqYzCi#Yz)ux66#C^qKXrBX zqeoXQP7L(xr9A!RHvQNDdY(||k$Xl#N+IQ+=eo3fi696z4caeyt0@7Uf-NfU6p8^Kiv;VxN)@7n&!{W zzSa-YOO5rp!>SeoFvSd3g;7Z$8ql#m>y4qhs_G0P6DWYJDk5U7229v!yymyRR2y{a zqLU}+Ia61*>^q3AugCoW&bB0z3&1Tc9_X7*7YwiaQuby^A@a=tj|FZ{A|EDJ&{MMd3-tK$ z6}tsWCXKk-7I+oKTOpfwZg+3K=>xu^P$0S zVZUFnb3d?ir?HcP%g?~L9Dw}g?*|tALctsF2mJAZ&8<^^zJ1?6-?-=O=EnBH11<;r z>|c8D;OfKg@BKiBLq}iNmCnPKqYlH4ueaQCi<8xF{nl@N>s#M?<&{?~=~i0Xu5HK~ z+v;ttMz_X#Y;*Bw)wTCIt-bv6%XU3Ww`F-O;4Q+~tk`W>RzLe1wH+Z4+i0xkZ7Y^R zIupUh5U>rg;(!;AURH=;hC=`zs<;QS%iy%kcAH^cwbE&%6}&)0cJLxd;Oh4EX8fk4J_glI`u)iK|1D z1DNv_B4)vgnobUs-aN#Uhgvv)#Gb3dq|@2Ve-Q$nq$EMwI4M$sWu9Yza)J=r9NsXz z_~MJ7|NQ5DAOw+qhePgB;_Pkg*eVwKJ1Y)_WEBr>0D=K05%k&N^!$f05EToQyoFPn+sUG*)}wl$ z(_>ERqEpL56vN?B6x32ki74pL4GerR1S**i!a)H=ofW3DP6I$p8?_t;q%udRNa6GY zUDTR}=^;zAmd~=mJv@0%mAPz!LjXZ-{Cs8|n*k~hC?g!2G2;{$wycvCV>u_%NRa}C zMjSIYz#VtoVHva@x(cu`!U1I50{kVe2!3Sm2LvUYJ$v?8MdNG#kXiOYd~`}TE3 zV2RKxOBQhN+AqBDg2{gF+&SyKHyUr~=&hEfm`SI8LX?nl0uYpn$^cOXjEnpmGB~0s z6X#%70A>NOk}$_8>*|NOVaOvN0G`%=dKe-_9I;!4ae;tNT+3~}b_A`*eC9yzsbPpV zKl4zlw3_v5RUv`uO8vl1y26={g&ssu4L9A0V^)Fabb?ZWC!-!gT}0F~eo_gBFxuj# zZkr2ys7uQ+44|ce8|Hq~e^&d`O74-XhAbyZ;irni7C^0%NI8WVXe(qqx@xgmJiXCd zKZD-u5kVUAjjTt#$}GU&9^{IEhW5AwhY!4xfzo9ZxLv6<(1uS4QpY{6g5m0r5^T9G zy^ZgbjtiFqvRztadp2CtMhr*CT$Y$)i0K4NsmB3&RVF%-EaF4~sycwHOl9eSWGVqy z1fVMd1*wcP#3<$}lO76%Q^|?cV|F18oMMnDIJY^FlaRs@hztM-%80ixDPc|~n@T)n zm&3&(=YT4Y*aA2rK{~Y*YVnXFD+(}H2AM(UFxm3(b}b&7sTyv>v#w<&Ls3SUf@MP9 zAR|WUDp8FKX3FzTV)LZcK;Xbq|BfFOc+1X*RA zSXx=X`q~?uwVUOoHx!1QH;0lIz1fGQP(!drRZzZDOKx1#Gd`vW&zfA2kaTgQMe zA2>U$eADL#e&$PGKD=;f*X;8Hd+*ra-!JfWf){(odFMBvx9Oe#9fXU#L%ofL9jToR z{D@}YQtk)h@wJoFH&6QV!@g2-{__Lf4=gTk`*Abi!vkw8$F{dl|Hb-sejeC7x_Rix z;>MZ7YY(m*-rQI|wt3`)p933Peh#mm@Uyvi%+Hnh{D9j4R{`4j^KEBfhvC5Th{w8w zZkhe=cfb4Vzy9k!31Dfm=i0a(1}sXJS&K8Uj9ZG^wc9K_TETz?$_hO83wZ0W1-ymM zBA*hwfGy9~W=|)s7cgN-#{fwuV!c#R;&i9g%THabGpa?I*`IdsjCy1OkNrpsJc@#H zJe+6OewwT<=N}?%XGGBT0uE!A2Zt7mHa2cU!YORqq5;5(AnJw41Bypd6!JkV5FYBa zg*gt85J1F>NM1kuTMwi%J4uuhNKU@I#g zImu^i7zhfAs}37>c5I?11#|(-+VYvJETWL|$aKSmST8F{2_kxIAant;0G%6B-8^Nk355s})KU(5BwM+fEENoA zM4f(!UO-&61InvyaRDMT`_thcqD73tI{$e>#4wdB3?*5ZW}-+(T$r&b5?0`%YpSM} z!vf@wN2(xrSXX-t(L*8dQru$bYzC&=f!Y1Q{IWUj3N8`3=8a&1z2pzCo#IQ=NW2X;>neyJ&;ZCFyh^}-87y?9K z><}f{hzH8R_*R+n52*F1Lex)3cf(C~DDl{l*cE}dr=gZ+JiX>?Td$^)ntf9!HiEVx zA^|0MhyaL3bO&!Ow$$<=4`($yZF77B5Tyl_3Wt@D`U%t(q>6%@LHH@*p74S2X-fk{ zZ-LiN+UF=t;2&Ai)huAN3Bm-(w8}T@Eg%rYOb`B?S7Ty z{l-*z*Fbi(l0&ohKPDE^KmG!5ep8m)JPqN#LC~u`v z6o`QJBCV}f@d%K^V$=$O+SZ3eFyyvJoTJNQnh_z`#wcf3I1I7Eb0KI2?h#QJozrBS z{h=#@@~_1pK+#cHuQkD1A*&u)WIYNZ*u8uA<*&4tbU(1Ra(s1hdt>Fq@{#?n2wV;v zS-J1+?gy;T!wu`R=^zR*8eFr+YywthTav{bXC9b7dhfmOz=``$sio=0=@ZY~b;q6c z`~Cr+ALtJa?A#ArkqrEZzT58H#{BRZcsK6{mR63v>3-l}tX|`O;Pl3p`++0t4=t>m zUR(6%4yVh3_ws(gdNO}M;L+mKVYt@v2#L)S^z%Re^R5Vf`lo-|if!vbu|QdnTfke8 zExZtUMF~pjnF|G}iM6;#@(e&5<5NJo%=@>g2y&3S3)8NQ)YB5DXd7XL&%a)TeNbfA!(;B48qY4`ncuF$Zh(Q49HX47LSvdU6gr*CbEe0+H*=j@4M9OQnsm|+=mZ|A#ZyZaW_0=` zUm&dTlW!@(##W9|!kOv;h5iCb3eMZy)&fb!1JEgv5Ds${9+48J33_CR2pr(o#mT@U zud*1wM+iDW>1rbIjfbM(|A;r=@GFK+gN70(E9s<`1|q@C{&WQaVS*kwPLEWvm;6HV%-DPQ>R2S`1waKzynSxG1>9 ztAMv;d*k)M^yKw?oB-c5gi+A_fOgyu`22wPvX&S1@0@x5Uf}lW_X~hWZ*UT5L`-uh zPp>xqyVJxs=n^RH3ZoU+@}dT;x>kNI+=%GKLmUDcENx)08aT3~KuU%}6m|h~w6O>v zl%oLrDv*Avl!2}su>N}&01#{ng9v7iw7J~yLIi9~gMm?c_yf47yEu8)_JLE+9 zDZ=W>dvN525Ji#_Vn5=Lkfa76>I7k+AvqlR~ z6@&;UBW5>kF^k1QVWwE_yu1f+YlY~N!cU2i5yv7KzdA94Dx2Q-X~1U2QQLB-1s=(g zayO;?`Urs*f9B}tCy?QJU|PI@8-i-(F}Si_4d^N@f-NoR#$8(}7Im2)u^0X@Bv=mc zvt^dTkwZEI3WL;grn1zFIS-A6%Bc+CpyE_@-o#BJ05O$RX;BCSRHfK-DNcsy=WPk$ z8&?@ZnC3LSE*AeDV8%Ln|i_uik%Td1H0s*ukZ3{|~shbaZ*;*xKUy z^;g|+&93XN+T}*zDzEx<%|1-vdAcHST-S2RLA}{@>#etTM9)cUIG!7?r(uF=Yq{?F zTlVZV4NWD#TyV`yYrkLc(R0sFA09aO(&fJ$&%Yl{`1tbnIpn2Br@!nr{an8OAN~#Q zUndQ7N&EiS;J=H+o&3MM894jY^WXoO`$|1Dhe$nyQC4s0IWIJMtL1$^WC z(Z%(}V}2|he(u?vel{1k{am5X4|wsno@mD*7VhZVdAP&yEw|j_U~J8?y!g=gcfRwT zFMa7tR(lJw-A8LRwtBaiw+mR?Eyz}2J5d``+e&M%1-bpAO^2*?TNeaBZNXU5^-^f@ zM}bi2tYVvn*cZ?p9@+tEu&TEskOC<7k%6;f&-Ef~@30$k9@t)~0&sdd0N6xO#(98F zQnZn>xqvoV=NvqUtmx&T$3et~A~V^teNTs*3;%7+oCG=%q2qBH7Z;pnf{@`4oq%Ix zWk3}Cbeig*#RONWDhY{`4Ri@#ybX;gqzJ{MJ&`KnaCA4!h6x2TbM!Me+~6k=8Yc@u zyue@)Avktn&U4b%3}~(lWPl-EH1m^*(qaUeKu5uknZrzL(cAYMWl|y{UZi|L;gYoA z1dzIn9p(APE}VX{bmB=l9wLa8<5ZB`gQGJ+IcASqAsZS}fc`SjU`d7A0}yn*6ta~n zI1d4&a-udR9>uGuFe5UAhb`XH0}@2XfT$&ch?(1P6mcq0==lBjLXthF|d_45*u>Dcy0xcpOS=fNMUWfZ*Wen3#poT7F!U_`Y3^SAo}FM7bc zo)$x;qLR;@o4%74SX&IYOakL#9qiu63K38jO6D+= zqMv52HVYsXydtmKo9xlGA$mn&ZL#RJ+-c!0cQkO7S~`U<rqhO#GlmSX&Q-txUU5~)c^|hI zD?hcz$%ZeVi6AOYpjN9rwrHSM_!7u@h74H)q2)6=SGmD7U=9yXL7^9Ky*VRGl=H_? zjXw?srnXxG0P)B@4z#&*AV>;vO8SN0BjB?rBF_8VK!^^AZUl&*X}vs=x)RG_6jmTW z2tyE#O%#Sh2?2RPp^#naGNa-20L=8HB!z784G-X6p4WOr?0&!^c{%Is#qS4>tesk1 zKfSoJ>3-nQ%JIeZ`F?A#_XC%ntBZ5Ki&p_}sp|5__u@YPIP3iW<$#NV zAL4%C;PO`Y1Fi_>?+5;$16R2sIJAdl$+Z;QD=o`*7LQt+jXEz#}ZbUz;9FLhF)EK#*a<-wpaTO2G;4p@9d;SA6quI zaz$JSOy{;7;^YQF5!uR#=q*gW1l!_ud1R4kEjEGnDp@(%jW(MIk@NhzN^J&?6_5%Q-}7jPgVhIy^|S1B0QI=WJz{9x0-{oKpyd zCId19;S%sjIa`PX@zVom3(*ij(7C}Gc0Gn@2|7&54REF;Y26R&SF+ZW$^|lwjsC1^~%zNCQEf<`~3CinoPO zbl4<8VMq~XnmNNRZP;kTzzSJF1Ow1p0yzodL9YOcOWMnTSeW1jae}nrZ*=kmkwpWF zjRp$Yl}6b{;TT!Uvj``Sfh>msibrZefwL%5k2FJMm1*LX6h69PMOP}`ZpMXxB@tL2 zy9a35?7!VF@n#^lH{K0QPmXyV@ZQUoQQ!A*KQfXwE{H1)U&I8b7njN&rfwc-M5qX~tR+mx7AcuX7%k$V6Y z5~vpCq;epN%CrJ_-~f^~xvJjCS_T2}ai736hAifxmQfQnK`orO+?FomVyxvyLL^Yq zg5s1t*8w^Y;S{F+G)sVdWl|N=rGBSR;bYd4aH%xk5%Hg$mRQR@+pFd<2m1W{89&lA>%x1@^2>9kAKTFP&ZR_s!Q=_ir3NbZli|ZQ=07;f13cyKcH+*RGp(U3cqsJ}lsa z1lM_|pNwDL&sEp$ddr`yub=4G-=w|e_Pd_?c|Ff05AKqBq zy6?jWkDb1IZTryb1HOph(Ao(<_iiux@o^(R2i6|;^X`6rVE!oE5!Zi#L0kfKGvGW7 zoP@P|_wIFxioq)Vi@*4buf6t~Ro5cizHC9Z@LFbpMYzRQ>(TOy0<7UyW<)D6KzAC! z&=zBHrrAD4r*)n}fT70_N?3vGvhgj<08UlPiMQI*#yvZfeaH4;n;4GSgBY??^F+%N z3=n#_=ZJ*?v{_IqKzl2rq=@LkuVsr)K#G%kAq;7W015>HY*@T?UZRJg4lpG|>(OC@ zHWu~bA!{qwMT0I;LWo0BB?*&@vo~lAPFC@AgEq{7T^eKqGlYAP0{6&mZAcE2efHUB zUwGjK=K-2^iG>oX@({u??r}9wI75#;)Xe}O?gPd`D0ZfcNDdpsQpB7=k#;8Nr-3|i$0kPk$H{aVASh&x0WNj6grGAgQr>Eb@CT6t^iZp%1Vui{LTHYY zAafoO@r)=8cPVn3Wt}QI0aaQefC%diF}18Cri4PO5LrnC9fP1qp}@t02LoGbY-rPk zSsEod_weAv&m0Y$nb|-8wqnQ-xlzW*vYTci0A2!lm2yPP@Wv>GB}&wWrfI@YxHF!C zqt+vrn8V3i+9FCw;UIFgmLATFLW_Y#lpyD6W0xQX<^UugjG&yTNiB-gn&QDJ5UNnv zh2Y1TC+yNdp)OX?vxQAIWbA@wp2rb~ef;NAR^51*HIM7?A#c3HpR$n-A{1?V=wyPKMk1TS~)2TW1` z3HR=1UdW-8DhYGedTxvi0gB8Uci<6jppBzKYJ3|V1wDsE`!z4fTZ z6jfzo8d}rl*91i+*!^Ljq%6as=2| zXcI({XN6ahKs@TgFjB{^sM*rRP@Gj7%KSKb3=jcr)hd5D0LTIedZ24ok5eOrJck%i zBWs`oy(s7+BF?%|;}YPfAu~FXR^B}FztHlhh>BVWlu%1QpxGn4^doxIx*|AtZu%Ai z8?>nb%y-O#0TNCM2 zUSlt4xwib0B1?n4o=*G_YEg(=y&*Qc^k{*d&SAi=hfbDP*7 zbP?nLI-rO1PHT|5xF-p^xJS@F>x5u$)f!e-bfNPQz{@k|X+ZaAbmUoEFNM6C&UP2R zs|u%qqm6QGS=6HAB*jAr$0WzO(dm(g{9)briUlV_5Nzd*^EBk1=*Vh&%r_#C+(@$n zEgrVgBV9ljLqnD`fGj$G;w)mr06cO`OLKse(SSdc(}n@vW0Vxqg9w*xndAc~iWs!S zld8p#HlFYSLoGeSXKI-P#lme61)?|QA=Cg7LGHe0ks%2jd8@vr>-fYshrfETwa*-PBMef!)PxEZ+Z zw%g!Z4Bq2p$q*P{^V+m^t~PvfF7t>Dr9m-j#uU+zc?{QrX}ss|2Mkt}x88avEnC6<-cLOcen2R%{?%g>3;q_Cien)og*k?a<=fAPM`fo0- zy>`ck?_WK3d}(XZi^Il=m8ETe<6vX!=<@2?%KG+Y{Vc5?f6JeZV-GBEoLF4*R^c^GSmoFUfb7*y2yZ^}g{QZExU$D5eRf ztH+;S-v8{{!Mj&C?pfPBu)Xo&jg{@?hqe|UcwqlSevYg!``PjzkBeJ}S03?7m< zW#Bdx8m#9S;I>XHKPzplkajn!;Oz(rpMILrj#64Y zx|r)oLkWI+0TEjag&r|vSBuUxA}ei44niD&W6Lx)AxH&R;h6P;>DV;;%v&cedLY(COC{DkWmSEXvSYGc_MEGLZrBOg2F2v z@)NGhz-eh9iwI{$;3_2lOF~g+BFDl>krj@V@}Z>B+*lM2ow~#r43+bfIIdOa*Uz`Z2wLE}!0Vd@iEkmbh)KRmFuskuaWM+OxHN)F2!q83j}~}D zY?Ki#Zgvw3xTCv*>HVS;yGKMzy0zV9^;1thb#C_Gnzj=3UgrrC=Mv4dQ4TCAJVZ|q zr1t_!0EOr?U#9oR)}IzM+CXk#;AaJ2or_D6sMX4*=>u0$GJ}UUvWat};+Kj9$yUth zG*`6r!}GjK&XyJf3V2g5CCt%AEgpUrrV!)-Go5P;w6tAudr87+?qx^$s?~hCrUHmSIJz zb>Rn;#1@f1nLtmi-WXC+Yv7b|MXstEvb<(1C2syEH!*r4jR#(Ah>qTu{PMU4|Zv8W3-Bg`|gaKClHT^DJ`GkOk)E z2w4WiYjFVRR>J9p|ElSJ;F50%E`C4Ya$x`F1MUa>eBqvZzx&aT|N5gJ`@)^~uHCnE z^zi!O_2UbxK5V@0Zyc`MhtxF2vc;Ae5;gbxq+IlN+?PQPC;{VX5#<5vt^5j?to-xCM#`0)DHeOt%& zZ>@DduyOd*`+Gm&Wax0~96Rm@Zkc_s)*@*&wuIV=EW8$Zt=-(_V%4?MT6HbjR&NWh zb>5=|*&{X^A_l#P5NmH+OzZG-&pl`Ri&?KVnFf13Xl-YLp=?owu4Mw{F)C(H~HM{&NQiU=YgE>TWs z*f3LK55%p1iIkdph|5JhXfI+$`A**5i>!yXba#(v_jwvJpjK7(dwd#Nd9AkV*_yd z3kt%zmMjGDjcFs225uWQbQA-p3nx`gK!OmbN<8>wH7U%ju*KB|6jGk~R)tK}aPp)_ zboz6Qb%K0jVv1)r-B7}{7=YgNLp+jYMWVFIp8nL*Jk)X(CmyX{m!;Og)<(AkmPcTn zM2Q&k&TafZn)d^)1+KZ~8ZCI!{eZN{QlA`fIdJQ(x4InIw{M>tWAARJfc!T{EVfo8 zi-0l+jI3%bnT9|zjku}+x=cVbS{VTR#usrm&eQ+(Q)Q=Un@~0$;a*HEh7bU;cc6eM zwb3n@{GmV1)Iw6LDeF&jaM{S;i+w%_eeuJIZq*Gu`5W$rn=ORbSW4} z#fE|BSz)*26r(PJKu!jDl&*-SD3@Yjs}yMg4d^nQR0Z!*7ema+kGLR0V^scmWxP0P ziYf0ZpSJ*=2C7&|r$xcx});PFTy&9N~ASOh3sm5MPIB1Mr&6s8SX)fQhVY5ld_iz;ggS9)h3}RdR~o@BxSs4CpVGA>|R| zgO<)r(+@@noNwsmzXH=$4n2y6=1eq+;Q63_Kxa12m}|`!QwGxQoLd5jMoi1&KNZ=xj_R8 zCrhTBLmX^?sag_*Jj?w@9e~Hpz`J-q;7wtAM_4&=cyaqzZomG&{OGBF@aV(excNr^ zFSx#P^xlol53g_d4#VkN$~QLl`#VajCoc2nZSMzsc))Zw~azDJp1gkmSPAti?%Kryt8z4Y5$_oe!)ZMRn9@~uUQ??0e>EQ;t&4r2dI3EICDEO)3 zhL#ArSnzuUEQZHGEh%d0i2=o<%+Swy$e={T$=l+^&O!qK+($vh>tGp?dYmliW3 zD@6L(JtWg_Iz&C3OM}FhKZ_8$DthqX_{hVv$BE0v-cF@q`1^j%yrB z;H>B>Ol+VWYUKw&Dv5e25epIH!jMO9^9@cFb7>%zeirreimI$@i4erBm5|O(@P>?r za18X678%BdIsJm|jSLT5Z4kjjgF_d#G@I`woX=uJlwO&kgj&iuRx)#*Z$Rw<5s48q z{f#eMAVIP?F#w$O)T>Q-v1kRZ7n{Os_y{tJNEN8w2yzeIGU$rH8?<-)?gzAgweJVK z{#z3yL?*qO`LuvLfxUb8N=5erD1P%om()p=L9`6^cFu zG9aim0S)WuB8!e84b}lwGTigk}6pvDGRhrOPtE<6BUaT3oW<*ZC~RT@16y-We-C`?vcT9~6m3x*!r z;56frSW1KdASmo==ZSa%T_aKU*5{vp-VOZIPd_b2(NUP6+-r^)TmU!FJa2+9luI5( zQ4JVni-x%X0ZBnjQZq;woSwpm#3>4{8YxMTN!g>Eb^NNUD*`tF5K4wPix`xa`+>kb z#m^SCc}od^14bE|5;VJ4_sDH9(%2Xk&Y(*;x=2Yu%KtPBGZ@S?;{hr07~nz)^coIB zAV4FVLPQj4N0bCGRm^Pc#v=remK09)*@;3y0;48rD8^J1J(hzeSUiKgascno57F(cEYffp+7so$k+*N={WUhgEA~sUuEgOYgspkWiF68Wd z=6Q}dOZim)1B!ywP*Q$q<82uh3+D~Df)R^)m`43V#Ui3mNJJ(%M#Ge&xrFO#{Skig z3R8@3Jj@!A?%A`)wZJ9c47f`G7ytZ#|E8R-2$ub6vy*@ALpS{Ak8J<_GpE0K>jyVh zxBa*u@Z%30_%n#^2k!G<4DZtYfDaG!nE{B;54bB>J9=v8^8;7te~ow4?qr}0EUo)0 z!t>uY;5!MI)=!{Y0ml8n`O5)cRJbyIkl;hBr*2=l|HzSt7Z=aE95}Rk*!{qfwUh7f z{eTm1;Pm^!4}Q>*7`PvBR`HQ8`!KJ39R;rb`veI_F9vz?I>+zR$$QD z+kS^0vzA(qt=L5DP_~1%t+C*@Q&{JjX0ENro`Pb7&|>I>fHVn|Jri&ZSMfoYcMD$YI*_CocA^;BZL{OO~OQ#c;mNto{ut7{vs~4Tx z(cAwlvjs9OS8$wwW*KliFoMQWN;}EO2J1W-{-=`f5&&4_q7FiYh03RyyOi6^~C zA_f?^iq3(2<}ha3DhY;|LoE5!@{OyFsa9`-S|dUaW;npipJIpWWhgom1~DhKl(49- z1cJ^hATy5Bq@1f+tm-K5B+vi6;#j^hO$sN4IVPW?fTOdhOL8XFGr(5T${tRxvSNaW zdMLq512Fy3(?6S$)AYelFy*=+v(TrL9)MS?JcQ#Xhz$stGkQx%Sz^T_!K^b4i7jFZ zQDz=ZZ*zDk*QP24bdQp+o^xArEQ3BUaP76%UVr`d)%p>UR9QtlF?6MAqGd#5Td;M2DVh3i~op;`e;%2~s*+l`k{r1}td$W@|qhL~7 zIU8R{TR=#YuFM+(gNR=Vp(_J|ARfJ-8LG>;w_?-QBCNGd7#h$Ulh)2+A?n57@!spd z*DI!pt1$%wAQa;4jRpe^Ib6#nL(j?KUcNC6;wd_9j^X4jkxFQqPK(q3wpaNDA~Zf* zD!E;l74wLfZ&S=OsCp@^dYf4-1@KZKZ=fy|diX;#4_WbE^TG=+y!`UZ_G_*C0WUjD z7irvp}a?zPzpcO4@uopG@?U4B@R90~#o#s^TB2$X3i%uSXHV8$@B^=ckl% zhLZB2MW;>3TJb_;z*IF~{KkZcv{pPTB)FWl_Tu*g>%Nz8`RIMCrw^___^WsB`iGAk z`Ry~Czr63d-X;!iY#ea-Ts`gQuA|5NT>kyQ^u1?q`Qw$u>&d~zO}+jrv-V2-pXrXy zoeb<`pbQ*YI_9TO4m2y>68PzUz?Gf*I#&e#ih&=<=Gx}Q>c-;Q!-rQMT3TE7b71Z0 zL2tARkN7#XzU`;qN?2am^7Gz*exUmSpCWJ`wu4(>Et^(d;GEz*ptbf|Z|zy_WtLwn zEuy8{N{iU;U>&yh4mL}%1)rc^xGlhTKm>06_sB$RyRDhFc3wQ_apJ)r=tacVR>Bs| zZ76L|Ow(*T;9C~;67k4GJZw3cpipHWY!9NuM&m?*o~!&Pf`<~?^fGFP?I4jjBCqhE zOA*a&c3RA&c%qlc?2I!V%t9QN;GlC6h7Myi&|EesmjV2G9hUe^A>Z^;4iP)wRv{g<`fnO0xHPOY4F}xoltr9l|37Ss;Iv`pKpN=Bi9x*a zutEwz0y;6^Od%p!IG`;JO3tU5LZJafajEjtm~3Q1qH~5thB(t8lx<27Rnf`fgrMMI ziz-BdK~C}aE)RAS)Z};=#`cKvnaIT`QhzrreTx zZ2mQ?F8J0%j|0EP?*ra0Jb-us=+-7nZf9`2fHwhOA(&nV=Jx^b#%7<1Bbjn&o(878 zg|sudP6X&ust4;zoha2PvJLdL32r>-0zC*I=!gVsb-Z``pp#}eoyx8)?kP_7-9X(| zu%WcJGg0R%;SH)7^sH**kRb@8xd$=*bFZ0dW{=qlg#T- zZqq|UgR1udI)^wxI&1a)0gJPx9)-C9m^pxxIes!kt+*r#9)wFKh9bo;I)XzST`O74 z!h}t)pvXUe0A+9~qWFPw5nCscY)H(WDin{-T5`(14@_ zz1A@X@&^NmIj>Yjq!q%$sqg3BCx}g?Wy2`NkZ(%;6<{U>@ar|M>OPME&Vi;|6CA~m zd-vUUJxRGx>tbv?1VlvCRBaYhSaRwS4uD2}mn`$dDhy#``IK>A zYGMjmxkKS@v?oqPdFx#z^0?Fya$Sw3!;LFLUGbK?rSgz|A<0i491;@n=Sl&wjGdxi z1-MV^K#?22CCv87N>Hn8S%zglUy&QdCQn_?o(<#?U0lhD+X;yTpZC(r%Bd ztw+SPz9~C(n3r-@Bqf@y@T)rYto`Bv{*XYLSRBM#Es2;jrLwYL#f{yMQwjMJ*wL#p zeUR;Odoow)=+fh!EzQ>Xc;SE^aHN44vF5!{7`xp(JY#D*fk&P zStthYzKEu^zC<4Jrte`W+{#@%8(=25dye^KGyeDAqzK(T22KNKd&NVlZu)Ill){Gr zUt|fOnS2O|4sd=$`T13E=6VLfEO6E(<%GF&qcrhAs|(F(mJP@DlRrNw4yQ9|a%YE} z=RZs`r3c3Af?L!eWJ%HoYE+&hIoY3D(Vqbm(?$%6yao-{_q5m>gjHe|l3VzyU$sb) zQ%%#+ZqE7!%#c_~Ukx+H;W(oc5Zr#<~!jD3PvcmC@CiPL)S z1^xl{vhYBqNXnAbp^qkAt-_^1nUAjvDLiybd^20tiPzY zlyxW-$CbB)es_7uZOeiz_b8U3=vc8o;CxZ$t#NOq^AEJo)OKE>NI}vO-n8zDDoC|v z2fty}C!aGE=5w@&(OK3r#$yIj` z-Nr|oB(BE2(W~6RlF9=GerDeqnYnv|+<#fz{Ib7HGh&xEasp!CZc&DxAz~uFovz9I zy8cU%ulLmIHK|xL{ZlWjvZn?R%oQ63d=obsEWT`Dy??Qo7D(4-X{=rSqgt`2&s4zG zOT9{d4v=aogj=ZSQs*A=3**&_ukubnrniJ0@OVkLDb3Db)31G`JcO`1_P>xdnOjWr zl~Li0@f5|9Sy&5~*En`X|B4Lu+ow9?M^{SDtMvBTo=X?h?mgfP2k@=ktkgRHO9*$9 zaqlGo`M32}B5&GE+kCF{oKJqGZ<2FJ1-@@Td7_BSxU`%Zp1nNZkuA^dJn;Azysj)m zm3TAnxW^+S*f3$$6FnKXpvD;jC>T{@HwGPs4aCSMw=uQ%)k~>Su`u59k5AXnpF6j( z&(L_3v912u%7{<$e=pSjp9I{0pa1`Py|^(95Lj|Nl+b|jv=9u;5Ne`cn*E@!6`p>q z0BKCjoC?c4sz*;)OnU%Is4Qlxv8$np=TNwG4?LywT(;xY->?svvphf3Xj2o52ay!r z;3ZD(bsdiP0-uT=XZkrhn^4yuK8=BB@Z|@kNLCRrTk}MV?kusg>Kr(P$X}X2dwR&# zX?<7EI>c1kfsN~pu}Q&WWQQch>jaeRf8n5o=kccqzbwL$!g}`?ChQ!lO0SvXYq`yxYs480R%8-rYD@B|W6ASKj?HmbIRfo{ zsaGXyqONsK+%DFAjc6J=j5%wBfC16|e-dL4=E)aix-eu1Xk`@w+<+Pw)02LN4PwxC zdvch{V9+X%5M<*ey?X>-jvv6m_WRstTYHAb76dR3~Xt zc%Rd5&iBmk0Bd*jv=*I&{J)YT|H+!o5CfQ9KL{&w>+uL?uS|{_O>I(hLnC?t|Ew66 zxx3}o(0T&;qRC~B>gY%JBu~}SZp$qCQWKr*Y3W_i=DCXmd}e~)UZ+P6S+QXoUA~WQ zf;<=`UmOozgwU^N(~%4HyHeNvN^3shcw-9_TD43IZTnA$vwSPQYN>fIp)$3lHF>0% z0)(Bg_Q2dZZ|B9rXvy?jvrPin2x0)Uq><m6?W?fEgf{0Lc6iMF)K~}Ng|%HDo)q(xY{E~ zAdeceM?Dw5$j&W2Ib!|4GZ;`7WSczl&)PJt)gHhXwg*rOZ!+!X-)_wQ1faN#O#TP0 z?FNy6L?SJfZ2J%SlnIbeRuenRh*Pwmklklc77Vb50B2IHL#5=p#n}JdJidzT3nBv~ zm77KZ@XyxvdwkGAG#;=j=^dOsH36GROEE?kUo4IqKF3D7^pZ&eT zk>qfUC?Hd8b_D1gg!$ho@yeLE<*tzEE5()?X)kAIWOrOvsMTZ8-S~r|M@>e;2AoNb zME522yiHf0u^M*sn~oX{6{}B%(puk~Hs)m0(rQnq>JjYmRDyE%IM=Uity*Bd@R_as zui4|KeOu=2z^Q8ZslVp;Jouj~k!A|g8LO3)9O0eM!%@!fwAsTjI52BvjAMtLo z@YSo;2`-L^RFZhee*T=GCC;c<)Q2r7>$tK9O0ZN8&1M)as54LxcdfU*psUCs(~xQn ziMVuHU4~j{wF6CuR0rUdixB{y#XT6KREn%r3%c0SSFqlAAb5Yqp)xzlSVqAlH|bjV zZP^*2t$D%?MZ1-LQpRt^^Qt02gPb$@z4`b<_sH}Zk|gK^R2A$6Stx062687m0Y+V4 zxGwCHeqB}|kQ*i;s@DO`VG0nw2PMUUXq@+qH+yW24qwzV?vYaJuOyE7`9-|p^MJ*GRQ;=NLdbIST2;5Y#NXiil4-4KJ3Fj7yPR9MjwRMm z)gBb-;SE>Wh9RXYi;AkJ*y;Qzo6LcJv7b7EtxFSgExCYn2O&dgaZ2bDPzV>2XiMbW zLLHkx5kE0}_@-NYl^eoFoyPsPqf7UMgI=CnW?s;#C{cR7PYQ7yQh7gBorYdN>G?4gS zSC`VDVE#06aG@SOryT1_S4qw!taiF`VYI8q)egTo84Fzm?p2`LEJoL%R}Xr!8OIHT z$^G_#%Bm>b?=Vs(j9uXweY*A|sD$m3KGV5_TnWh|x!e{3YBFXaH~TD6Gwj768~o;Y z9$_c0YRzu)aYHy4>}zgv-?{Vk?e{NvwQHMN;)FD^qhXh{ z)Snv?FQnjt0_ukMofVztGdPOyHS#ESEq`OAF1SJ_9_nKSiR6Y<{f14#mC^@wV^OGe29!4S21e7m%u!VN zO7wN$sZOuI!L^I-1mjDB`xniZLRzQKa{dNT48ejdque#mK><^9jdtSH1z#k}+l_dP zBvSj&L@|1uPiIRAw7nqKm<;;wIupf{bAk?tm z1f(yA>bx;Y0bUmNlpHtz53kr0VYl4rx54Ey8SN7~H~WLLE8Tvh9Rn*l{5j(90&Q)P zt@{1s56W!fMSNG5jGVP|Pz*{^&V=n-GZTIQ(fv;y1Hp1I3d~1Q0dNMhQgb00+@;ce z2A@=_Ra>h()O5$-Y|#eqn~ogOhp8^t6ppen0sve8#o&DH1O}$~nl*qM`N&~vvbTRU zFviqmam8(e2@m}Y6~ioio@Z&{AwSx1;q25wCQ?j^wUbq|{0n!l4-N@=+|0cwBlD^A z1p`K;=@w2AiW7*h7K7c%xMkuzt~7@WU@b`zaY1OO{B%L_KCX&@WJ|*B1e6zvaHI7=cVD2`AY0nLz(?DfJaApzQHP&^ zj<3)X?Zt*mLtQ&mt5*N_1{Rap^%yVKlXgCX*bjOWwSf zy{7y43SDO$ov07i?C#z@_8S&2GzOm&S1H^wT}MIY%Hb66{7tKe>EU)^=CUelEU)5v zX7Jz}hlWcsTcbqD1<_$-yVv4}MActjY)?11Dh6Tl{-7HXU!_i8s}TVa+tAYx5Mmg~ zj<~R9`FIXY{F3ZXA6uW3ftSb@SG6P0_emk+pb;B?QNS4o>;kCN*@8iG68h|-~!)wyQOo5UQUoEn;wju<)-8x=B zc{VqDTV2Hb>A~%na_Jd153G1Uh9=L82QKwN9#~8o;_O3^p6uW*D3_j6gHmE{oBC{H zO%CkYg@)-0>1p1w4iW6lHwrvcYn?afuzwpxL1l7Nsk^p6VhT7_mTGraZF;)pEwvgULXOAHZ;j%1SOP6>)5a!t2Hw|H z{auPi^!GkQW*gfIUU%ygyQGb4ZjZAcUvwiLEF^Dn5$D?>LKM2P4ceLG3+V;qaEs=~ zI@-i{q@3WkTYz_owp*n2(^E2{bkOfMw%*3wigzp;Do_C_&v^_lbjwXUoPBBnuv@&E zPjB=@BF4bwgAvHb?B`{bp~tLUFJmhPp*0b@5q$z`u3`k!{Kd z%|OIa;NAyznJ)ffa#E0(v6eadf!(ur26-|Yu)Y?3vL;TTl`}T0Hllg}=Ewlt*%=VE zZ6&r`4{3bQ@${;g-*C9>AK@bpl0OiDzib$sA~Z)w(ax`F8eFI?PrMiIG`ez{(E0g{ zqZQ53;l+Ht8R#KT>WeW&=HcyUP&OcHWe**=NAI|{6*f#_9e z4ytCN1Ii6|rG9{0Ekc>S=CRoQKN;R<3Q?lE?Jh==lwH-Y?Iq%->zl3sf}^jaeymoG zZs8t7NCrmrZB;9Cb%?dRXUpSOjFI>m@sj)dwNo^~-+Pab8*(kIN|Spb0HygI+5=^v z_>ht4O#_Bw@sxs1l4flt7)w%KHWX{utr`1R-d>~yN}IIbT;{d*S-Q~%O$G~M?pY*@ z%aQAs5@F^9Wo*@e`Q4VLYSgi7n_ln3x&UMBXq1pO2NS(V3iSJ)<)_e+Z24m$iVl&p z-FK>_t%a9p8%=uDTv$4R^`;*lSl(&OGCEv(bSK?kk7vBOI8K&L{u4Qr0LXMeQE-#w zSF&4|@DrVy_^&3*gT9w2hO(k1vTbaafN}&EKHgJ@&O|hg8G@rST4w)U%trg-yrnDp zzHFqHR_`HVL_>K|J3L??-H8D#W(!8dTu;fX19Tu+q1z)*@a(-5Hs?_B{o@`Z=w+F= zlyd-td@!G6a4uD?n(U6g{_q@U?G;5v+#@;0C8#9@Smm(Wo0-_R!qHu~9?jnzJzMfg z#OT97{f9BBOc6=&wy(@bzD;Q1Z>ygjZ~F;@Q7_O8frt*np{;Wxd+|&etT5e&*pzc? zAX>ATRQ6*$KE0*DL%(2#YX&=GJba7(hme%9p!>bRbAb3iUYPqi?=O_}2KY?7ITx5_ z!%n+=|Mkibs$jMa)we2|+71`A&sYdLGW9^T7dX?@eJ4>%+3}j0euTlhDGiTC)a#+Y zH10ziU)cUtePsbSm}m&$HYSm#KXxu^6Hw&{aqB-PGc6}%OfyvG53alyJi70*e3~1x?yiu7#kKRIf-qOuf=~?jrc=uvuUEr2GmR zI}O}L)`Qo6)R51k91ZvN3DfeAS(*bbLFZj#n$Z`8_xD)sq6$3oFB6r4Z2vZpWoNVe z{t~9ljBGdYL_IscUZ3RoN4&S|Avlg@We++Tzx1W~>6>Ya`uP1v_Zrc*iZ&kgUXEAz zj?0bg|JkS`Y6fKCol2nc-3p?8mvf`OD`~_iYocRZs_$``Hv7{p#`obA7L7k_m8Xpm zVb;Uev)zFcc*kSS_4%sR_I0@W^OtG^)>yw+Umojf#>jxm1pP1m=rUy-+O@G?=1hXz zvq(ZPwqy$s^v7#`MeybW9M>C@?o*d-4eo(=&Z8bvJ94wqu8a--;v`>CZpFlaSz9iW zEAJ2kBK)BolQW+4kD|PdXFA0#3^cHp`xbb}_FsX(X9n@WfGNSlaAwAkJurUiMSpxx zBeceO`Ve-$^DOP?I-|76m)G`FzpVyJ+p!Lmd0_7mwBC7s1QX>Ys?$}SP)Jfr!s>T@ zt)~rFp;Rk7ZC`fDYf3nObW5r}x@yGxp-z!A0Vvc!lVx1viKBPwh#uiec(~${>||eH zCd>ST--5|4$5&N)Z>w%_y!w$EVBeZ8M-4;h2HxHdbSJQH7xH>X){PXztxJLDEEAl; zwv1Se-`bb_p>F^q>_K8D<8dFp-j80~r-qrfIR)P~Ewxse{Sd^^N}@lagTAKq0X8NE zUMMSt;pW9$u;je1nzD*1=V^Hnd1l7*SL^5$LiQejTt7c#06!i!OuK&%J%FD6OELsH z{?JSF6e$EN@Ds-qsp;O{BotoW6cQMDpfu%fwn(dapF7huLk8a$ToeN4tZo>0_c-cy~Q#^-5hv~(+wQms8vq--%^&BPZM)#DxdJf$932fdU$lb2%pQ2%mxc<37= z_?;ySvJ^w2Kj0@&o#wL|)2KafsD=3#67`QSm=*@xyB6nFB@cej4<(qCJ~HzQAnJ58 zoq(D-l6JwpKQX^rBFK^eN|_)#5;Co;$M&!KFMWDE&zAg6j@5JqDLnnP4YHHjV>PJ0 z|B3hTog-5*-xWI0Q&7P_Jx>2-i2r8D|JuO6Ht??v{A&aM+Q7dy@c*L?yh_GP5W9Ow z0c4XB@;GVevBl%z4p`ygoK-`X3CmXzMp6C;PXq6Cz4nJo9zU7^Cj(NGa=UM+UH(8m zc82{q)OPu$_ap55?ETYbVaU}*uhP!Je55-D%iTkIN4E0D9Xp>HQHuOM9?z9{j)U%vFEn2tqltGk74>9&;Csc79? zS48z6aOLg!sY=ouIhhce{)D2AtEORxBtQy}Th(&4Ccbl34WEFfE8@n1+biZN;Vb#cH#6RQ;C(`U}l6k`MC=)5}^MC6qA*d=g%g2-vw~^3wD{dnsxsr48MzdM&^pqN{sEx=oCxBV1sG8 zZJqS)RhFv?x~N;j(9?mV?U3rhHb|6CPqGZTpfE5O=3?MnYHye|CbCt2=mGy;Z*(SC z2+p4OXKiWOdyp0WnutH3@Oa!ICqrUZ(z=JGmerrLId{(*{s1e@ew67y@ce%F7!gOI zkniNv#(>I#%=Tu=y8H3E++w9`x?uoGELX7d-3LNDHUt%*vDNl1)XIS>XQyz9j~%qDcr)~P}pb^ znxIsmnAv#@Wm|LdKc4O@Gk4>eo4x5~eCeXCpy}_DhflOKOO{w=B52yQ(Qzby_59Rw z^?;-;v3N$(5VzU*Leiq@Y^>9jT>T0Lou>7d9xqy*4eVVQOnM()M0u0bn)81vtXj%r)w z&8qw^nF$c3J@br#AC~x=3GMBqS9;J~Cu#+0s`Qha=?Tcc_f29xjb?CaJ6L`gwwtzy zZpXyGPR0)q1v*}Pbor0M13dCyHAKf@DkYIM9kl3Uj1&QbP%@$XJwR7L9xIDbo>Y!C z$u9UtIEe!F4h}5-oWge<4{NfXZBK`%KeT>Xsp9@b>2#3-llPgy{LK}}^b#qC2n9-T z20M;+B8);?TE@nIK=Dj$ear9M5up3wZ$&4fC=ZB?c%ftdX>w4H(@tk2G8Q4!@SA(k zW~A)N_}Oni2CF%kEp0^^t?P83<%`-)Q23&)q8+H&6lUa;0Owg)xrK=M#(3H#Dm(Mz z3xiF+w=IK<0L}>*NcEK%5N{yuK;b4cpPvn!TA{O_80I%stFqSo;-DIa*&XiHMc~3# zS;uH2V6keTU0!CvH>#>@>;iGMv-vS}3uwb2TiyIiaR1mPXjN^VTg+|e-*OG0sw*m=%=G%TXo#!&>)r(Hws>(7hzkQ;w%1LRx(ajQLj3OUSmXO)f;9MNC_euMk|H zc&0mABju~Hx_XpgKKHcw@%K(0&Dl5IT0I<7>wuKb3-P+BhMb%`z>TNNO}jwXR4nd? zi1anpv5LaNKfYT=m>e_2pV~XaNB9G&2Ff^3(>f4fa_Ex&6>?z@P3~Pyni$11CAYsm z$Ac^KCya%e^V!Im-d{%Y&`3y)^lE5Nl1bOQbHtl9Cm?SqlX`-IgS93Tv+Q!LO80Et zpvdtk;9T3|4&4?|cxNPWlw?EfiKFBXQT!I0HIC%h@Iw)CE4l%xvMEq4MiBnVVtVws zhugF^FgN8E5k`73s%M0owYvp#%sASRX-wx5EH;Z2G@=W|-)MWjRxJMq8HN$k^T7E| zH{#|){q>(YW0=>D{IWW3dFCC7v2U^ne zJh8v~HA<26FcK60tEIR(4b%4(3p}HcIpJja1(M0W7`fR1x7Z)vA(Nf4T1$**bL>@Bweqsc&iXEdAcBK z2LI-?ft^fZMCQHv{bfFaNB7S3b9-`W0Y!y?Yz5+he2=)A%Iw|V9O+;sl{z(UcSqZB zg~(r8rtxkZUx1_Jy%PuMm>3TfD@CN7P#EW&hqx=0~-8t?7O|^xg@mPnuHRJ;K1^?eEWx)7`u7@p#hJ%?+c<gquD|$6 zhnVAi4ab+XYW1}39jB6Hy5+Uii_PCVRm9f|DG!Nnfj;YCi^b{9)Y|a#L*wgeC^`Kw zXl3_tt@rG~yX@xmNu^+Kz;BRIxWS$ikSGERJ=?-Z(IvWn`S7L9r$Pan{>|DXe>w&~ zwUYct`eS3nsqhm}sUDlpUCuZ#KgM%s5{+Yw#;XHS&IxWe0=MAnbP8@B`=0DSH2E1` zEXLAQel{nrqFhwm<{yLrOn_PKhOpDdAxsFd8H!aix!Jww?mA3tJa2K@nJI(mffAh@ zV&_R{0NWo~tYDOk(9tOjOhinEWKcmKE1HtX@>bGDR^~k8cOFN|{IGs@?S18-)J2(( z)&Mx*h$9QM(zvOm2AX6JaO@knO$8zSSJA1KVajFpR3>2tk=&UZZ*sa>w*PVnnRBHw zIs(I{hhZbqe_U z0j)2o#lRj!>i9Hsc1}aitfer2u5LLNR-Z$kzj2uUqwq%@(tkIF_KgxNYCDEIFhlGz&OTz>pvxN221B4a@I-Sit-fiEHsGMDuIIH2Fkuw@z?* z@SRTNRP4FmJU_#icaxd>40{fOH@6_zG(hzb`9efRQBDz%hG~HKpXh-hHjfp4^0-$p z^Xiq{k8h{>AJ}}ecM{#bu4o3VlL^}Fh(FlMq0F?;ImtDvig zPdgarnly0}2@p@^$+*AmG-V>BGY}yY2(iLAE1Fx>RXR9|z3sKWoKSQz)%#xS>83KR zvTz#9C)K-T!$rMe4e}o%$Nv2p!8V47YM$5N0DBbRTGkiAQwQxeE$4}!{*atp1~wdw zq?;Rmbw4r_WiMu?dtxzI{rU{T2av*Sngo_gz#N6K>YSpiC!kYvu<oy1AmC*@bWdCVK=5`%Z5Xd;^i(nEXB$vjY}^}!&I{OO10fo+-!u#npp zVy6s3vgKtKOgh;EaGC7`0-bZxgo25%{SU)3pYmLN{+^$fJYOSb8{%)dpc)>veaRxp zd3~OT#zN~m0iCT*=7L{0kek5onfdO;leZ*8CgrBxE!ocgx%A8Q+h7EyDmqpTN|u=c z^HYo@$$6bMZ@HHrBh#4DrLX({DA{H)rDw30Ogasmmm6`EU9y?mu?6inm=lV7nMO>z zO&FOogOGeey*zWz4mX-C_wAw-xC=#^I>MMYUHb^oC66v;Uc^u2*?r|01F_$FGD{eC zuY-2^%~I`ByRCxCrU0g-95Xg1-DicKdJL@!0tQ97E&kLn18MRH+{D)Um%#Y0hHqKp zm5TenEdu1utJtKmT#93)!`6fUA44f%oSSj-i@sbyPiFJ6EhUf$4Kd&(C(XBJvl9}c z=52^V5$0-t86LL(;R#zmcctK2c_sfJMOU&1F&sD13JmBnBpVR}I{9fD!*DAOyg;Yb z^f&8#)FoT*&mIZ|j?R8(-bA&jZ3!4m=f;r%NZ8F8j}(T$*xeQ~JD|K%6us|5PckXxcb?~rJm`hv*0O36eR1Tv6#XouUy`eOEZm<@6VF3Dz(EoXAdVD9^5s{s+)cmf(z$w^e9X8- zxv`DG*ck^9SDMV3c++Byg;WQ7gWlX0I-+K$ZxXm1lH3ILBZ~B#h2J21p=aYo8vDHI z?@ZR8t7K!JV$Gm?E>G_lsinSl0;-Y0i!CA9C|3x`w)u!YpB4!5S}e-4&d9$!q*CrX z8_Vj!v&zeK)snr|4rhVT3UfsQqH19T(qoiy03SN|(oZ&5Jt-tZ+Cq|NO zf)gmJI#)qN#u*5#fw=|~vB!((n0b2h6+Shm&t`O4CMT}~y- zjumxh82SNxh9-j;g;d!mwnzk8bQow=55Mr1u}i~?pT|@rE?33>Op&aKpzq*kasFbG zc`%^`xXcA)7cw5h2&nr(zF|;axRpTS9@VF9dvCz9v*k}@vuU572HdC!% zt3Lz`)^c0Uk(YteH=sQkTY(IPvQf-D7MQB~r5antl^$^F_g%{WDfuHUq~bG6om5Hc zq^L7Ny!_Z0&Okm~oM$Be*ge2ags9`nk?mK#3bb{ebKAqqV&F|0BkjiS7oRbmTLjFk z$cS%u6)%C?Nj8uq7vur+Y|RQVQ7_&v3J51B?R=w52mTs&#s^qsNRhZ*vbI#oI5$O@epJF`rGw30U16`}`Rf)b$JWY@KJ&zEu z^*oPq@0gzb+a|vqaccdiL%VN2y=p4QO9?aQuTmFOng5BgSwM^x_)m;A4D{%>r^)l5 z50 zn)xcnDGNVwV){%ZlZOkH?~vC*(|UkA*mpWfv89;1ppUql2EN5&m}?kp<| zHvb4QOrFbTWUFclCW??ksWBATVj`?(PCXt6?fCRy%W1CBsaTH#@rZRd%7jVm4Z}aR zlUjLil@QUxP-(;rxGFlnMWm0g**4Fy{iJF(pvNBR5%1b!dA};5$*Rbu^{aHDwL^Hd z4KaiM)oNlD65B)a5>}2Yg}Z5XC+e6N#M=E@Fa0c^2UxJ3 zIJqxr2!9v3AA4=;MfH&vc9qWNr)*oktjIQGTL>SDBl=hg?=h7A`g!?;J^52{3Q9XbI$hEDY?Qs#Mf3@%NPzpqzZKPrnldd+%Yq@iaQ z9{z0G|JSe(D3z0M4Ouv{Du9}1D{_e zfTjR+xRyR{P@{?cu4ZNODSPoD^=8I19R|;LZ#ZmHwL!#Q#<)X)ZWI?VD5QkO{ArPs zJMfN8n#nl6%0*0~DVA%BuIWYx2h*~dnC^r-QJz%r8^Q8Fcze&Trrs}TIEvDdqVy6F z5T$n%k%&qY5kcuCDotttDFH)*Nbf~JL5TtiD!tc)UR4B?j*tXJdIB1br2OvV{|h{A zt>=|*Tmeq5v#-5pX3sGDnVdi((tXf2Z#S;A=( z;LHpHL=o`@$7%QVVgt~pF}-88ozp*CTrVTlZq=umYCC+FzRzzf=SlM2?m7RReRztI zjy6Od5F@r~DDZ(|c?x%XKE7-OLltjM(9tC*+uVUD##|1uk_JDU`bY3@AML^>rb%tv zkxW1YpylR)tC#DGoiW?*l(TEX&NZ~ADbnAG$b`Jn$Ks5JD$xTl37o7i_7qbFB?Y{x z=&44g_L9b1zMZzU%a@ThJ@&r(kD6454U{xYk29=Ci@43Z0GSLRSQW-*WK+rYLhr4()SHh=*-)9A^)eAhHCRW=(g&b41vg8T4oEt;z-8AFXGAEaw5 zox;t~oq1ZnY`qv=Z1xtN#@PrG4xQ?;v6xM*T>hooa*$t`{F|Ak(ib+f%f|&&hu- z5BiaEJTq{1_%fIOtmeas*o<9j0MJK)cf*>bs>oWz<}S9>&apFHlYipVZ9nswwaVPd z^H|R6&ht1g7h-XIyv6Tx6Cx9LVgjxG05nEWt?{-J*_eL2H~lT(#o$C--iW6AgYyYD zIkqnO;X5-NE7vkOP|3x*cM3#j`-5h8pTP6nv;ccb;5g_+4@*Fxm8y0#s~Z#Z#|E%- z*%eK3SHo|ht(N@XU)TB%VtJ|J`pWpXcBR$K`CJfME&!qBWe`t_ZFGJHVwn;BsX{ML zyq0f|j}-Pm1pn|3Jjnif8e1TrJnUK?Ln(NS@k7KiSzCcPLuE$*w{MxaeOQxFR%enp zV%=_=wj~~$wkn;rB3XX^RHd*XwX#MCS=iTOC^(I}`hNJ!dX(kUnS+qi!k!6onin`P z$SD@HIe|ai8=Bq>Z&c`&cpiq7zBd{CpjXEnETYdibMPTQ)~MqgLt+V-avyd)C4 z!tAO*-X3Dc(2|OB==s?40n|xf5P(Q!8c&N_-k0L6rPMF4ke;>fHUI* z#e!}5yT96No zsG-9ub32mM73obsDc&PxkV&XcB>JF2<;mRGzyvi8MzT=`;(VswXWBASV~A!;gw+?P zQ%VQn{Dx{k1R=2N-pZ1qYjAZ~Ccmq5@|#S7&viX~GLOBuw}Os{8y>E*eh5^;erU7@ z^}{SoB~Um9qd7021b|XvQYWH(Gn_Z#t#5+7IbYIhHawi=Zj$Gf^p2mLMuQQd&_=7F z8S+s+M&$91y)lyCZlPVshh!kjm+bh1l!0JJH$3C^jM@ zX;}hx9|J`il8Aa4(m)=03f>{47m+j1US1bs2VmrU5re-_=T+zQ)m-Vu)A<8F_1hS*+|pI`VKUIW#W`arX$yTD_iN9eA^ z{%m)AOQX8a-!;7utg6&S!ZQu26uGkr%+|}qKI|A3Zj~s~hNG9n}3g`kYOk+IwIaH1RAX^Cq zmoMp2Ss5iLM=&))mvW+wNVuz38TQaqn2KUOwMT!poaM0kV_fI=Hi`penkr_LJGE%~ z^efXk=kgbBPW^daz2g;_Js|nw<`z1Iqk<_3lv5KJ&8j+B5#aWa21RtiDi}X!`(xrRqWhJY7B+?hGH>@J&snf@QVfq(m~Z%->PKU zTblpg$e(|Y4}aijW-ITqBWhz6haSi9gGlxAyf0~>P$-_X;L2t)`R5GHJ{jR(@+gi? zF~9cxTV6=p`D4NRX)zWj*4Dw{>tJh_@{l;*2cNIsUqKAO`1?p_5z1ow7T-FX91R`l z-=yQY@045@b(Yf%3Lc>)xP$=mnS-CuaK*4T-u05Xcz^gqFuuH9G0= z{s^Jz&4_o`^23`uywm%%M*Fz0$8hvkTL_8te28RcoFMNeHSP-i5({rBa~;CG@fBJR z^9$o29TTtcy!YprT{bY(U&p68_6;0EI!!5_Kok4u} zuFXam&XnM!rUL#oZ1e8@g+EKBI$+%xcBk>xS)T$YFN8P5<6_{gPlI}rgooX?WBm|R zb6}lv8k)h>1H>uzx0)%e9j}}i?NiRNI_YmRH6*K=?&z)->)BkE<>oNBTkAr#;sA}X z!n;84=kjjh|lFA-&arNw?2-#{Zwg;qQQmo-eL33i$LHt|+wTx^U z1J0`RAOv=blB+CqkaM}NGvuPk*BbHc{4390>hprrpdAO_lpyw_{|0VEz)9lFwtN*z z`H8W!l5<2y;*DwM(of6-bC!@}&a7XC>sv2ovY%heyvC?us)26O*&t8pOg!(k7iQl= zV=Xl5i++#D7LA@#QJB<%Ly$!)DhFE&G+jC$FjG4B*G+k{>HHs8cdoj!*!6rffvaB? zOXQ5By#p`2&C>dl-?>YG4UMy*{BRVV@_2-I2ez-}%GfQ(s$%J!oE3-zs!yXucJe)N z$O}4<0mkKSC{4;Ma{SLK$>!JIRnd8Y4+A%#frF%M%8oyGCs1H(~zJObp*|uy1rb1}KqdZ0gC)O~eO6 z8wfslNo~55IlsH*Xg72b7gUxrEX?-q-XcvX1u(snOT{t@=m>(}7z52DHfEO+xF|0s$+Qm;tBKfZB;IudZj_$75vz zN|%x#kFw3YKY!O|bcI^6p}#pr^!(MfE&l9W^oR@37v1uprTuwG@(+KR81G~YgoyI; z(%Qy*dd4K)JKcg2u6%DR}EUiIxxV*&5unJr2bH#(d7 z2`1zYERiqv8mfP)$Df>0HK4{W%BX;`;C4$%z zOFu_iu;exR@~167z?b^@+?l#KD}$hg-q(@e`7_MMchHBwJ@UF4&=MRc=u) zYn&b64ilw&p_|W6BZcgRWp+gBa|{}-v|1ToMr%h4KqTs*1ZOaVlS3IZ!0XH##s?%4 zGgGS2G5|L8WrCPfUX7tRs#;w6c#5* zOO%B2>AimEh`$DJd(M2<&D-ojzs-wX`~KU03=RU50Yxep>VJ@@{ZicdLttw ziwed9DuVa&zYheN{{+P)9*lgmox zhWEZ$d04n>2mwoA#6bG(LF#t};Nd%@01xjiq2`mz1%t0eRk>7GUAEcF@~;-ZtAqqO-$Rr>Sl!cj3!MScrJ(L!_7SDp{gdqWGni({KDNf`myml=H=k zi4Wpra&Om>skNsY{E|rN0e5+VTRl&C+}GJGemcKsI`faIdu%9;iUM&BbE4(LZk%=| z!Mo2@b-S|C?V@cy@kckeUT|ykWaYBD?e|x#t20;0<;3#ADi|>_4dy)#1ybhdj=^PP zp!+B2OLe2jRzc3wpR$K?f)qmobLub(GxdbP3mEzn7WijL%34mraIfr3y zP4BqdIiDYG2x7lmeqTFn;O41{TjndENI)os&IGXU(32o`Q(fRr`eaW$UIPM!#zEPB zVqr_K;$QEx+sf3n-Kpagbx!acElp%?cnF> z$+^X`y1Z{O7qhh%1qXzsf|?FDI-_I-!(xx>YL4VG`0Ki+a* zd=25o#V;P#U8pG!d$-y&vHLT**+N1A9i*5xXEDy#->D<7Fs;k8G zs}_y4u#DP@_dhNt$F3^w*k^cRo(0-eYCbZwcA?p%0J+47!QB)r6#pRI9mGC+z(tE* zG5dt4;9Z6+Hp{o)KNTN(<4JmT_;D8vPgJe-olxGCWf8n5W}d4DeH5r6e!wJ2aZ_Hz zPFYSfKb~%F!G;VT>1IooOH#kz=l6m2m^z4mZonn!C~^d7CMk82?A7+jKRl9sEQslJPBx2Z(#ToD97L6>ZxvuZ5h31r)*4$#?$=gucHa_nLlJN z8f_ZKt}TYz4`ayIR`W{z7*@0t(rv7}uq@wDVW!5-p<3m>;|s?=srBm#b`k}tFG81` z^$)f$T|{@+qZ}K%_%^2=aB(i0yuT5ZtKQ^gE1j7i;(W}VYj^+@4}chTs*c)x;s6E$ zyNBmMt_`%{$xl&NDRTEJ4Hr|AoI>{cKi9?om5n(keK)^*cqu#H4_sdB?qj*PJC zN? z2@~cPjoAb3z>cYgq%Lq@rHdsbt+jQ$Ah;WOmoq(HK-lE6 zAaXPIWDDZZK+QajBtM?gC~0@l4L=s@Lx1+#0+~KoJ^Zk-q4aKx_~?t%1QUn+*RKrc z!CVUHO2nX=m?IdaB8WQ$jJXuqPT4`XEsq4sq#skyHy4sqeATkE0~r}Ve6p;a@Gm7P z8YrcHrRWyX(9VF9r0r0jxTOu0XKB9j>^(gjlUp4lEg|)vhtg*kI1Xwo86VK<$mtkMJg?=ND67Mz}7W&9d=^MB@ZR4n>1tNV|eG07`$Qhe?pC?Qe7X?Che{dZwjQG^L<8DZ;9 z(W)CP?*O0b)9D7S4L_5zN@ADWvmYxMEMTJy)ll~-ElK!*-Na=M`pFv0vR_o)v3Eeh z7R7|=5vlp?MSaez!R!iIiA7G35OcGJ%g`OB@ejsRvEof?$51cRaQFO`x<+~Sct3mB}I>#O!1Dx2P`K-IV+75>8IzZIcf-lSuU5z=bccHI)nbA zP%`08hvA@s&ia3lb2t8_JKhIr*Dpy~QVVw?U7rpl0QplNOzfC^X_=kc*kBcYPl*W5BD{gUpdk6jB`yWbjiFMYV2 zTuq{u19=n}SZyb&(1J*t&3?4v^bZ;+o@~okUnCG+v)_==iL zj2Ap(SwI__=_U;bQevqKE;HLI>CD`kg)4Q8YH5~$fY(OH#e*&y9hcBh5d4Fy^3i?$ z#%+GVb>v>KwwgqQHN;Iw@p2HD%61df?Oj!wfJ>vhF_N9$q)mJh^B9o#9`}v}AA7c^*`NF|!L$wtAd$58}#!A5gVZz8F8z7np;Dk|H6FccI-%L6stE#?$nC$2Y zgMTHf?X3;SP^OFq;g_$Fh2M{-eac!8YpKCLdjLuqJ;Ok1UStL*IaYn0$=xy`w4tIfnt6XTfbhR#`gy1($_hA( zAG8vsi<0$XYdS@%End6A{V-l_IU=PG<Q9obISVxly)39o*OZ zaSM)fnM-r+1!`%=VtbsKPu+jeA2b)REdIH4MN-zX1J`!HnObMCS1T%GYjHAz&PhV^ zp!~=+LpAL9WE3<)XD6q?%4^apklgYtrLxZt5}fGfmkX-&PLlAV^h-~X&>@x{OK+Z! z^N)2cf~m8pQd&*X&cSNb%qWa(fnfotYrWyPGmVrlO=KQiRV2@H9In4I&`Wpt7%up4 z0XLK2Unf8KL%B zx8ZJ3WX-*r9E=wx4Ga$(+V-T3^%nkYQ+-Wf93|x5s6&?8Hd|j*Jz~p^zQratQ#4P% z4$RS9QAi+}fH?|)mfDH&oubHTV}V8U$lzp;Br_xNXZi8T;(50;(@u_n{QvMVV8p`kpjp^fb*F7fU*L=wB7OV!TE^TkXRq#a_d6H!GI{ouUc1yv&m0Fws%24_ z4}AXNAch;+ z`Y~!Ol$$AEwbswezPw;Sb<=K|lDyY^Ph3CQ>kg;ZkNQ&~4q7tYMxqU53~0PfH>X9@ z?Z`rJsx86@lCoxcLi*0eB4%<+9(t^tBA~|be^?FJp3R)HAN~*0qA&;-r7KYmx@o+e zn>oLzh13@L<~OH;O^81=R7&FIzh?JmPC=s@@%}aQRs*mTVKwY@Ex;SWGt{3cJS;RH z`OVe;o?5MWQ$2?lPi%Juf1C6QsJ#Dwp@xNqBB2A*hA?tqJTXAIZmKC&1hGx;N!a^w zc|#=pe4uHS5KCYR8UO!)FNGE{)gFM%+!l$wCB?XN~(I$oQ;7*Y< z|1?{)5}XYq9q+rjn~ZNjBz3xz*6nGgJ-b1LZ&o#qgLlzmul*aokP~<6^KKnE*Dcz; z#~ar^zI}mq-+2SerwvQe#d6aXTSCBHin{sAcV|Ac!(>!nkzGf|0()cBC1clG00oeU z@xs%>kZS~$FSVd8ftAUm0CmRWm`h}WlIcZkIQz%l!AqBv*5~PqjBMw@H74gd(khTn zy-GTdG9bgp?n4ryV@G74UtZymby$7{8o-62e=%fV$8svIET2Nzfo=`gnN!7DfIInM zFdWbQ8_K?$K_tB5jR?1%*3CMq2YvS9xZ>*|bGei)^l_k^1WG*A=GjqNKz<9B&p;OA zzdwhZoVgK}Fc;^)A^-f=+41~g>yf)3<1~(WfCD4zzpnH@2zV@kTq+HyT2ZlZ$=~eN zH^~ZA4sA|R&oXZx4g~ez|3RD;Y|sajnG3n#v1bYbw3X<@_^^@CN0yJAa~5n;&X)#1 z6v>~slCxn(G+oc^0^ci8;I=xx;784&WcDpZ^x(PC!e!n>-qfq8zD51-O{-}Fz|5`|uiaVCSEZ5F>uMq$I$X${6 z-+%vue9O`VIlkYzDS!13sO4Xog3MmD2=KCMxP3QOhsW@{5~k^_ZClsVX0EuQQ9;*X zk>M+>95oloYLD^$PyyuWG2#`}tvX95>XME)f^FH+Dn_{N4>T7WU3I`N2@56OCjLt-oCAA6all?|Dcgg;rk^{p zPQSTAk=sOb_^0eUtSI;3AqBy|pjziRADOM+RgI_+i)cb5$=XfoWb)t8=7DXUgHm63YSZ(4H3pS?S`EXa?>Xc%FRMc&-{;n5eum9I=?3Z8-mZr|ps1WF6S>R;9{v8~;=sgfS zNCgEUrtK_<+x@lT(I#G!?{l%S1Op5Yt^DkwaMytNfepA#cJSLlqLB1bm5~T9W+~HhcQS( zd1901pB`3~_#7rC?5b?-bpFs-G{4kQrX+qsq(lF4M%(Y2?0;FGXA`C|n=i+iFO@#x z)KDsn0<;9`+_yijpuboZh08H#(iy}1OXb~=;)0c8o})*`*)Qe!H~)jYsJM7pu|Ecl zXB1()gNdLWq7i@~>3r4Bo8Fdd>#(qM*tusOSV&aY`*1t}=XUj+tQ_bIExq`gclHC* z@;2ytA1e!vv4yxmMhs>(jPVY9i0ZK4Ua#T4D3J7jOFsi(UL#>P<+p^Rx8*~mu5UesgUjOP#DZaOr@(O$pYKt%T-}{veL5MtN)^`O{o_CyUIlL zzTTquV-ReV!>leEn1jHc=QuNaZaN|!_CuKo>Nx7cVGP;Enzwjw_}ok%ra>(hfl?zp zTC({MV%6~#Y7?mw>7HXPJ9Nr}MdE=jQII4$VsL0w&isTHnZi5>up-IX&o>~kx9Wv7 z=M5&rrDM;NM#~HE;iuiIP0Wd@8w2h?mjT5!dNPa~zvT`dD3jJq;OtO*z$)WCn&0=3 z*@7Wta`_6GzcsIR0L>p&3pBNcYbMN24w`ShDx@h(kX0O%j_7EBPyWsYq=$P(J^$R1iqUUQ2 z892Id3H=fyl_>yV`UL!Lz}5Xg)pAd1u2^Z>XVf&+dn*PMqk#D6P4m;)Xh%}Mou-Btw>7`n8m&t)iuc`qIb9$DxypDRcFfccNjD9ZH2Ptluo#0m zsiT(92NlaIJ^zZot*mDlVqZ=VV?04|P^O5dk>A&BXHZ(iGwG+> z+Q00`rfwgxzuypOBGU^gdQ5wDlqYn#k!>q+1v-Dxc(TgCO7ah`^o{ZA+@=_6Omg0I z&^lE~>7DF(&+~HI3%RzTY<=*Sp{B13r%+z_^?y6%;fKQ*cNdeb;C1N|%+8)IPfVRPgS5;3ehlV8ABwK#Z| zThY@i{%KBGZj(LMXh3+j2r7bv_o2aB5$i$snb5IB?=l78iEbLrDdTqEUNy^9?XZ39 z5A!b-3WEJ8^K4zjtAVjw$1Q4Gro8}J;#7r;THNtfii_|3z3=zT(;JhOZ)kFfkg^MA z#za0vcTwC4rinNmB+DH#CVAUw%^aWU^I+KVZt$puIA3^su@NYGkkYUcMQ(y(-`wQ7fN&dBM(IDO)q(^Lsc7h|&z1Lt^2nHNG<#K0`sjmP~}; zmNnNCxtxM$52cpkozC9FG$~N`$ zpr#CA$O;J12o3;3FQKxi$1hMN_xgPJ=_gsEbBoZ3Pd~lGcZ)9kOnppgNx^$W+pl2y z0xZBrX*|9Cd+KXPpFO`|pNIo4o%D|~+@0$E-bx1%gL85o2Q_bD?ltM{Jm5>2&B)2T{Zl6gf6SZx5)YEF&jPFLu|~j0F54L@gq#J?7f?SY#BGum z5P1O4UnDQ((DSMzq1;E79Lv-%b}>9L@E1!X}I?m=@f@&et9 zmu>1PpZe|VO^~rm&fNHI|Lk2k1NT)oB`V7hjIUFRJbqPwJmt>ic*W`7b${LyhYOwveX(;f_?VF(X>7yW8*iKwE>12_IE zyI1YMV}I`SD*tck7$b?;BggpRXFh?Cxe4$%I3q&0CYhlOrXsgrtG?lHR(U~s){rrG z0YPoBu<+Fyh20M@qz%AX|EX(E%{yC2Tn$?zZAbTX&E5#sPz8G z(|tXmBmu|azeN!4BVSO$j6!g6SZ%<~fWrDD`h)9tC+5cr>vje_B%3;)*r=uO;F?Z6T9Ptr0}E_-^mXtn@U)aAzaqF z;y`ueIA1eaxPsF{@scq^R|Yh`2Kd| zRF;5J->8)6m!=0dhrcz`&N=$AbSagC_pnl{pF*>y#w&CgCJnCVoSc4xP{By*J}Mgyh_-UCpg? z=HD5YIg_4xq!s!Kwo*~>#iy{PdtvOI9hY-7+VM@^;b|r3eD^Jg&L8N|_#Ef}-RS-J zKDj1EwymYH<)vys;O}X(YL%Br#)771%$+>xcOr(b_$j;eQ?PE`VkpS;Z0)aX7BQ~E zr?&stPq}T{J-hU+|3b?R^V5o+&6HNiP0gE;<&SFTpq{7@;K?fhwgOKzu&jVD=w>rA zFZQWtJF4Eu<`*z|n4l?it97&0el0N`#ZtA1={ehJ87!eEpxnMb?H(s1U*%rR{xXKS z@oY6D`c&cJ6$~Ih-n;P9=A2R@L%J2CYoWfv!a;sv6~1%%9@g&G$6wN}dZ_Rrif zzsjQ2XKx=pN_y4m-)5Ba(F5~rO-@3J#|N3oSpI#)Ykl@8qE4U3kf$@SJMV$qlD*@g<-IESJg#(Svhw;0GQhTJ2X@jn1cTH9* zgESh$-EO)LxDVsObG7HIk6^?jFuyfi{)J?p^PI+Pxxg86DY&-)FZrSoqZlpKv$A`_ zbwjV+Lr-9_vb`*OM8oHVgFsShrd59ZHfRF0%)NmAG6NG8qS+ZLwAKspJn%~0x}qUA zlvV7;n6;)OKO^5nJB$}H!91hU+lD%r*>=ot6a}Lb=Jcs!mmKUu+fX&tP zN$~=IiJ7U*_VbN6ISNm~Y+#jlp{!T(vlH&tB0IHfWeFF1_D183qA_ z&Fx1_4h4d!e`${O+s`d690K`1{x9u3O*U@T*RpN!c!Kz`4q-PQjMxB&;Y2$>!y3Yvg-;cyFYQbuF>mRm=X^>f z@3TJf%LBrql$vhnEXf#XBV&4*XTC7c15_pFB9VOOiz+wRx8B}4Y7t$!v*lkQ72_VO zWPcUpnQ35`+Cwv5L~;?izZ;5Wq%gylL2-uNML9M=$Xel&TxG>MIGwrubwpdQk zJItdO>LsCE2?3gniP0u2e6%8d4b>a!t>&HWd4Jcix=);W^0&MSE~D6h{9=x(&%Y7PT=GlU~-qRoS>s5-;VqG`>#P! zYWZpV*?JE?_BfOG?8jfM>T$VYDK*sNWawaKvJG;>)w^FxWTx8MX3v%L=lM9=Eonrd zuHwRF8>1eU>=(J;&=c4?&|@9u)4FwrVqo8_KM?079u2q1b8qF(?HCIf9bJEs#kuNP zYeLHTW!eh`bEW2Hy215w(3B)PbXOcG>X%aas$;BjkI3T~nB2rShQp}1yOzP8zRo;I zT6^&b{Ie#WpmYIsqhbAzm_vELhEyhpD>=c6chM2k6h$SH>@6Y|(d%8B>v z+rHumCB0Gg-mXLv+tvpHA|1z1MkLa&zTZqn5PW3wr+oC0Zj>`<<%Oi4UaaiGB-7Y10#pUYBa`UwYT0kY(~Hyn2B!z6B;-!xCY~tI$G2 z+@O(u93h1$oanswGjh_W*jpgL`1Zb8aJ&d4LbUu9RN(=>F8V2&E0w4RD!fzO$aXI) zoWNFTVa|0)xDJtP=u%nPag^j28GGf8*@b~{5FywOHIze-pcN^Z1CNX<765d_WK(2- za$GEPX;P-^wTO+`v&36RSG*w-tQ&B$1tP)T#uDL9%oOtx(f0jlsi~S!!h5IF@8Qb%4aXE7a5`w}DMF;*4TjwO-Ujx8IKVSHGD;iE z5A^jp8UK#o360jXPMdFeb=2(HO6cFzAf;c3Cm0sG3|Y7*m5|A{j=euM_PjjDUeog7 zIf$tI!-HhViEao45`29H9EAR_I?EN9Czj6#cNT1-Gw6t~jj6L?l7_CTwi!Q{T1ULmFIbQ*&n)&)3LB2%sLQ(@RsNbj3pU79|pm$~)lmw8`2WpLxlnu3oq zYmmCS(j=M{Jpg83;k_}?4V)4=w6I@TEIwwcxOZp$OmoJii8_zb$fDG19LlSxPcf{J zDAw{`XoK1o!<)iF0u@%rHZgp3%M~?2pTigFJa4nZsCHjV9X(I1LUHzreT?TJnwoyU z9>HeugoDRuJvt2A4;7g3T*@TP zY*~>vNe4+X6sfoE1&N)vMQ(*vu@deUyS_TMucxFW2!YJ<#ISB1NrAC|No24@%(2e9 zC|8L?e5%164h`R8nKsAoM@=S&-@n&$Pyf`GaFe}+;QnhA_&|j9VL`B~X?F<0_bWW= zZ3}@n6)n0XIryghv7dZ*a@@Vzx&14sR?qo`>-1R&Zh8~r^l%JeMq-I>mX|ot2{Tz^Yr5MfHyP+=2tg%;5HGSq=~X3V^d<~ zR4QcrHZScAr&(y}6P|{J+jP_(k%%nMFch3e<}x{9BsdR{I~cVbV}kc@5xe=}jTP0q zBO-;>ETWiGGN-1a|HDkm;lYacmI8Tm1(7klBz11Kd5EiX#&9lmR^Lm2f=%^LBzV_Ja-F@3= zWA~r16ih9=Z;97xk_aSH)&_1ly16L}S#KUbwUj70#;411M6}0%%9e8$=m`!W*DyIf z$u0eE(nZ5xnp941-SV~f_V>|9__@e4l(vgJh~lV^nkh$tQ%GzuU5AWGQ>L3&ZlGl- z-~Oa3Ib9`Q>@Q?bdGYRSMF%;!PoOh;o{GqTHGuyc)Jq~btK&&3I@KldY56VryFV7^ zFF=Hn$-!ByM#pcm8g-Wt?qkxiAOs7>%*oTOi3@Ggwfi~W&jx%o*dHDecfVpnWOdl@ zw(|4lcu%N@pmiPoi zQHp#*4fu=7QM#wFx^_~sUFKEySzc*W`n4WC(sS`9t6kSP$-W29gNgzoAFV8(?9-!q z_Q@sdlqUUb$>trA^N3|RVJaO9B8ff^65kClzf741)5L-A4lg}Ytk^yeZ-j`5`^WOW zK_z?_#ZlDg0&F*g_{|OS1*|Y~*4(+LqB@!P3`fh_ezRLf|MSVwArJMz}aFyW+5 zoHr+uVJ(80@2Wd3~jg-zq`pD+(A$p^){j6yWjZCyBM=2Zh z_|Os<0-I`E06bjx*Fk_>NAd7B_*yIwuyf4+AOiXx^2d^Z@_WQvFS4BgX*Lf$p3CPWy z!<2cclN7&h7z^IdDpS8DPU=61BdFHG^YlmfhC`gqH3#ohb9q=ap1*sUr{#4wDPfB4 zO0lQvG0MV`pKJE&L0oT#x()1&x&DL9_}$p!r-SD?%kUpeN`u zo*o4!E#6qJx`5|UD5T==u@~oWbyn;xt`sZn>XTvfT2v(8UU?Or|-mYFz@PA7rO0Z;l{qOuA%#^K+D zwn;6=FF$=>vNaaOvH2uzg|q~=GNsTxXS^3LO{5%DL%!5+cL%Sk8o)>`ap38EK}y*- zo-ggWE@E+TKh!xXxcakR&z7K~dbUrGQ>Zm*@CH}{S`Wx1Fk6T`77hsqJrMzs_o$*J z#>H327xw$EEhGd??c{BIpZ$pP*~LdSQ0K+l`pv;AWRrG)UJs+_2_Gc7*jbzkCr#b@VO$lwu)w8vmPyFx4N_^e9|*k-rzH80Id8fpF2BHJP!F^xacJ=TO0Xq@h;u3OH|4*BqOLF z7VzHqx$<6o!_Ca9_2N_Q-&9p}{Fa+X+h0r!-w$|wMaFE36SAATYm(1%bD5||&s{!+ znN{8V4|1&u1vcjYi&(q|>euQLcEMaxBeJYyUQGsu&CeR;^MFvF!SGCv8ZK`yLy@%_o%Q$8J1!FK;&$ zN>v5l*b?mxa?RuAqbdfG;PR#?*|3Yk)?W;voN{WM5xTW54EGGUsbTQ(;~Z^OcHs2m z5l6{H$jq;sk7+u9JGhq#O+srp!+pnz0U^Tg2P zb1dEJ$Z#qr5Jrv|OeV3lPowS;lboY*uZc=|FBY0LxcOMwUkRu*|iqNg=%#o9|NSWM?N~ZH%=j)C+77IjeS2cU8$W3D0%m@@7BmPKH3)I za`t@Q`*%uQT!_Cqs_u?^rn@s3;J7Q~GeH+7@5WhAuk|}Mw{TON`RP+4qzq$k&I`29 zNtZ16^u_iOf~b?^@u6MdT;c$f3;F(H={-g=B8+=lk5#nlr^Q7`y=;gkiypVg!>KpX zC&?{Ljx{ogfX}QlaDVg;`DC#0TWV##CGleGTE^1XpL(2i)oX48$&i&8cGlve$C)&v zdAc}79@__h0u?s?Ep@u9w#8M+zQtO!`B_DLT~Nq-$5O}#*4s~q*E1!6Z!7R*aKhzH zY+M#a>Jk5du7U<7jqSav%Ov4$g=?d-R|#GX4NWLQG>PAV9b;{DRJ8ef%rr#2S2s_;F{LJT*xqjw)? z4YnT%C_hR>Oc{V!!EkOalM^w$-Wd6&-K3sbYSxDy=qOk!*sxvC_`0QgM0Kdj!DSki z!6jwBN8eX;LqZ|;MRX*%LMTo%0gMe`B(4i(DWcrd1=Aty)d6x~Dn|(WYM9;sdYE44 zG@yXm&d3FEP;V;c-_APde3{TejLa9Ql$~zM%Mt(kG3k2cMa@1hDs4#oVX@L%AgKqx zl5O|w0{HMu3PAKgDQa8W3Xn(iUKF?Z)pY6hfY{cQbCF+Ubxp}_53Rm_A!)r6XuxxA zXQp-$J!&Y}$tWD^Irk?Z9L{yjY+&EzDwX^pRP_#GulcTK{C^Pp0~7sy+hB*k4Wt%& zNkJcs$_B2l{Px!wVa|*3{453Q#2&!^&Urv?dOn~yWyZ)zG3hXHApEy@b9J;!)Xbcr z@;}Czq&7z#TKTihtP@V~->wR9Z*M7-LE0_lWff>V9XYGD7jb^z765|j?9guPoL7Lt zK%vQNBKGL7cFVWv@=0-4!NHvDgtRtsLFahzVwC3AR1Z4mq8u?F0Ul%DWiBFRQGcM! z?Nosk^NaqI;bYc)EegR~_F487(rMn{mLQXZ0@i+WN&~YUBt-)lU7 znq8g9>jZh-5a%JpPt}zmb4Sh`c3Gbuwt{+=H{h9Z17mmp4|VSu)l~a_4TAJ8y%Q7^ zrAk*?L>`(50hC?>0s_)RKoCMAy@QB=q7bDBQl)nSgpP>x-VzW60tsq}B;=Xn|NZdJ zJLR4Et(o~SAI@4X){&5N?sDCG?`!XhA1ER}&>Q}BFc<`sv6Rw%Y|>c_V8m+hsjgCw zj>7pB;f+lC6rqjIkIXoH%`wm_r}$C&@f}BlJo@5`*qNPb6ca$03*#Zfz`V7u@0lwj z2qxp;qv3wRYUVyEuPpuob%;lW&c6e-+@Zlm^-yMtaJD<}@s%)lQz0qSt+R^iNA|dx zH*^cnAYbj)=6-q)Ll-rBk>Yw6Wik%KT*A?M7k#GX-qdhnuJ?T9eub!>QdU1;1kk>jmE3xo z_^DtwK45-*NXR?cX{^#dPWIKf@}J2yFPzhc7?t%qqKOGzwZRyXx^LMyeYlhA{pL=# z)LWrdt<4TCtQ0b@kVy9vAg)*OzZSraTnC+XcTOz77r;h+ltqY(gP-Y-SA>={e8_OJfgNMYy$1blZof^A0u(f`Buc_=LJ8P1$ z2jCYy1E^QK6#PD{{D2$1GtkNIPt9&rNkC_$uH**_dEW2w3nBrlm+G}vC_ib|M*mrRef@H>DmA*tr*Ey!7FB!rqh=uo5vbf|G)xnknBKcOwb0iR2Rvu|_-`ZBU;?9*sS zloHOsjzW~+2PTLtVY<}tSuKgbCYRKCn^L2klXj#`>mdDZ#>XVcF>GU{-R|!j}+~>=p(^EQov;K?zPTuEU}b* zo*Mmj)hsV!BvtJOTA0Q1UD&E@Q4Lv}1Rex2h8`utrCX2#9Sj-Owo}dztphvPL~st2 zIXa$akk2%G#<%qGE?_E42!2TX)+E_@ph$T^P5XwFL{?0Dvy<&U7uMOia_wK5pTnM(+fjmv2Bd{9`1IH`{0oAgU;jZ6>%(_f zgr(0i9S?uG2%yoCx_P-}4(Re9EtWOi&1DVrnL@KP6_o%;#VBhIF>js^UFp_4rSE9y zNZBl6VYD?_y4{fdU0;e&79Gem4oJK2jF#jRjq#Y0Dz)&|u}!gDuun+b_ec5^!>53? zy%N z1&4Z!@Cl%K5_v>{hHtIl9FHNq>uKb^j}v^cH)x+@bhAGQo@6WpZ-!WqlmFCVL6kB( z0LnZ|18Vl0vsEKq!T8#l0VE#SEk#H{14XLylymB2uQnh;TNcr%yV7N;V$g-RJjjh+ zzvS9ww+R{>+6tn>#4!7N7r4ozJZpR zh<11`+|}}BL(Gb3axI^+k)ge`~$&C-jj_D$-Q%YWJ#xnLvN?n&J>OD4$-uL5L!WE}QneMzZ$IX3G&N+h0 z{|DH_X+w?(SP!*XB9hojKm!FM@|hlY9^-87QnO#Zc0+%r)qv5hch7m$3n%HfW--k$ z2Rsw8m(Us$L;+Qiuv@EC@$M!vdy6ma&5OM>SDhs9rL%L7NZL(H06nY}IiTiRJ{jTy zrr}+JYYm-KQ~1w+i1Q==Jk-gx&wUx6E;+6_=Cq)Gz;`I1rvNPY98Z?+avr~>-~ zgBY%JdoNbrgo9Q3q_c8QmQ+4-z4MgF1=Mr&HUH9N2VqcW=?L1th;@ZUOf`)5za&-Hmm(4u(00qs2a#(> zD~Fs_YSw%?LjC?3*SbzdPl`8Tc4S5poIHs9G&$@dddE253Z<3M-DQ>D^g`opj3pN_ zQ;<*_MU*@%_yxp|vaDlfFuUnGnl-))kI{&C-%p< zwR8bpJdR8WfSQY}O`eICFX);wm5fe(br(>WZ82F|giJgwADAS`1fii4q_LAhM;j_? z)8)ahMi%R_EO7Av>L<|Ba1HPyAUCU~0BOL!EfEKDw3WR5fw` z&l49v$I@cI_PaNho>x}3@3NLiv+vRg_5e2lbL_2umx13_70!{U8+d{{VX`T>%4(YK zu3_}bHENqY-8NZ3@dcoa2YA7=v4oJ667o)ipHKjg zPeRUxO#4w!3{J|B z$p~8u9~5~|OC+oWOdaAd$+G8YX*ZvY((it&bwZ=?W~jJGy?V~~ADtuK3|`jYAV&LH z8;E+m3zEIEnB_n7)i^n##Bx4Ni6re>sL^sfsx?k;dvrs4qTykb`~IRNEnIa|f zNFqWG8u9DoF<v z#CmIQsx&G)_ntqUXk_SMm@6Yb1BnJkI|>1nn zlIt|yI;@JSKaYqH@J5~Fr}m_hVK6sbmXtRn8em$zi62h`31IV7yh3*!Okr1x1+QI|rY~D}5hbUD#fGg*idggm2QejDEW!>A|X8 z)Ql@q2PP<#a+v^4QwpnM`>V%sl-u=gp9%G=$Xh(T;TD6rp9;ZmSA3_Tu?xl{i9)1c zJOq&(q)H?Lx|>(lHO_&s!xb0@6&^A8B&Zh~4er&k`Yt0;9#81XMQn ze^4U>w23K%xGz>IaDRuj&#|R&4N6TpD}kN(nN_{ype0KR|b>23ZXe zNk%9BOJn@s&dW;Zpruwcm<@Oi8^fnI#G2r0Qip-UFTtFD<_S3$5NonS)r=5=YVhqX zk8h}zI4XpW=ms3(W}&A}0njIQIh1?A(ymH~!WciJ1XKfj@p4^UVBQfVameQdi?f;7 zyW1if_ce`BVfnF7k6i0b4^)4msH_|se;r05@q)cjCbPgGw^VamLhaj{t`If<(QnVI z?L4pGPAp*f8xw&fpgu&LeS%*iiCW_`QCMVBYXJvEj-8l7n_l|1w%ljFiBR*oKXp&Yibt%i@)cT;Rh+JtGgFC($ttizFZIk+B zbkcfRgY)sxBBsp`xhUA{N0G#M!L1N+Y|6-juHnwd8zhlpnaJ42+U?&$Ubo z4MOa9<9uHzU~%V79Rv!!X_G2Z*SRh`vIBfcPmSbWLAf^IFqIu_{LAw>U3JvF!A>`D`E%%pQp;r|?eN<3H4S6K?;+fMR}|VFQ$s!tkDL z_H+7PSt0dwfsejhGRoyjzNMzF`3Y#j=CfT~ot7t_P+hu0#ww;;RGam0cx3kXxRauQ zA+$sC+uRU!AXNc_&JbH@JvwjZMc~JnvHK@o8MNVRzq^zICHl?islh)3?g%(67dUHL=d-QtSx0qF&z zu!Xi)3K(>nu3n_S`=jSc8q>5!UGx4h#rW^eK8S2$Od^Ea%&Mn#BMf5#4w_C1ls^5# z@5%b)snfBDEdq7&DU#j#=HwfS=HK!Jkd_{FiGKK7p16uNHi(2ifzUp3TWPA|^~xKO zkv=w+o<~r4lWgYU96%RjHlAs);Z{fOn`?6c^okR_g%yoL<21J$)VorzacYW%)qQ0p zoJA3#_}X@|zR$ljLV%sK{S3_R!%CV5NBWdP&2)U|*|FN4&$msRwuV`|hk*GP#Q@^~ z9^cV?wF1f~Yx(Z&yknu?aubgrK|WvTUkvlF;j?oipMS9bnfYe8Ci*8dAJhmv7~cXf zYhz__>;T0#*VJunNKhFsf7qe0ksTc9+1~S$W~|})x}&#Tc5AGPkCU?Qq}f?#vmaE9 zI=9h?ifwY}nZs~s+6soJ1pU-)dc5k`kT-mbXWf)pCxPad&Ue^9e?dMNP~+D>2|AOW z^;?G1PzRs@KYGNo8i9o5-y?uhAJ_tt+{V)BexdVJ`+JsUF?}9+Lq?BGbZwjeVwKKk z@0&pBIU5g0G0`HU)d4uEf(xD_Qxn39i7GqwkIux{6R@=|UqM=bRRlWV=#MZK{QSoN zu@}p}9edGL_g_dkT*$Ur`5M^2JAYGq1_%}7`7WV_H&04!%35Z^FwDn9KUBnaP#0(g zRNA#C@wwaAz@f36%21z(^8RH=Mwd3?z27oSq&5q|o%rp`PPlY(6!)L=#*)vB)sM}0 zDLgY&xoG}Id(~QMSC}-a(pxGrCuYRFrF)B;e6UVdB<)Z+yKsO0t)~h^;~toR#u)g z&os$7v3FY0-cH~th%|6N49xh^pt!q;N0RG>(g zZsMhobHUBzQe*b;O$OLX1)@)Z%ID&@5N=yAocgO!;t-+{z&dW3?)X+Lo}pOjQ>1{* zRD$3gZ=gwo{$O6d%aCjUp9V&0i1=Y)bdADX^Jn9$@{sVzk-ccv=LnIBvpB%u6pt7lNoT_v2NvJZw!>CS^mdVf1G?6kf9C{<_>OMf~zdk%$zmZ*`C&kG+DeMt1gv zekN9(X}u>Q&u;9QAH^Vng%#lqv_A^2k)DukyK)9jimCXAA%>EfH$AUsdHN=tVZ&A< z#HOMLJ$ezFxp3K;a*|+mgk{G{M4I7zx!;-|BrnY2TtN2oV@8{t#UaCJCO@EUPt}sN zuhj2!wf3mXj-k8snluvB@PZarPjfqQT@Go-A}rPuzH}&2Vsc^9+dHB5wcP` z+qJgJOV0QTx_Hz#>f%-LWIL<48KJro7(Xy}mVovl6u*OC!8br4Ag-PQ@@xQBaPt5m zCRt&A!3ZI8DNc8Gp^iEQYODhaDBmplMUvCNNyi6d`O+Tup4Din8Qu42{szF?o9Yk7=H&f1Thi+@h33^2 z7HHhOkITB6&Gv8LO68>rG%`|u_X%D9c!g9>Ww`(Vnpg~kEOLnWmHDM2!h>o(fdNcK z?gE}|3VuJbmKKO%_>F_{&8iJHlIzJm)Th6FIRHyxzx~o=YEYPFScIc3C1U6?L@(Q( zI#DDv1Dt{ajIq+;%k>1^-_JkgO?^l^(5DX`&iz{x7<&+D+m zpoHOp#{G_ydxyceQU)+c$}`inEyEtZg#CT z_{7D=>M^=LVDY*XJ)Omt2Y}NDuvl*pXU__}a^r)6Z#&evxaqkzKr=a;^`(1-xJe2E zpacV=8)4`TpKHMH+;U=b?Nr`Rg~@_jS+<6u02>I?)s3vRqTyP4?ufrlhhAQjP#DJY349+`PAU>a?MYrdV!b4 z>#2}715NtKO(F6-&dBK=v>xNxbM+rUA^>EWuHW%X>%$W*O*E3;plqZSq~h$VrN(}s z>*5N$UH^m#YIVU{VfW<0OOYR5|I#F6gO(11-!5L41#jvAXh@1)^Qk*oi#p!JdG@Ml z;_-OD^`4!SeY;s&O0#K6-c4>3li5<=W5sV$H*R=L7)Jx8k_=$bUZbaG5=M&|_kq0+ zY#1hLy0hK9f9+3JIx3;yL=?Mvr<}0#*Dlo>Y1Nfm?IsxI zx_qQQx$s$$%4Rq}(Y$T|!M+~Bpc5d`4A7O#RSpOr#6z`rw(Z@Xo3|qTJ%XPJyLDvuN{k1e z2SXkbCrOu%CZaS1o8i2*8WBoHw}C%yoQ_9kX zyzukj8|nJd32z__MEo6f63pd>4^LA3ExM*6ni6R1Vr{bhswqjH_2M+ zG!fAT802r3K)GQc#-;7Q za8FS3bHmaIG@45~(vDW(c-3o(Zs7TLB>=f4ea2Su_Z&9`_K6P1N((MGl92X| zPQp0p0x8dmdIO;=vDdch&xJi!amsu(L0TYRB57k089Lfnwtbv88ZP_wm8gpcdS;LT z9pLs|Y?Lo1R>Nd78gqk*@93+oZfy_SS^IDAzi5VURy|qidA=KPa_dwEsoG!pH`WFwdyJ*!c3u;-%sV z!Nv3k8d;Zgy2+n*Nrbn-hA2RH@+N3mWEXpJuV3XrXwBsJxf;!SpR^7Ae zI#Of-NBns_e6eDWE&I9Ls`}9)V(TcrM>0Z)gu-T}crS=rnTBeMhg+qrKh2&S8xr&M ztYlC3%oR7`KLQw=gAn{rVtP;G988~qn2QlrXW?uu{_@GipGmgb!NHzx%xupmi3%ySRK9(Gg~?o0v3+r!l zVJYkC0JIw%KKi!{~c5)xcR z@*a4M)6^^w`ytfsMZ**p>fS}exU*99ry2pAhWgauyd+}>d}e*AD=BZ-9=~(EcNLaD zrIz1NnsV{!)_b|;+iuMLk0##c6olWZ?}Gt5)yofmYnb{_#COMBV~p8iD2OB{n6yqc zY%w>!d0bO;i{^>OjBNU8o{`nwBkhH0s{CI>9?O+gBuMIvimo!mK)4*D6X)ky07U-v z+i!--`3ltMXJVX!neAg|C16i59ejr4gG)s6p2&md4_D1xpeC>H7g`psI|bU>x@=q< z8M)CXd_z%n7fF(9O;%e3s(bB!{1%PsG&)*SytA zL+SxcZVR?#avXCk<5!J(nZT{Qxx?k1zmrLw;0z)zf8rdWKl-&Fag5HSL1CgHM16Q_QK6dr%5l)@P^bOTt zG?kzKshXcLcJZoE_Dgr;F{b&#{^58k`qaPY5>V^He`uMfm*DbkMJ5XPZ(NmHb77#s zy}-$Jxd?aY(xe$_X%hz@q{@&w`&=(ihY31Oa`|c^ADmOE5bzM*)sB;r7^Jz51p|01 zFhrPuOev5!G$IG>dVwJRIsCloxgX&t%H7rOODz8K4;>PF>3H9UP22^tS!e)6s|ssM zfd+)t05dJ0ecE}Q6!^nUkVpAXX_%+K@}XTIL`DYSVS+c900>MeX@d>rTcc_X5)8}Y zgZ(q@U-s&I$KZkW7viyjH1ygKh4%6$Eq3R6-|j&wesbxEs0j$ou5Y+L>|nQBZcVP^ zFL~oM|G=U432&awa%CmU-p$e8QT4+xc^}H=-zeb_vM6<#4wH%WpDc|SN1p^wuyRUw znZ)9T?>znJEd?SjcN-A-NeWNPsKZ*gS*jaBFl)2B+qV?ly(DeU-{aJCQ{^0D_hT&` z@rV=$Fj~uT10Z(5IE3zAJ;6BnNc~79+W1be&Xe;8S0xqoteHKeXe{W(uu@B24n_T($ta=DQ#8pkJT?4*78psNMT^&%EBBzwDv_u^}V>(NYF^DfhZgn zYK~qvzDGM&^hnr&>-`-Gz>jzt;n+&b2D)$0k%YGpoOfCa>Jkr&yXGX8;-0cz=IydD zzI8GF1(z>VO%!;DYf*4(axhDHHKJqv$PsUs5@;IrW`ko*{@l(Y<;&j4#(#SWmpih6 z$Ei<3kToZwqPG^6)D_^r?}Uqdt5=zLGU60`)5gZiv`_nDlCrHn6-QYd& zH#;_e_Ls2>@LZ2h*6=!? zJoYsHiOXjinU7zz#G<*#hSXs_`m-{nrZqd4XftC1=i6AhXb6?LSb>)ysgr;q9>>OvU-hWg- z0bd6lhoKr4&eE+AKY%`_CD*_4o`7<52$HNvOGs>vu5#RivvoV+^yFBIO}v8Ttz)kF zEH)e_7?0iCEQ;jbS66a>B>}cxrz1$xN&je-r2Uu1xuC}qm{XRMV#r3tcgcH`pyb22 z3Z0MFR-SWh8b-gC_EYoEto+_vCC47iWoZbT0|0s!yk;LFZ7SlZ|8yg{h91z;M)JBC z%}b8*W#im;4!x|T0vH;Y#R{Tnjwcs?QXx4+z;30k6~JphR0L4jC<14VfR{;-5KN5# zPVSM2Ae*73DM z;9be8JjnyJ+i^tPmT@0wMGo^XO`0O?YOUWo6RB+LV^`s=6Ue!FQ%|FaJ4FsVV=tFo zSc~okZ`-v2#d7^5`e>=;_~b7Bm)&xCveNlMjpk~LM(00XaeOY7mG7Rj^lxu^zO@Ap zWi8rmEet_~G}F?ThvRkbVNW{B6Ax|IzWIB=QmtbA#RNo6#Z8O%HX~5|AfSVT4+z3r z#{NSR#)8EV{S#l+JEe4M-#?CDcZ45$-`dW5G|+D#*O^gW&AiP=QhLgn28>-xQnz=M ztkWc-n6JgyjlJ5o->qs7*8Je~YF#Lamdr!ZJ}ZLhgOdT%ZH1_TpK|5Iq4r0O<~*nk z?gSf~wY5)9^cjoNcM(32MPx6c$v8#6%j~1`-ns-qx7v?&uS2|lP`aY@B@d%5eXWI% zdk6b-8iubDEWjsA5E$Qt5E_Y*Q}??QU2JEZG&KbtZjSOX?@&$bgea4?zM|5n%?9Rk;F1ItCsxxtHF4RNHD9iLhk0-$UhQNFolK?!TN;S)v!82gQrP!C zbsX`AeyTn*$~QPh+Tw=o?y5vQ_n>wu(-?>w>^8~lqsP)SOYtM@4?QQ@*oa`v?d}@4 zxVQ0*xEb)QJi2CjeOUeXWFM0GhbtZF?iQ5md*sK3&;T$bRaDnxB#W3F{PNN0@pFA4 zsr36jfm47$A@v7JqWO8!cut63Na}J|+J7dd!_{Sh z8aLt)J{!#CNfdW)wQPe61=FWr^!X=BwM)3J(;$2#ECbXAr;YZ*|zp|hLJ3toXJpUdr<1xE;_BNo0b#?EQQY6?a*YIoAfOw$LS7?XGX{62EXg|3r z{|CoYgDHn z*~Y!+a@6YwMpCuH($-wJ3^<3nA;hS&H#*8>_3x+aZ?@8Kj;9=sC%B(2HEPx>Jzv`( zifa9v;q>H%?1)_|O9=oDuV3p~Xu=r}xN?caDR<2@v9%SqJX-x^Af?61qT!GT-PyQ~%sFUD%&LcR3%fHW992+(@fYobxl z5Iiz~kp$GfrR$A3^|PO7T4~;_%wekuZ5Ev96UU1Ze$XHDO!qWLL{E&s)Snd#Zm|QX zG684OUFU@^E`k~Q?o+LV!y<<27bEHT*E)^kxmTMy_;o&DM=C+ga4Cw_84}@_!Mo|5 zP61FNHqD#!2kFF)gfZTyzU1~owiga)UKaM+Lyd+{QqQAHu*L_#ehBymiw+J2c=Sui z29wwBqQm6^e`+ZA7+&dZ;bh||%`BZmJpGaamho_++vcYpDHRLJ;qIEG|f8eNTw|LcG@s9LxW?>Yv#wY+n=KXE*!j;l!`I zHUPx1E;$nj*MLtt%G-S!uUz(f@C`HJEPOH5EX^=u@d>*J%)55xhwBOX7JPt82W0S> zdSP5{@7m%|Qg9yjb~axR1+HE)lz#VI<JmA_V!~Lt7MZ zPT4F5(RcY_SQyF^cV~={#HBA6Gp#O-Da%K&ChiGH|KiB`YnQ-qo^Uz8ggPprns`iQ zd)lnt($bKz8rYVP??xPj(;2zSGc`{>TP|dwxX%q`G%d5|V8{ft}S8JkCiC0h{auVeAl`nB<1us zG5#Hti@xPUn%WF)Hr=g@Jg1ir(!+i#PlzTC)-93^I|$_mL1dG~A8eN<=CG^XO^@Cy zDGLnt%l^LfY?-NB=HM<_1t8cY^w=FA3V?-RUhf{ZX!1JkiEw6BFu!l~kW%yV*yI0N z75LpA^~i4-_|`AinPw?B@KS(=h)uIT4mvM_85BD&-D)yLpO#ZtMi~^|Z`5U$sU{@= zCoL?Xx&R5fl5&h@Vfvfqx5&ZmY3T42j;@4E=L64x&d!7jh^68)nlERCh`+Ca5q=}0 z(Q#Vu%EKZ}!Vt2oyQS^})WtA3H2X$I+;zIA?mHK;I$ruihL7~b&yZA3>Oy2~H$iH1 zI77z}zcDbi)@0Y<8{e1mR_^s3+T7V2H^#I+%C35foca-AXSqP6ocfQGY?AdCO!RFM zL)YBztN*lyRNP>-rvbz^4=d<5-#(Z7(j$fF(}s(Xu!F7COVjFH=OcJ+W?3{n(00D` zyn*CD=_LVcvk8*kZ>`(Jf)26?NQ_1X*(hQL$eado_hIwC)`%R=3~<*S8Er`a2}B>A zYYaij*OrA}8&amSk9_(|c<5a#P3JDfQ)g|j%Rl)s5wqVb^Ih&ca%q=nj%PZU42Xou z`Gtj4Zd}RSx1YPrvv&L0Axo}}jq}e0tGDdiG0s{4_qDh)9c>`fg?co_*eVi+3>RDB8(&;9M(@-|f zp2NV=n7YMDV%GGp#q9zr#tC&<=w9R4xL@b}nAsMMm?JA72eI*T76H3C_~E?=A!*2w zvC1P@z32U3-B_xqhKj0@t=@YV)|SJBv=hdjAAjM@2b1jZiAcTH52X8K+nzYvZZZs4 zWzLsg*QCfho^h>Byif1<4(dE=^DTm%;(^)U;PF|`O4ebifCg$RM+6csv_7vNFHFy9 z4S!UsL{_)sPenFD4psoq0Hxtco;^pUK?UQXBCY0`jJ%rihjzi{!F-R^?ugvs*v`7j zB$NIucn}D0)+g)1$AA^M;1_v>a@9LnuMBo>{o(1$VyE_5u>^S#S}{+~bLBs{wtFs9Wbnu#2ye~{;It@3}U5RBFF|@4&w6>h+OTs1K`&6ex>pO+hc{}lT16% zv5xD4kcC)E$89on7wz3j! zaVBnp5dHI#yLz@72yFAd)zI^y`k~6?ce0h~G)y-cwEnYK_Mg1o|Jl8AFY!VBfZems zocfv>I+CF%3sL)7QC&Oj-i6vy_5)>2xx|koX+5gYx9c>NB)Y z-{CwUEZ;2WStKC!{>o;0=5X^PD#zJtJwA%=LXH#unzM&r8)cuWt~V)@(4?ulDkK>7HX$%a`(|c`83R~Tx~h@p6B|kY-P+d8gUx_OMI5JhX4P)m_8%wff5me z%3R(U)Q0l1(F!L14r{0<^D#>8KXqr_mlCia+I;u6jd_HeET7J)_q*w~_gbjkFsf+*$3S3mB5jpWm`R$tEw3?e zDj4Q#>YR&5tGAm3rbWF;Xv^~Bbed^(OYyt%W^ zLlcypq)f6U&3kK2VR?O$v`su{F~Rg|)I-!#?8!}nG+efwv{vlARxR=&!MC)l@v^>0 z(?!+FEqfMPTKn32aj`($dk~=xTMppA8?4Kuw4v~vCEsw(kM4YV#3OCt*V2zPDx^8; z!FqFR4r|8Iz6_sbLhoK2iBI=389C#C16+BZwaz8%D~e12rV|kUH*Y*^<_P?vtKF|+ zFAs4CFM55>P+FI{syP<`_0DZ(Nkqu>DG6p$LUlrd!*Tk!6#OHji3<`l1v}C$qr{swot6cAQK{$l0rd@ z4(sa8rH&PM)kiH^Zhf)%Mw>59Z)rg*Epn<#9KmO$Q*7|wPC?A1fd~t2Hnx>Q3ss*+ zfcbY!^Ii+eIZ>VbeB)csBj70SNn*nA^)P+avEmw_Lz6^5%V_$jMEby2n7{r3QObyW!FI~fetf?~gKnr!zL`^0Y$`?E+V)Fg+sTz}gDOOT`ig!z0WknyVk!XN zNzOOX;U1S?hlK@*O)q}dj|%r=lI8>yxJHmIlJKA`%`mpE zl1@~K#BoMqy8N~*;>eDa2)sX-H-HM{IrEC-kqc#Rz8KV-l-AB%8{cV}z5d56=zg2@ z&jKJG=iNO(llcietdxQRkXM-NG*$W`?U9;x@&y;!>m??kf4WxU^Q7fo+*D53d2{$% z*AJ&95yvX`bEX%39jfo$fP6qC?k^N(~BPsP!AL3wimqLF2(L% zxVO1bPaTucBdz!nLt->N{swTPM{Zq1q)i`hK+TbReR>` z8h?s7X@X$4If+yD!r#R*wgzF@%p+&ld|WRkt{PsDRJI9t=LwQEyb$BI0>A$O$lYu9 zsY|9R048%afJ)-|Y!5q3c&>&bGd#p4M+*T9l=bb43 z0B!{rU~YKZ4B+e3!_0xumCmwHE~YjA*a?B2rEOE8HpuJVe#&R9c{`jOA!HEDsKex4Lo)8w1aAK= z+{|1fJ<|lZZFecFbPAhfh$oL#h7LLNM1f*a55b8DzF(;2#x32%8iLNljxTi;Iq&wM zOQRs-bxpY@e=*ahT%F%5t~j!1#7`g%a)Ep$Ld&Ns`to}$f@ER~$d3jrmkfnF60lt_ zmGZ{M+SqvTDlk-t#R}{0(rLhKYe#g=!2FT7+LU}&&;^F#`?Oa~u#yClO~Ic@V$)f9 zE!Z0z8|hl_9w1SU!95!GE?fEB4pAF!{}v`BUkQ#6dtmjofG|qsqb?Q%#e#;}2>02L zeDa`xoPLmdN{OtV$GO5H=<7_41Uen2qq~5wdQa*fr>#1i%Tof1s7lz)s-}+wrH6|1 z-UW(v=i#6zj;e97`lK)SVl!#KaNgS$){`RZZNO(YnvMI(y0#k_m-4t!QM-b5U8`y! zwBF&L_`HCs<6=+aT)7j-*Z?n(4)Du0^$#6UjD#aF4Z5n3Qt+*q=xwdm6beXhb{1=6 zTS%WF8rOX98vO;^UTLtd+!q~90tlOh%OwO2FNeocCI1fey7(i#p}cyh>iicw+xNnS zR!xsn{2MB_X+(4WrUR(+A7>r3W3w_HL4$R?FlADE`C3FQ8q!KOdV}>*+s&MR%nFkK z%E-q_&6eISa7t=sgLCh+birCP|}0BpPpq}K^H;#o0=S6Xw^jdYF<-SX*?TTwuwClV88ZV3p1*B^6*^^*G#b1pNHSkcotAr2~hN# zphZn$0!a{4#gVrzI;S>5xq-P_BI@yClfiU1FYQ zY(I)uAs!BQU?LjWuKH_u9gp1Slg$`Yi9}Xmfm!pTN6idh6XdO@lDdGa@gsU4Q)*&< ze)9-?@(HVs2UB>Fz@iW4qbScdBbX@=AS!S+a$>D(`Ra@{cA{P5IVKu6GDPZeMRuN4 zi$W3*f}+G<-S{z>Jqvbcntl?qaWH^3AcpEeb57tt*pU7+4g8aHm2x|vWi&CBfaud@ z>jiV^h}~bH%8@Dzy*PeNDUK}qXVkKL@2nncj&Y4$+s3!)*%7oRi6sCK1QHwo5)>2i z2RJl_?B6(jt(AY4!oMgpvSPr;-Wv#!PmhaLy^U@^WiW)9k^`tS>(XBVJOG&lIu94! z50{V#;$H8&5SFTmxQg?9KF~LpXh6fMT?3f8JVQK8%VH;?hKdwOaRD9`8xfI*(Q;@l zf3uGMgM>VK+53yEIG-aD3t|GhD4yT>bn`haHq4$v0hN%*|7Qabj#%J^2oJK*-FZ@ zSN0N*FYTuTsW>ML{Kv)zeT29n6hJBaPG$)5?&pl-_tD`@w`W58*zZeezOuYsD;NT6 zIo8lbjJxBUYu^Nst*J8-(hKTBzn7?Vq+9cd%ji2DGpbS7=`O51P7G9TJ7Oz3_m&r! zKdWkX!{7$UFeK$XP$i&xH&QziT9eh+&Mn~P3s$+S1LU73;{qz*w@MQ_UeF4;nPMeO zWd@a&%`h9d8wAK!9eP7><;U^^WW{H_wF-S9bH(Kww-b!H8@(C?4;#h1_-Qk=878Mi zenOTZ7|tqu)h0B(%c=M&XnEN@rLC2G#|yjGZv44jSgh#xPoPOD10eUn-hUOfKs3h> z$1b=$X%h2PVs<~{{G-YT%bAr}-zSQxZ0Ft?ZD;200#>MK(6aXysu#?=Cm~JBEhmxD zt$A?U&N5Sfew@`(h`geW8H0bQTpu}}lZ|1r3H$(*yo?&0eAdH7fOisutM*!I)Q6Wm zl!x1H?;qD%T(?^9HtM-fx=VPBhye_sqM3#TTFffeeIqRtaNA$d@~w${N|{fpOoWbA zXoZFA^zc~;h=&^~C>A$TT`A0~S@UE*=eFNl*TxSXCFt0&PdltHyE>Tp?y9(@ytqN*R$Z-YwAm{mmkij+ zn-b`H5wzb3;pjCu)&MmX)&n&DePp*z3$RcbQj|{*Y8d7I9Yl0gv!|E(T`|mN~f~I(Y8?DF2qMuOq~!ZlQ5JP zfDj9=Od9JKGOBvjf9q#t;nri7Yrsii+z=*OOi?)d1hd)np*+!3bov38>S`eev?hoQ zT@WeZ80UQeR)7i#d0m%bUo($P0y42}9)cx$Xd@=?&IZ{1L)cBIIaK(4#XY^Ux{9so zuB^tB?UHllB}QxYz#yEx_t#Mh4?&~?jc0via3NwyWT0TZ?yN2(i1^XtA3euvFFWRU z!EMANXCNC0k=~;^kJ@~X;sKnh_FqhH;*|bzdZT+~P{_n{>3%p6F#c1%(3HG!8^}*; zD=zLxI8=C$a>*||TiDiz(9R;nt~zAw>bDJGnle~u8YPTtV1t=rIRD0;;2rn7CD!j_ ziAi$&VOAjjJ$KL6m%GA$hN3K0_Z{Vao)9h0nsgw9yTm2}DCzfvwJAlgE^TJ(jj!ZA zd&+Azd07_YH?b32qg8&nDcFqb(Y6v zNfROdfXh`yj&6w~1t9>-Yh{27|} z=j2lFqkaZALDKXTVNXbFTMD7}95Q{UO?i$%OK!@eJ2i6y2A>0lgI9P$V!rr^61_>I zSS2y|JXEX;Ansr6Nr1j83agC^rm8!6@iuJoTMqBgJT?yof6Ag1CgIHf+C*=hLZ9Bu zf}CalS5UG)={2G17UBFS0X^ z5!9h8h+pMab)8prhg$SJ&XNG_FF*BbBsjAcc2AzZK%<^02mRE0U&3`7?q5HOt%<$? z%|X_~0ekh~yD)wH30jHAJ_3YB+iPl-Co3w%FEARk+cL+{OXzt#D|LfmB|+~1d%`rN z09=GRmye_aV$U)`!Uj*>77AQzb}C1YhrfNKzjD8f$8v1xLQY(!nU5**(G*mM@`NCR zV*-2%ElJ_{{&@&(gyS?r!OvkqqMpCqKSR~l0-j!*ZO&KN9h|Xx-qV(Pyr81`(fEv7d!adzp$q9YzxjVeuQnIster zmGxW^EkUtc{p1BH+^at_5A*7NtYF4g`k2j=8{^;!IPiMx`bVaeFuUa7ExWmUkbhq3f>HWg&d)mf0`@K;yYFi5njn z6`(n2XUSIM1Z_8bZvT%R{429tTNb z{_2c*pN(}(TI^r;uC-n4RQhbwa!nR>6-b9XrF9J_1YvjMdYD%uo`Cq*Cw(uYLj9}h zH6}Iw=v&1#!Af>rAvKYFkL9PTN*Il3bCYgyMN$TUb98b99Y!&qz}u&}+&aKrDLzC%oBGmt@ z>UOjT@hxeeu#e?R2Y_xRvnjPRrv7lo=_C7jng@9|4_=S+&^*aBujG5HXe!)$YD^58 z?NNHD$2*%eq$_7SqrMV_<#;{qaC>zn`RkvW7Gs(`dF5kd{^2i~Ezn;P?Z8C%aF0$0 z00s=iytDryaj})U-b|e|MYU**UxhiRr!@aeJS|1Ga|$zIzGeJOwR`L=2*ql`#1@Faf$%_l#oW>;A!hPo-i` zUE6+5Ey{jJlKE3oNYAZ|zASo5o4iKX4T2OF=&vJNM@aR8xG4dG10dFj(LA=OQAzvt z8{+8??J`EjFWjkhxZO6ywdP#Xelo{@Y=;X5n6wRJQvMb=c7u6-P6vVc=jXTC!$=iNwUo3HDv0f&cgjrQB|Jr-8= zZI7z?<7h;EWc7id>R+r~M_6wlfD8V=Q1_luO?7X(Z;&p%NiRxMdhZYvX%8YzihzIu z0@6f4f`o*k^dcyrqC_boy@etmp;r-*9;76wAVm_TL=y7s>3^Sb#yIE0KJPom{&4n3 zhl9mp&9&yd%XR;*3500F93>#eFbfqOq3|Xq#_#3xf7I6=(ZxRu32d8c4!nUhZ8BMBdOLjxMvXI%Ma{~E8JGt z<%JvU<4qOE_ThWxM6z=|b&RSo+ZjnVg0b`q?XKU^8+=nXWH>urS&{eYUjKOr;#4}# zmd0O0#rlcACZ5-b6NB60e1W;!XWH3YMOz9*a?BD|)DY~e zFvaBO*!Y=x)^$_J2o+O^;aOh1d~|g}2tOx%ZIGAkYg}n4d6^!BUDK}ec+W*ZGX_Qm zi0PuUBtfEsNAf_U>8()o@=ZI(PkbVfOBKHUi>Yk6)eldZYoK_#wBgrCC*;e4;*3<* zZ6_+{=T41sa!miP%Z-?4rSio-BEjMHa=3K)ZwYB2^bMZ!Wbqg019bzC;G+2xDD*_n z0jIyox8S-i{oBHtlV_%3p+?^_XyZ7zEjhgglIERQnQnSUOsaqSuT-V#R8Kw_K}qF@ zVI*iNtf2Q&|CY1sj$Q;RG;XxW!R?F1U0U|2%bh2IU;pbRsS;$5nSnmulbJeb#PGTE zCfUkaZ`EG$aF3EQq^9o;Z{w9wh?9OXA#-5@%l+EnFnCIsG}qOwj#yf zu3E<=|F#URQha&Q`t$3@45y9kWJtbFEWf^9fQ0p%fRx@CRO30 z4^8lvL1Nf>`-l9_zOm`TyQ)7|p0PGw=9Jm}IxeDRPYYE=<_58A<% zNWLXEn)C8Tv8f@UQVCo;QWukTHCGTHF``{k{!p>biv;;~`rVfIbyzpy z6IsueN8V(2V+QQfrG(R3YxfgQ>)g6}9&Gcc)8v0A;zd%-X|`-vPC+b^Ekr$9XSHDPji3^X(pUFgrqaC8oO5f$i7|1)m5!Pa z^1AjeV>sT;WvA0ztAzE%D>U?;a7j4qw&_=bNWDnWD;w8+%tGioGTlh(4oXOPumRRJ~ZaNNr$;qSB2x9iSNS_@3W0ivvONdJCQVm>XRZ#YOGH@(ix1=2WVsTC* z`^Y_&3ApL4uZeAZuBXbu!2^j$C;}ZsZ7N~Io@kbgXQq5G_h?rB`lHhQf?qG6@U;T{ z=l2*G4UOnYz%LoUQbG=gn-W%@6K_PUiZ1>T3weXD+ZkTntp{8u>fVTf@@hH|j2oP6 zZ*gF));Tge8Ohh+0NRp`XAagdd;r7G2HOjaE>ll9zvfB#@EloegJRrvyZl!hEEzbN zeo7{)_oC>joMmmqqm;+iMrC&^x4oH{Tm8MRi8hQ#s?#>}-n8^Ge?4dOiP_M8tD`#EH%AK}_TPwy78){!EdR}dig58t>v{RC#SE*p#}La|nVS!+I? zY!oX}aP>s7RgK3Y+L?u0Bb_&A)I)~7T21gSY^zfUw+ELeyTguf=@bhnceR21Jq_?` z>WeeGU@M<6W#7Fn^5$gy-E#97YYX$$G?0jb@Op%-L7fF(2p7gD(+%&JQsZ=VoiGbP zdxuZ&-;w0EcQf5MRms5F&ijdhMk7QsEkspM!3D+#saA0qypxA@R4&;5y3H zM2;f+w=SI-wIYKi)a)FElkRU`zr&*0)X#124q@SVc3bP~1LtDrZvf+Ugxl)}e_C>O z$bM)_iTO0zliN+4>-tH&GkQ%&^8-wuGMbDRFVV+m#H$e8=OLqHA)uB$z7YR0H+Yv=S zP@V+j-^(aHvI_UVnej`<@3dal2U9mv4Q>^?w1!L!F_M`eI@=IU0^&oOJvsWoo@7Dm zdzh_gBA57^Z=vVjMSLaptoUnQ=TENXyE!F4Fpc!(gA?_s(jDk)$(Ad|!N$Wk{iDS0 zD^z}MQL|&FZHARUqHqAqZhI1vzyBRV4oix;HWQ3NYfPLr_ZCR$9Tn0D9(KH5Aiys2 zOIt+>AEb|h+j+`UXipk`BF<7rsS2dznjinbt=G0=%4Rjlk^Z^SH`70w+1|6&kr3;! zK&a5e=6kI`;(Pd-1WsWdG%DjoR8sygOVFQ+V6iggOv=PUm295=@ygR#{w~64<9eS3 z^`?0P$%rt5>903;wQ4_9_Up_xZzuCD7A@kIl$g7}Fqn&)!pwV-T$GrT*Io2C0$gim zk9w6;utwF7$7)vmA34~yFs-T$oO?9lo!}t<>y&B-?FJBV$*jh8o!weFM^vgPAyNFP zVxK7{0(1Mw`f3!mltCe?$a{EreGY8v)9vT$CamhxP-xlyI_w5W3ppU9-f7FvL8S`H zk-`?GH{_OC;r&|NpFZ}e^mGxSO4@Yb&}1pbXd%wQy-rGz-l)_U(Bw!I&mzScO?2#h zy!j(4q~ZJSbGrwStr5wgU!mtmNux#1$o1RlWGB!hN6HR>>GzB?uG>FqSlf$|8Bjt? zgW2caFd5W0p1*B-m8<1zVvfyIB}C$s2U|4-Nz^JM%Lj;a!}->JP;Bt8ylqts7%m$MZBgY|+!W~AkL6_BwMWYEN*dKyxTW?)?EqL z;z0K>Uy{3MS@vFba)R3{0C=0?Aa_`!JDJ~l|8d@ zPPtz97%2?~2cP_Q#mUBS^ADsU++G}%vF>L2z%SP!AQrG%m>O?Ds z6gjrX3Kt=+G`w}!d|Ot&seN?6^)!vDm1t*H1`VBv3S&-|{5MpRr)XzXEwV?C0>-7t z{SNN1(K(jy$xi;o?2lxz$^JJw+4bz}CtCdLz|7tvj5-5F(`P3bL{(9Yo2EKB0%Lg$ zpIqYJa7noEF9h+4+bD~6P;J!6{SobVXcR0Lq-OSnpH%^6t4QCis57|(fwA?_#qU06 zrLc&@If?bI^UV*#8Ypl=#Hx@q$*HvoC1@IWIM+;8|ATPq{_|V4Ro^A-MGt7>6%MSj z!0pyVwfm6lk;=l0umlQri@!zs@W(qL6~UGgn#VsE?^UG~7L_3w(IjVL7$($em9=~z zuE^+y#1*O{_2U%{sGrHVKhUV3kKZ4T$4ZlLP+Wxg>a7$9MJ{@` zrVC|_1lc`HazKk~IXoI#J>=byNBP)!N+On4(aKqH8vI1^DjPz~eQ^^ZLChPhyNokB=#w;N7hzk>})jEM@kS1B+cXS|a^dy1KkcDT&T@Ko9#p0&MQ%L)I;gzr9No?tivSoaB7K<&jzeJ{vUz&mH?a^L}>3%R=MS;^W+{$<_XXGoSjO zh`>^mKE9-kx_I48*8Pd}!z`5JK-1_)&5doW$sO0D)DYW2>|m>!mByV_xEbFyrJo!0 z*;m$boFm`s?SR5;Httms2&(C&=l4T-U>FyIXlrWF?zhj)uhfuDBkCtFcwIXC2Iu^J zGafX)+Y0k2045h~1jgijD;ZKMaeE;D*m~gW-K9*VL+YErq~ROI#%4QbHtN4v(rO+s z4(%-_gBiM_%s}6DHY4xI+cpaaR?KwT_ZJ7(YJsJTu9K4}u_$olKd`AqF#m|*TMWeh z{7d4ox-}XcL@|ZsF1?-3W35bcr_Fx)s=WP$(ixt^XVVBqxG_;VzUwsH;)!i~f0R~O z%cGj!VwrT9f07crvzms$`O%BPFZ~3F%9$RbBrwxTN1BeXIRo><&+cUyNNT;#SHxv= zf4_QKf7iX?&)sB2@%)SOJ%V*jMuv!SF}jlyw0yAspioe@X5pEpnd+COQNgHAE`r%~ ze4f{}H4&dv2I0M{V6~H6ZPKa_Fr0x#vc#!IuVCN`49{JPE9GN9qv=O09`UOD@wKcA zGI8s`4qfOOk#VPdZQTC6PntZ2Yw-rt7x-|U_kH6~lixH4b!fPx2C&_m@=cwyC~b_- znfa=sT0tlN&-X4(${E7y&_r@;7d!E?gQylR_wtLWUh7afk;64bHpIRFBYc3*jM1Ggi_PWZM`67$x?pp`}I|G_sec^zqV9W)JY{0kWe<0}oB z$io^F^6B9Q>O88MRjEfN_5p5A3zwEou6}H2uN7UUk-Bz&VXR-jn8=)8Th`XERg3poI!aRZ z%(sNp`l9XHXcI@er2sa;py_ZjPZ1PRY!=^McQF?~%n1CD#bEu#nDxYhvRwx5vI;p; z2lilZ`f_Ueiw}v1Pk|@5DA_i^)f$s34WNYRf~dwB^az(shSBn7lstn&^HtTy*SxaA zpWrzbrh5?zCn$92!v|d$ywwMuE1lXE6~gZ_DUE{CaDDWZvT${X)&@=VdM=sfcNB%U zm1?bw(>_5g{tNj*mv@*vwD(71l?!~nt}~eZ{C~b1=}<>kct|HeKfl68WPek=_~U^{ z!+5aPa|26t-bckWWBprZb5b~SXx@XU^iK7_bsOew53#Q3;>Ou(zxr3Z3(RM9z5N#| zB;pqSuGqroP4(YaeeLu=G2n~HojWtAE0a6n5Hli~;q$Dd%jB%l==<=U()lG+BYzh7 zTo7ZxAuJTVv?;b^Jy{b$?(5`e8V@}^B!_`2o#vS!JboZD-6>BP>p?YU@BFUu&v{!_ zM>7AXx${Fu!m&n2TU%i#R- zbIm$6XshT{DHEPg-)N-rnHu{G8}FI0=CZ{e{Nt7x1ZTsog4F=WYg8o|5;0Wl3dj&EUn_>_ZFE1X0-Rq{JYAAPLN0*N9{OPMJ{w zc&7QIlF(du>&>J1>+e_do$WiGd5aeGhyDj$ECOo*b=-Dff536-PJ6t}4(!gZL_+W? zQuS$YNBiSa*57I1?e{}1YIln_88-hQ)YQy=s)85m*LYuhW)&$%+a}}a=otQq&+M*x zE9QI_MykzQF4&NgLnn2>8=R=f{z;t8);Vg{t4{ zLuIX;x8Yq8b?7sa6IiW=J-~UrxL3({B|a}N1;WGx;m&Im=E3$Wt9 z<`ntmbcG*8?5jwGW;)rJIxNnC@!zfzHSbsP3@DOlu+2aIp03w({~fbe#`WvhO++$k z%>kT12Sty(i3H?}$5m#zCwMx?buD>Q)!GU>mz{ zkma5MN_)N)0lDX_1!6lUe>$<2-+AdR@vcW?gAw#cp$|bnnWqnVTC~lipe*j$yuX`thzX)i<4@E5{BFl(= zeHaed?;dRR+vgJC7(w< z?|^pPad`c_xwoeovImp_zfMx*|Alxu0|Ns`>6oBZ#!gl7UQj+rY7Z_r6n_-5UzI67 zJYAp7s%|#C^C%HuSoF2Nv*qjRj=VEsqzF!dQnb!Ag%7t~MIKigwJgmFzIr+Lo=;9` z(9_Ev)nSiB?Cv)FD%fdULax1rqV>IAnhinjA!9}Dr>Kl@!IMS>NT?IJmW53TJl zWLmPnJDq&4zL_j%^jkA}2(-vavY5Wm6c4p7qElgP9gN?-OS-mN{nr(om(E*MqRX!y(G_8aJD$+PDkOJ&X^G#efX^=9H`OOZ&X8J9$1EF(KZ_55B6!vbtJ|I{hy7 zJ-o>AQ*+f7nReJw$gja!N7FAf`qy}xqj=)eF&t1|aK^&b!5oEnYP;iHjS>d`D6%7A z>zfBw@s~pOx7W7OJ`TUty?j_{(?pZ9J?lQMW;#&~PpbZfgjg*>lbo@RO%&B6XyeK@ zUGqz4)hln!B+Mn$qCZ|c^+ECXp#1*8)5gaF6_Ucqc6%NsWFycnjvNc{7w}SN#%Fm$$q=7&2v)X+&C@sxmm_LpM04s zPhsU}kvr<}b60XM@Ju(i-RukepQI1iYWKvVb1$mtdmesVxlga?y;dIng27^SGfPTo z)@(~VN;2plGsign^e~|ZA|0D&4791t;Dwc0szWZ!hJ)~_6=- zL-pm8@h~V_cE@Bb8!JBO8kMdoYU4`SOR2`WdB+xC&3RtpBptxt> zDh(^H_P5I^A1b@+KuC9vh0W z{Q)$7?;!LHJcfuy@VZ=XRo~JpHmowUkbiuU?MVjvJ&VDs@<0A2>JwdTqyj>f4S_MO z+Gk!PhQ;5jwe9^Ae!EV)KLL8fuWw!PlVTNle334VAPSxeFxFrpEAK+NNkbk}3Mjac zBDG9>aj5cDjyw$&=dfqmJCsFTMX*dE#Hc_Q#|($!#sfM{-(26?QfM~Iks@EVrthm_ zuz8xH#h_2)S;lf?3R@jgUbN})6zc+TI+j^a+sOz~_K2cUQ5t;W*dov6isa0}?rIn$ zLS(-2TI=hHq3o0bq4{1655?=GP{TzOiBlyaUY$Hm(JFQNHSFWKPVT9m&jN*#e~#*~ zw{?)WklEsFUFSB>)SV=1KPo2-d{mV<`ICM>ppif&b0t&-}#Sg$+SlSLyUT$$hz|zhr~MfsKC4j>{pkrFRe)L zYwNkEiV%k@$NKbi04DFE=QrTBM8uF}vlG6O{KztWc;Sv{znOy{A)OcX8a_7GYF$=e zy?43V@T*ZX-m^(NL34F!bZ9_Kmy}L)?r%|9x?}Cfm}H>+jzuTfo2ilEya^;3F?s)| z(RJyC{S#I~Ytjx}6qhM!JT3VPy{z;}SlIuQkxPkj3ddS;*EM1tg&Ry6YNt`I$JDrZ zlG1ypJoODf6_(t%+%gn4M#sU!YmZEpHaCWx0@h@y)Zs31!o)-5TJehRRHtOEJ1O0` zaq?ShqJ3vOzuM?lOOd}?9BuHEkG95xyxxX^lSuE0KSnlKD{9v&c+M|AWCPo6Rlu)9 z4Y1gVkS@iBTYpFxUU;Qj$8BZ#bdc+LpP7$>1^eB#5D|z@Ee6;6*Us?~h7TUPej-P9 zYMX=KIGcaWGEy7}8+nZRndj|9D@%Ib_NKn!H^*+?yNiUqLmY`^{ndSwU|jZjmyt+i z&hBlE!dKZB(e7qLi{aQ06Nh_5tvmoD=+X;ZzO?e?j+RxR-}|BC%e7mMJmmg38_{?} z8qH0NP!}V~eElfl8(|_t<9GBecWXLA%gC-TBworUvAN!2^CDdW6TU0*Gl&oKk*9-q zf8LzcoH(=nE_ekyvHRkou}jkCU+~v@%bN4a3k|V1g!CZ~MiLT)+Is}wz5YPKW@V-u zE`=;hu$m0=!&dJ2JUUMG>}Mj08R2PoheItf0Rju$;sk|I-(KPQe7hm|_Db*Jc5Ft) zx4k9F3pB>Gj2|skoEhJm&wKCy_QBOd-^1%E~>Gm>=a zjV0pDn8xA681VbiB)>38>=LPJutkq9_s>MJX~pF^a?_ypC7Y0P*_HH^edPtvRi8)t z*Tt835Ebl@ApzKj?T+IgxtKn0mWB;WpVpzPeyt)P9N!Iz_gG#JWp;rb^&GDzHDCU% zvFkA!DEw%z@$z|#Bgj{AyK4wRiW*@Rq)`k2mfQQ_PJpZCGb4Aof#=U&Hg#}YsTx{B zU!SUlO%H+GJp9c_HL1k4VN&DWg5-@Yo@%?Fy1fZD3U}`^%JQ~vsuS@;{bF*noh;?l zkzWc^+ZWd7T5}`a2lH`hYToV4>Eo!2FX!hlglo#lARNIoA>)(MeTFU(x++5N98P7F zYEey01w&2g?bNp=4ywVySYSSd^jBW$z?%0ZFSB(Wqh0FgSTa& z09|xWE{(y-JRZp!V5C7fp(fYend7R}1BECI|O!7S5Fmk@({m}cb+^stmQ zOMjF@ZBg0%RMD@t_R&kqJ8%mvt;be-w5{Xp^u%V3H<#+p}@oS9pGAPvdJ8ZUK&8l zJ_=F%qQ;-S!!=AJdUtb-k;Zqh zXO+2@SWCN?5C;0FRXWTq&tz27UVl195O(RtZI+H#+GN#grP^FKN0V=7?y@3oANre! zycfLRO$!lXaagVTbp%wmu}3@Q| zg0Za{LKuJy`SeNgK^^lQgnaNtS;Ch+&32bDA?e;GvvJ;@_2A(vCUMt(efe#v&xR7E zc#xpsps_pwZEEeeVlmHlC1_Ikg+|R(eimfNJ{LJUW%DIFAaDk=_Ucf1eUA(7O&W`+ zbsIoP~qwC{85561Wd3x`w3Qe=2k*)0K;LJZQA>t$<$p z87G>&JQr@JVG&19fV5$X0Gw;KeH1+`thVekdQYWv{!^Vnrc|b+dShimlkW&4D#Gg9SCQ?@W;zHmp~ttuAmr%KWGH$20iHAxQX4E-?E5#ybBmaj*PH7t4RH z!jG>LgC$-BXtF&6-v_POhYvEQ48rtA)Z;lVCLfLWo#2OPqPJ1kOOJ#WNX~$b_%Gz# z>Hv}~02a%{8Yra83cG=a<_HLx3Yz!J0h+wE589MjkP-~njIHt*s#!VdTH9(eJ!`3& zAu~M9G66?D(6j-ZRK3<+wo)C^hUbu*P)utO6JT<57K9Pp9@U`_U)Y z&Vs{SlKNU*JO=I8z0A{Bq%cP@t+uSaXjH-QzC!V9OJzt+XFiViEOO;*q&`jeI@Av_ ziK?&btHVn6Pr(Wuo?HVWo76mRT}{I?KAE+rSY@BpW-!~u3EZrQNX0?cgOF>_pv)Qz z5dp!G%6x9ydck{3gH2*@xZW3CsXBjm@+r3Zy|As=Rm<`Sd0xy~8G^N|nIQhqNWtGS z6WOizQ9HqygVP{&WXS!><5*h5aA*VdH3r?f>q}H#f6}A2`5=hPzn%Mw^75DX>jiCR zIdh>uzEZ{gNxyp@`1Oa*&cUXj>}w7oVeMR%MiH5k-ggVx0)DWC^R=VCvmB@Uj6a)-gh)v`Y&&HNr2iA>YsdULHCbuH$}K$ zsf%B|AK41g=EmIR_~sdzr6Y3s*B(~*Fq}}ntGLz%*TeDCkW_tu(8-7K1-r*N8V;95PQ)zcsf?aB z6n#<-ptDgFr#f%Gy`xoy+s-sp${hQrO0=Dhe(us$&bLfnh#&SGpzg~_{bVFcvLh59 z;r3e#sLGRdrFpf^{Yp=s^G(?f#J#4YVPMc1`QEAjw@T(lQF-wTr(j^Yt|)owec`7< zljfNct^SQT?S3~%SiZu_{{Didt};nBc8WMOl#S&d!rsy&c{|Ns`dqFNi5hX+xJfcXK4V7*lzL)3b{`eEIpEXnvzMQ%ba09dUUU1Nh zq#FXT`^5F3lMKthmUPodzwAGj1JNO+4E6;cEW)K zEE>mG8#X8?*69aXSa%r1O5sZ;0Bd z2R3w@U0?v!%7*jD=Ra(82^Y>WNgF^upLg2l&R7$fF9yW1L^u}?#XJ%XMib^U6ybW) z=E7R76@zoTlG@_D-iN<-o!Nug>-E>Ladb8toJAX5-04;-f(N!@?B$vKsF(DP|_|zxeus?;$#U0X(erBmMaA+ z?yfqPyKikTjR;C);GRd*arQ@5xMlqQ7qV0=GYj>uOOcu9sR|%mtxlFG{&MMC{63bs z3fd5ws_`D<AMyqBO!TivjFyG^u)V>-& zZ8vM+{AQaKza{$M^3!M=&eS)ym2bQk^kQBR0nz}m zTl}y+yk;P5&~iB&KcTU|VDJf?RjC!&Z4a%J*O4q2^6{g4?yW`41v)US+n|%+0i942 zc*9fwh2%=Ei<1SisZUHiFHs1IFmu!)o%LG}UD97yPUyV2zRF3Wy@7IS@0!LmDj_}|KMmC%OR!ln za&H)})Jyp4bNYn-ud$ah*+h0wJ+=zjd$q;W>r7FE=dE9qCb9d#a@y-(2vTs@1@m78 zeuENi&wmFce&h?EAS52r0MTsu;3TYf>$e-RJXP_TWneU3zwDV?8@aaf-TRvhEjuDy z2{d(YdiR&Ue7@ob$|8-cJ9)*FAkqcg zD(5BuZcxH+QH>LhtfreKau(c`Ihd}#Qy<-^%rj(*;n?{`XvHP(tZNTs^KC-8LMgFf zU;iq$sp0P zlXJs79lG`c${JY{ZZ{Jl>fKLeO1HZevcJsmM-m;WD}6~L$noA)etomM5E17l_$k2e z=K?t0dmEO7$c*8mjJlY2D`Vf6Z!{+Gc0eEyo=3Ko+N!itx$YdFK+5QR82*{61=IIz zK&Dca0Bafj%5?5`AJ%$fF)pK${@Gykr?ugs24i-eiD@X~e-C)w@L%U?Yko#dAR90M zr8{{1+i~(%*KDULtVRU8(xf&XUjMSOcGl6>#-8CSgXP-=mm@tA7%*O~adAUTiKE}< zDSlPma(=N^v@-RQSvpI;11BkWaP~^WhNyP7EBQM{33?l|SkQ|^M-AFw1r1EXs{$Tm zrQ>}IuFgidVb0;djD*L2r^)j@+ll_zFrPpZHW9=(54Y*oKd zNVU=)_v-f;|8H&0zKU57r8{#uqfgUpMo*H!26^E&=_Y6@@2nnMzMDr=XiieP#1RuK z(rrW|lu`vA%KNc8(Rtp_vh1PCSxWu8H&(O>Ly8$0YmXm*DfB?X;Cr%(KU7e*YxYV1 zvE~z(C9Ju|rIDPH7iu?HeaCL$j&%fChTJ<|8%2V>y#O& zo#D(qbD3$8dUG}E4lDg-Zjs;dMbGN0kv>RKf6zF7Miuw`(b}>b2sFzr{Lk*vqvr_K z_ey^MT6+WB9+?^6)B->VBjqe%0=JJ~p489}^kicyx)4ezJ0#-XN_hy-w!>*FGWFEzWg@=%{sbFESEjK_7!YOPAfh8q)cUAtiBFQ zKTJ9)i@c%rU4L1R?CMq(_$R`!pCJ)(pqf6mC8z9Xr zT&0EHUS*|D98r}!2)l;ElHmJ%33Ackdb!GJ`c=EZoeVUc|L4$xUmYWWx4&n zEzsX&$t|uhZA2n8FHTN1tG47rG{CBpWWjWCcIt{&J25uzXUAGLmxsFH@_bV59R2(I zx>0~}uO21m42-dIVsvjt<(JgI1_3a9 zUi}b5o5HUD1u|03W=WW8lXw^e5aFOd^trUonY0Z&ba~dx`!5qee5$Gi_7K)Wrs0uq zzL@i4Pt^|G{*qzxkVc#K$e2!O7amJiC3)ht`?DdWC5IW!l;%+Sr+V=F)BR_kRaIr{ zX!sW9iAUzYniN;1Sj^NI@gaNc;EH&0Zp%YOP}tF1a=pVZuAn;V1v~ZAfaBFQaT^Vu zp1O#W50uCfnCzh&5&fX-kF`Z1uUY2LmY68YTn`NjN zHfA08G(H{c>4qtY^xqJEA=@)}SB**Tt{OXo0TiGsuk0o1DW@s`(|H%7cIMjjFj?j~ zo@FL?79tThnp5GWdUTI>U(QsKzT)>h=n!(;5d#{3z*tsom_2j3BiM}Pbz>|}WFkt# zgnBZZcg$FV9N}mHs*(H96B)ij;?W_Ju(8X(#zZ-bm#;Cm`MlndM)b7E)hS~WYOMUW z9=Vik5WHWDo$tFp*Tt7^Z2oj{$Vb7XLCi0o=XQ8T$WV(qHa&ynO=X@~XXEdNHrQl! zUc~E2y`KzOOpi;tfg6b04LNHDFV&>3>Wr%U?i4ENo zH0cn1hpys=sKZmh+u|lM{R&Va!owm1tGA2TyRs&?@B0_)FD$>cwY23+QPC2R`{`tF zcF$%masx$&poQrl#t^b8k}K@f*w0u?gYCk?RD-ef3KfPw;_tiHAiVc!H8&#_{J_Fl z3);dq4in?*d6ZL1Zf8SP7~C3O#$KdUChr7RxWctgnt@Ln{r0bP#c=nTBC<8v5<9QT zyzz{F!pZ-qhMT_fYR9rW3N$v>Gv?$CZ_xS7 z-Z(uJ4>khlPCIWTi2e~YO}<^gF}toWD!6 z64DCH@{PB(Hm3-;-7vhCUMlw?T#M8gF&lz~*Q?72un)Ex%>$V1Y z>B&`Qc1PU)VjkrD*-^o-8$+;NzBkkdMHlSMR^KVO;QKb)xsW{I?B>qeZGB!jpQj}q2}+rl1C1xLg}7$(nUjhaWN>Ume3)l zx+Dp2Yu5Q^zIn2vljMc19%illxRLW*W|UtJUTG7;h^l(ZZUK^mRb7&{b1P=iNQ#)8 z9Fe}L{l$MyDC71*)~I&>M`JJ{)Byaq3)Vs(QrW5F;&ccZSmHm#S3~_M25V?u?c;MF z7P_DLTuNbB>veB|$qx^IC5myLWE!Zi+prE0#SbG%4R~nsVf*XAXTkJ+hL!EPtoHQ2 zk&q0|?^hmh4a5c$=GVmI5xj8Sg6?C6#E>r0HfOi7n1+qQ&)Y3#FI(WfeThY?aS+Jq zKV$%uNbrQKb#;CavPq%b#MPWTzI3E#RQPT%*lm(V>dIX`_&^(PEyKhP4f!&xYP~#x zVpC2U4UDzALHKaIs8x3-ts+L40XyV>+J!gd8swrw##fXfxTwo0Y7xV~_Jxi}O1-{5 z@$q$4oW+scYEE6X5i5m@klhVsC{OAXeS4D7_fdUZD$D1^cYBDM#m1f%L=@Z_1mBr_ z^(5Ya@iiq(oJYetuwPGc{f^1C0*j{hjO&)#&%g6Y40Vht<~l?Pc6WC(yvTO=QAu(> z^ak!f>2T0nsx$i+GSzZ$Ia1pr4{NkO;8Q47V=)!Qfi8nzLzgQD z1w>wxKQ8~E`Rz>M6{cR5KLldGhKHcc?E5GNwYv=3+E0j*)J{ooNusj}G5tTb8+$@v zw)q$w)PcygvDMZ9;*Z~#bN-?FsNM1+HpoBY`I)DqIB_Ksc?Kc)11V@Ex{Y9+EAMFj zd;q(wKJK;kq%zrgG~dbgUPY0@z;>(p=8)YJTk0~)tzRQ&zFEvvH6`?) z7fua|gM5XR@b9Fs?!b|z5UP zSJ7~6A~MLDw>DS9|KWu!4G5PI;o^qo27(W4mW*qmndwB~zT=4$jptq1`Q2i-FM|rM zmn;{Y$Ckf+OU1fn^|N2_ylaqrC_kf!5T`BzPl`m%3a9BCv(09hdaLZbpJ&}tzx@fH zK}V@t#*aXX;^t?NyvP7316+zY{}3)-Z5HM(5hxQg2EH%c%VIzEWDxrou3;-_G!8l(&q)h;Txi_ayC}>A|IjZN6WA6y6S; zdy&D(tM5d%1eH0sc*F~|nrVN6_V#c>B$=-G0Is|6h2sgK(7U5 zR1;l#wS_7iP3!K-Y`1RuYv`lo?a=~B2*XC2RanzE=%U|%GqOc_Hf-&@V7@cbC?)yFWPn~?d2by_t~FJLC{;W8 zdu+*y^FT+``au+h#}h|~VMY20D_*58)*K*tzi8FS4XbR^&?wGt+QEDNh1{@y&H>vBB7vFSqx&8Tjm+5B z2f%_M>pYGVahXraWJLE6buLs7{k9Up{ur>|l}m)#z2+)IA2rWWF7Q(8*J{G&qy@ z>`3|n?*i>%xBtjyS-mfRxDqeF7hHRex#!1IXr>VB&>Mq}iqdoj?(<0+@u2f0z%kIYQk}u| zmays4ClU(vF^S*qZJ@A;6YR48D6Td!o@9V>>W{0hJjVW-G#D{~X)WJ!Sd-n%K^;3O z?Gs;%Hdg9~;0w)L&Ubx6pGT>%w(02Tb`Ng!D=%vIB6*}qZb}W6+f~YagJ#oWD|m^J z>xfU`cU@&xQB5-UcgW*gs!^9;%I^AL=m1%X+>2rAl2JS;NIf`Doi4sJ_wKCLcc%z! z)63c$ZSy(P}B47?b3uRke-w2 zNoE`(FqZW*CDkyGxt}af1WYP2M$k!$-q@uo=Ap~Nc`0p?*a~6?$QGP;nQ<=r$^t)- zcaj)>D~9YYjlD;EXFMw%5`>&$l34Q*VTCDy;>F)kJh0AXHL(3}DDLU!9UuHQP%lB_ zbYijA@N5fl>Yr@8OJ32*6kh#7Pr`EwJBfLHB-mqg!nUhr=3DA}l|OSMS`%={YF?}z z*$q}@J`MFnr4-D&zN*%WqKdb-qFD@naLN! z^mOMqSAu}kY-d4pgg_=<;^seDjC5XqQ zsXP3dn@|YSJCh&30X7*HQlSZHeSM)OB5+Cezinrl zsC~fCTLnAwoPy!GaragNq_e`&oPnFW+SeNAg3oN*bS50nrm|?FtIlz=GqILtu|?1K ztuA7^F)WBPTOKro?}gGysTDmM{L{>-?eEnFy`#lEIu2j5dMOJ)958+upziKNHHF4~ zC6p(HG|MkBD@%3d2HQvGJLSysp3FMZGL_JnUwV*x$Lv8cubsus|AT4T|GNg8{=cqs zDspZ9$+l->Xb*;So6!+N3dD`nJx}jU_sU5Xc$pt*%Qs@UAawBJ{HfZ4vPJ&~ku9il z*NZoA1|^(V4EA=xr$V|N9U%}yde{Gk{lNc^*Z0@`8to%l}JQP*t9Eu@3lTriTJ+G3(u>z>?U4s+r{)s=j?l}A&G41J==K;8Wu?mAtCVP6unaJc2T{pcRwYkFru z%4UGnzWf6IaNscTo)lnSAF_fEOYQyat-;Mln~Q~UmyVf7Y?MJ4go2xMm9zyBV_hHzLL0s=<(em_SG#g4|CJ5QF|%A zByji^bpHg-%GQ}b)v9M$x$Bbr(>KBUYCQG_LRJU_SIZgQFIZN;Z0mT{@*vCWQAP4QfhrHjhJu131)ZQYj@+P}<;m^Q0TwsOm6B*ZCtuh;AdyXT;OVQl9+3@noq z{b{Fz5+~=jCii$E4&i`_&5DZF6j}OF5TrwcXRmbATAfPFcY zp$f2AAVc(|_9pNbl*ze9)urP%A?2N?Ax0y{eGoOB z1E?0tX#&{&VDAWGfd+X~>6=_d?8V4KbxmzfMni^V);g7$mUdseJmpq~C0EW4&R3Gf zx?Ow*t-q2{;ZRa7cKW;t)dcbh5GGVlo}h4G;BQ)c(rbo`m!Qtf?phiTzQW&R7EZ%B z^jB(*w%p0ej{(~qHTIQLUj14!0^}VnZ!x0Jj*VSYFX``Gn@9Bi1o3GB3KW&h%eIju zIFo0Xl9UZ_3jvzg3et>`KvNN@>&7du__TP4lrIq7*;cZ1sSZo&9g#eqXjz_z5bykqFNF9=_X}{;pnVQ4e|`Qy zlSVA{I(C}#Ir9V-IBRRXI*$Q%grw!h zX?gNq#gEym;40aF4m@o;NIUD7aFZOlvH)bltcHr;4{TXa$f~-*Wd*$At0m93RTo9Q zMmg!5FSvATcx|YERfa54E2AhElGc(;>y*~9#wm;bKS6(8>mZT$i~^c+Kd}}$Iwy%P zUEN95SqX$GIYf1VBX(=y8D`jx%jtKLTo~`NFvZ5nKpj}5ur(f2#MFIG|A&sUI$fH{ z52cy)0<}A&Xhvj@Ntu73uYX{~N+3aL(;KLWaRPE@+PPHgnImg|AQY`#(42QF6F)2` zA1>8`N&01JHML`#tC$={< zw~JZHy>vwpy2My6{WNgJI3QyNq|-AQ1@P3lsh~B)JXW+EJ(fT?Q2!xy8T)J!kkw8W zfekK%aK>$$Dc^#AIZOc#*GXn^&rs~%F4pjqP$NPwJ5MtidJLXrKA4rZ-t3J#CA!(U zAXds5?md&;Ls(q#=X0}Xq?-;q=XmGsiv4rX>dD+ko_t1DX&5t!QokIK z5)qU4MY1wI2)zHckG*J~dAn#>U(MlOu+|dUeZd1L5wE@zd!LbQrlb*lcGT)y+&QGH z%@Tr;59AJhMG4!Wu-{Rlmx59NqJ%pRjd)N4|3_Z6%=GTJFYABtR7vQU%a$`>*K0R5 zbFZmb)Z{wJDXwAPSewx-DX#dD3Px!sN(?ozp`2b#>5*Ol|GV)-;W#69n@loHE7xlU z`P^I>Der(yQmll1ChTHekv|DbLg9iL->y4kFfx@4l*x>?%AaJc1M)C&~VEf%P-!!Z}a4EbT{Bj9iY4N6|hM-7E z3c5V4F11EO-N%1x>1gDjRDXT>6IJ_MnD2%vI0{XAgK89$ql=<}*#9J~+XxMBOPpI+ zSjKbD;K{EbThb^(`DP2(@)V8+clK zz!gM8N$HF@=5esnHX}^fG8vtai?D#TLVi1B)Gt2(IOJ|hG4VX$kja%A8@A!vZi}{Y zB@4*P;k8Sr;$~YJo+AxQc(J(ZVq@!-8tK1(WQ?B(Es)8nA;&z9Dg{KMcEpHS;JUZw zeSw12N~w>ZsL+Crt}z4Kq6G)LG?Zh13=kV~VS$Z;g*z&~nR8G+K+qcH`p+0N2 z&8YzAFJ&dQUnkayy^kz2Q2)NT{ahBe9%~N$#RflO#R}Na46`SWLB`RCRP1o7#iG;#An4XIj|0)=377_^v2++=;kfyow6$eiPM|jT zpjBK&q@+SziVrLyq>Z6dTfB1LY`f2WJ{DsM69_3mf&>!PtT)wtJ+3 zCT!FP8l5>5I5|ER;9BzIC+MTd3UJ-sba2G@WbfqIa6MDDa+P}{7I;_=IYyp81x(dJ zHZ4F#>D{$;^=)oJsKw^{%n~^Am$?W#SieCzR739nt+_m>pZhoL`2f}E{~LN@ z);^-H)&7+}_OWe@fEr*4jfeU;=VAd7JcW7GUk!E> z5{4pGV9Uxyer-SzJD?36Jz6y}@3vEES0O#3gfwSa-RbX+b3Yfu4n3Lr5#z<2?R zO{J`~AQJq5|a- zpMGKSS2zj-z~Vj3`Wj1xf6PisGT1WyXO!L*yt?A}_fh&V$pmoGe=)XvR3p%m_;0o* zGFAcD8r$S{j|*UHY1-hA+5k2BKCShOv4=_GX)Tlb`2$v&8DFYH(OI~8$ zF8Mz38^*Mq#Bw=c^(Pq5fz{7lS7G24oN(wzGruPO{q24!EIA4PsJJsHfRZk0NSeov z<{K_;0`=+Cm-FSd&V}>-mJQh7fHCgZ76bsJAu!Ew{1;%vmEgF?sf6FI-<-)A_uKVL zu0WlCxqhDs;!vej;o0vLuli&Kr0eo_+DIB|NZy5a<-Sn;Nb9%$PDa3T-oG13K;=JR z2tYvc{N6z0%cI@t>Zr}`Z-b$2-!2B3#azbS)=IMS@kJ@TpymO9H<^AKAQFv-C=jZi z`oJiK?r&?0MAnmS0mS%M9tOQ`YK#HndeHz|(I4fT+Zm<=iP&vf-BPMwI12j_Sa?)x z8v5JvTYzuG|Hbm5s1f;Jmapd9;(!3c@~;S=3tXxCcZkP3Gy8spcmdB}A>Lv&e32&X z`^zzeo@8GC&1S%2#o7D51g4j_*{z`IEP1$t=WC{O@;1YstmJpl9@ zzFU`8|1M`~)yF}#jS_RIf4BUck8jE-Rz6G9P5#Bo-P$k;04vuv76EU04Xfv%=6#jEmdX(&c~{Qzv*3WHb} zh@V+TPD3v(VM)My7)wUq11t` z1Pa&R7>XaZv6yOuCnZVJCD9|O5n;ns+5x=ER|3p{rdG82UC_r{64&B&IKMDPK-$_n4h#ew`f&(h3fYXzwpa4Q7&Uj9Q zF4gtm>T8C9o%nY+t14P}VBkj=11+dA^K!4)qu0i6w;w{YIY3LD*l&6J3n3glao~7>g^J{|zn| z;ud~`OK0@yxawR0T<#Y9J-96UrGxXNi^+KsJAIi3NYV(qtkDjr7t28;jj2VLsKyBJ zhzVfIwnh^|JO4Ej9(C&zatw$Z?(4?w{VW+lI-!|c21+tPu%k{c6BCGN2nzsif%W@^ z&`kcafI*cjSYQEZK{b{f|Iii#3c0_VMV95PRF7?#KRjX(VF%-X1X|W z*K1ho-!alI#ON38$;J5qw8sPj187go2&Koln>#~&kxh|wS#Q`4r%iK zL#XSiX8AkjpmBi9`4x1~j_VX4=5UN`x4JAYN%Kwl&;Rxkh9>Q6na#qjztHuQkA=R* z>qtO{>%u=LxPZO=Xuh%AeA9nCNGMKH_A8_`-ypXn+_1pPecrHJy3mC6pIfX{)3@Ea zyZ+EEPj?S$MTXoETeX#(a7^wg2(r>mv<=Z8qpRPG2YkQl8(O;Gn`Dw6}EI) zUoOfgI*o6hlgg@Bm<1+pz5V0A`ct<(Ez){f?m3$Df)Qs@^@-Vvap6w{BQ)t#@ zOLM68WH}{wrmMP7GGc-dbGqU<_s)UYMCSEcSoHo!g9AX{YM)36w8d4>>pumkayuWzf&(X(5hysDScBvW{d?HOtyNuYr#K@xc?yLqLi_YgYKsVbtLr!ZfxSKbA|WAtffpg(yXSQ*=Er;i|+DV4Vp+lj$4t z)#_eO*S)x;3x7oOs7l-T66r12`_NGFw1hK>2|q!PJ6wL4P$lcs5YW%yrj1-rfflcR zWmScsBDexXr(O7q*(f-V3=KuO#Kqu0o3uVfh>(+Zw{5V{3 z6v((w@A4fziw>wC&{~>`cuYn&27#wrhC>i0zL~Ol5-;cb|6@LFTe*d$J`1 zGf!x;a36oekzW1swwP?o7^32-H@wDwYd4v~N%bW!Xags*hBjp1=Y?A$5h|Me;bq+t zZe4Zqb*4(6&dx=<#>LgSuidqz^9V4t@!>x~TU#Gci^nWSp`{RdYGfmt#ORVAs{C>5C=6mg|ua`uzl>I^Y4*Z=?4=f>R61UP|8ywxiu})Eq!Ub&tb)$%hnd z-+W+p;45tForf&(Tn}CD=!|kvv*vESiav%j7q_ca0_x~Wdg&+nhABug7gB-jljk}E z=4}#?NK-bzKP)+4duK51z{_?Ctz&NwsGkVs|ID+%O}mNg!wVqH$yLC3W7T)iA7}S> zj_H4FbK02byrD32hwGi`8ROfY>nCajEngvS^r2kVMxk0^Z7KL>=|ZT%o$qefoLxU? zx%FJRmBg3eXaSMEaqJL_=u6vDvM+@Oj7ndN9>%h3vih0fEC*a=&wP$&Qsk8NbDq8w zYd!MOy*0GV~lyyn*ZNwe}28{AFz3-JF&JLeBB~eus{?G^~Am0967~M34y@r}f z#IC!<0DA5?EaSkromA!_pe9W6J|T|A3kQU{`(lcO;{F8QR;Z|h@OpN>3-^s3KpO0-tRzULM5K1e_J# zUyqfzwIPsDdF08-R>K3u?!fofpgK56k&I{;Kv27MxQ^MZe8CC-8P%j$NZ`~NyZss{ zRt}o=^`w@{)19DKw=~Z&Qcy17=XkcCAV-{BxCpPez=Z82g(-8!uiS}sTiNpXl-9ZH z7i~_~`FC-T;UX?Gvn}ULh~2hnWt^THpj}VS13R^ebv0N%Y>&t%$8at_$ zI*o3K6Y$F)_)y>H^*pt}l_0%v-gWL_02~MHE$seUnS6ZQM9fIN=wZD6q4O)o`jXXW zu$kZ(;r*y*_=9x&=}T{p6K?mpJ$mb}xnw~86chK!HJ4Pp&}-ITR2Fn?sgZI>1}eTdjNJaN;H=P7(YVHZ@pc9uBN2ES6JGjF%r`oilsgTmHNX!oTJRJULtR4Vr0Ew8 z9-6&z`lI68t&taof-n(j=D3;PQRtX%bKCUTCfD~nG$T!yAmffh9VUuu*V!uUo)QLMZx?^(r|$qC)TS%d_aOubP(hn! zyNV&%Q~fK3vPaGfj9CijTWLc-xqUoJ3D>ZZ`0}GigaDq}epbUL2L~uH)c~GakIDbx|=K_SU2_5Qrl#ubSH)t@vx3s3j})T z*ybXjtg+&%|Iu#UCiSZ+`t?HQOm+Uv9R5#Fn392r%1w>yngYD$hiuDvX&*c`mR%>Z zy@#PyI~&Zy$pElufgHo|`6&-KP6`at4L#u>)f2R`N4k8-nc)%hw+CJ*v>LfABlnZV zfw`pz>9QFjgCfmMP0A$HgThx48()uSo}DG)t3ZCOe#M_0iwZJs#l@kfk}>}P33RxM31qv?I${89Ava!W-w(<;4sY^2vFw-2+MmA+MFZ77m1Lb}ndxvbB4%48q4 z#dX2_UESYnY1A#60ki3qZ?t#%vmX=<`xdnU4nh7J18H9z!LM9B6~`eLSGR8__2EEv z*owlWOms7+=-DIBPD7-+1hYBn1w@0qfw;v(6(c}nfgq!iMHSFyjt>yMo9j}*gujsC)b;g#B{df0UD3T+C`;TO?MgIM)@ZG|okck3f6$J+#6Bx>kh z)4seY?Tm!`p{C?o0X6e%f_LRJjJV@iWCUHakl)5;Vocwjqdq_FwTxK8{DaX)BCiiT zxV_5&EPDSRj5prUSdjyYPt^q+5?qkH=-#sao8cS8uYuxG>MvM8C7;-e8r5DxZ<`vv z_5n&B*_nONa@{8Aff0mCpC+&EQr}4N$cn5I9Bk`Pd6ssr^uV8EZ>FjmLpnqslwf$6 zz37vG?vtyZ<48@PNLyfsuQp2X?j*R;?X<@5sQuscu*w;NP%zaU7J$@dg{wNpT{YBztsE0)^ z^+zGHA6s78#9^^!P7U;*Mjv$S=KdNW6#M3}oRZVnZNiNbjQuOom$RMuZx1%lhQtl3 zovVIUvR(|xaW!O!k|bAVyn2r>S|vx8%MnxakZt*6`mV~2CDRp`*nmGm1%xBe2%rT4 zAjQ37(zayYFgjb%jJ4|I{N$0;po@XD%Ux&1k7h(EQ}gO z^izls_8~TcKiZaUNRoVOD4T@2)Uy){u>WkV(v2M!c7XZWF2$ z+SDy)`KhLF>$1(cORMMC?mIe!fA%Pf-ez2G4s{&zHy9_dvb!b1WTaXGy9`yMXe?-9IpA8K1FJ8Om6}^5 zKgrQk0=Ua{h40^9X{CQSqxu*m$*O$du}2%xS<1KxazqI|0w)wjeqhAHBX-N1)}+Ks z*H=$#(!NK9tm+lJPyv3-T16g?Rtf}KG@ePQ3r!EW_Kj+*8Gg7c#pFIxEyhOssxLC3 zwEJD#QbF=n2MHbSRm?(lF(NU;?RnDQIen5TFZ?KWgkS25@Itj@yuM_D)qv@Z8~-b% zlK+?g-Ev`@2*5=NYarr(0vZh#0bHoG!=NEi9Tt7q6@KilfaO<&DEG z`jSPM97Pan&Cc~)

+&8?OXvt7$NPlBQTx$;}cj7bz*7vG=?9%-soXq#jTZJVV}Q z9A%0D8J_YsKwZZsw*elNp)`Pz_Olw=XxZJG_&7{{_o6rN>*A8hwVY4dLHji&a#TMA zsuaK3iIr}=>%bFku*S`kl}d$bdu}d8Nfm#F9Qbc9mGEDcwOKC)VgR307kTs~p(2!qR7i z5W6w>LV<-!qMEbmIfkca(Jd~jIPCDBh5U`NE|gMbzaryeq_WEPBo{7ifluV-^qIJ+|akwlA`_xpMdlE77|FZA?^=!8s6>*oX^NQ}5g-XA{4s{FO2b}bz=tHKG zLmhNFvc)E_1to+$?PtLt;`F~!f@18RyF|Y@I=^;z(B;~zX+F55{r26h3x5368l`13 zBvER^&^E18&37<+4B%-$)Ia@8ES{H+A1Yu+5;Urc?Ozh>Ft;1>0SlK5JHW9t;`<>+Hik)s0;s!`~CmRcNF)o;Wn5C6+m+9-r!Hrw=wJ$7eJ+# zbm9w|%iFPB?!+Q=%(p~$_8s<7#`!az(YmK&nTdq?Dz(=uDkbmxd`+M~(4Gx%Rs|wG z9SLOjS8uZ=9N$f13gw#V?_w<@wEY0)sLGzpid6Dt9_KJ;hFYSw8Q4~=K6W}5c?|U} z`zI*zaxYUumoDGi2;SvFt>^mx1ho|qAcG%a8*OW-S>(1HkH;az&2w0qj|lw}9e^EA z!T{x)w~2TL&^tuV{{Qm5KtE%_ZTv#qaA%t0aBVJdE>78z>>E$3B|+@_%q)L!TIh>(a*OAvNDKhBk@d&_$&A(i>1$!! zsggO9W6S{&Ubo!Rs)!+!TxW*f8#9yFK|^9}q+jiO1|uj}HP8BLA%>UBmPXpqha^RL zMJ_n;ZFV5hNyl=7`YX5SopIq`dr9S$B5TyM@$v&klTjtS}K78=KLfZ-D}uE$(laJ zUbz*Yc+Ss)FVpKR>xV-Tr%B57naJ-@E^iz|Hqb`Qe4W|mD=KiNfe+X1{~CjG)rzOg z53dHI?<534m+nMX%*|6=k|_0zcbWoQ<&>dejn#kM*-0@g;}xBw*iVvqVvX1>8>B)U z!;M?}e?d|d(k?Xou-(@77-(wEvGPtG;-%k;v*vg`&~%S{QmW}Q3;S6!-6{ZA2rw_wJHD0zI9F3NLDR`qT?xH_fI+#SsU)GK0t z$p}`dFyoc{*NCu_WR+%kIEK5*f!}+JdLlo~4XLFu8mo7|U1NWs*M&CtVeRAR-E}fekKL1E0qq;Hl$bGj!sI7gMk~f~IrA8gO(xyI z-EC25)oGi|48C;lkh+MO6iaBrjP6rQO78Q9MmnldZOk|05&bn2n73)|!>Fx^ebeHl zwjbM^L+vg!%)e_@8O$!SX!;@U@gv#sd;X~*6Y*_q>OO60MnExm0~;e0LV0e14pkx= z5Gal0$v3i@-mw}dV2L*eFNu42hSLgq=0PF`mg#gDwatYD*YAg~mW`H6)K}9k=si4W zIVY2$t0Da@@tTzBcO5p>;ujECIE(&$Px~2#!X;kLCCj|SKjPbs>MKUBt;TpZT=obW z`NlS)Xc^_4)Q{{IIZQYDSb@!>zW)&wluCPGcc$a^lPjvUYS(7ii}D4`Au5;vc`nRX zPKG~2o_412$L5`^DGMDh6_*;%zNZ#^P<1Tx@xg@;AQ6l2P<3X{PtY-SQ#%5h6QMv( zCpZUW#7DST{}2eQyH|A8uImqRT{HXz*02$9<_Ay~M&nztlH3^EOyqOLwc~#4+l@)P z-d)zW7kw=MU^yc+9Bj;&>^T1Tb`tX#2$)>}nSwrrfDyOye$@0}f$C0`ut|*}OUncW z8(qn+kcf^WF<)YuA0KShdkemwg)ssY=0%9|WQFDc@8aiYNX21_eCoj!@!Wy&cV5YZ zie_*^pZ!eB?8M`jHME*hrM@jt4kr~&>C_h6qhwYr?1=9v-%8icoZ#~~gJi9jO@HWI z+y@elEJWy$InYF-w|;8UB#cl^e~SM{`sqfZACXH{xr){C$ zk@J%U;?vzffc0S=!ot8pekxZJ?vRR`jo@ZvrRoz(ALBo3`-UF6tMI~Dp=p&P+C8O& z+}~8Q9fM(Mn1LU=yCf_)Tkfklx3fkur^1vIr!|hWxXu_^EJ=5rJ?6OHY4q;Si}iwx zZ1|GPq5(*{8SAw6O!ySlGnZ-w1>>Ld)(;?_hu)7h`Vmds86YfOaQV8KNQM$E32Vm; z!OzyzRi_HiK+hcfcqb$|o_CJb{>{x2ho14^17JZ^TkipC@pS!mc$ti4v#+ouX=OWf zzHxr@g!;v^hsp7`)9!!UYI}Q96}0O+6OL`ptFxKbA=$KiRO9aj#OrUp){U=CzFf)C z;$WlL>Nj1M+)xQegERPY}NW1cJ{jQin`_V(Uc1lB$SASd)F$YY@*-B!21v@2o zg8F{B#gZvIBqtUzxi8OcbRkJp`ACWAf%7{4hoU#`=7uBLsJSz8;f3nAiV$W4=gTJy zxa%sS_&Q?uyI1dPD!O=Z`pS_s&nVDtXVeaj;!kbKw{f(U|6T_J#u%G4%xh_^rxO*= z)+y`JTCTfp__Eipn*ej$*!_AbS*fOEZGj`cBk{vbUI<;fcV!eaNP(9zYQG9V2G?50VY&70BJ6Y(vfT7qvve=}QswsK zS(4E#yX#i%Gc7}B+9APG9>LIBf4*}~e5dPNm|Q>^4XGbWdWLF*7VcmlY+x%81PXTR za>Z(|G2Q?~3ys?8CFDleX^}RxNzkUa!_L0E!eWCIE0puy4jLmhN$GN&j*ngP3fFF^ zJYAcnMD1XLtd#DJy~U zYOFn+(=X(`i-t$fn2YrrqJH#FJJ*_-eC4?%zeW8&s@9&M4k2LVxG%eazB}OcEk5;g zUA%J}*S^w|C&nWFq^gT&qJwqn=#?)Z5$o?zH9xVtg9tX7ncwrqfcLrn{_mE*DXqS) z^el^t`5I#Ge)%SnacQ~42~exIsL!V+%=iXlgchw5=hJ0Y@Q<)btq#wcRmIlM3UQu! zgsQzF@~5d@LHQLSHsSJ(Ug9Cb8kaNnn7Rh3siCqk$C*Ft(CQk&wdiGfo8$e?@Y@qT zlX_p+K8T8FeTPa>2~*H$Ca0eRp=FYf8d{St~Vd&97o0P80hU|JEd=SrT3Z?%MWLuge4rxrfxlx zNGgu0Gba@4&;2pB%OT8TceweFS2|tZ_AI_#X$kRdXE3oqH|-9z*{bq6))5|^vhc)9 z14(Goq}?Q6UZV9W3X# zNV(A}wXVX=PGyaL(G|_z(5@aFbXMDMyH$jh{wFnL##QC|w=ME?+`*6ci{)e-q`k$_ z$~wHPMasb{`#K~q{ZSX$X2HL(((=*I*QyWUk1GD5!i&_VB%&a1ULYOrr9PcKumH+q zNk{?hGNX2~DJ5jyXNpikgmPq)Rd`DwvE}P?!9xn?%?;+D>~a(4&RwcfW-s+$wkS{LhTa(ln9h_k%7(t5xTw3{DAlF_1sVt}$A2MvX` zqc1V_2=s&J9`qOwA%fFEK|9V`Lhi{TSffZOHk$4-jf0GOHmn@u&y~6f3b*+ZZ#>81 z4|=hjmX@*s-G|U1TecCo>+EOXPb*U{)yJEB8X0N7_Gf;JXQ|&|mb0LJ@gRxnx8S1X z7UTiCHkmCNBThH#D-Q(5B8@oKphs6uuiKfNfv8QpC*H7r+Mgs&-YN>D1d;JiH=$1_ zPf_pB)LYVgg47^ox0kNZP4v%RHWW`g&=`K zzvXclEv;hzX=0tFOrNDDgT z6Mud(@#efUV^Z@un+p-hW2RfeZAtKLcA(xN;cpIS#z@p(`81|0IiaB1n6SilUiWd; z+oS7IJ1UJ>7P>i^w{a-r+_2_ZXCAB7oWqmW+U&D!e^iYJPY?64K7PBuN43QVUkYz# z_%_$Tqw1t*0@3BmOo7BqmCQ=T_9K~H;JRBc=o3wHi1>YLuPj@zr2sgkyOK*AE5Adj z%a;A>8Zf^vWhdIVc@-|6nT5%0b6nE$%pAx>+j6=HB1r8K>?IST7EFnRr zu@QBr-Y!)Jpr39zy(Ji%O~7Ear+G*60=R|}jTW^yE@x~-1JDu3}mbnl2f zyJzTQT}Y#5;V)Mv*Anm7-vTYSe1au@}jhKKKm z!>!)?S?4LAr}9BTdb#Aw{gkDF*SBl#o?F}R9@-V^ z9ugmTgYA2nCBWL*na8MY1i7XOIqPAj=rX@+-HV-opu~5vS8hJYy5rI0sc=BEs;&Fm z(PD}XIqoSSQ;)Epf}U``=)A2dQia<;`_*Pt>+^+if9V%Fp6%nh*FpO>WwlJTQZEIsM$ z(H}bx*;q+xv5mo+PqOM@GYi4Y(}+LGK}qNwzepx0e1F?Xm(*0%5gWrZhty>c3317; zc-v*{_qU9a*}{%yw<1r}^dr23W`w{uYG@j($tcL{YpXUZC*1i&(=LEQ*~E`avGfBo zrS-_*CrD|!!uPTQvdjBrl`Mh9>+;x?_m0T|Z}e^XFh7JGsbOTXW;GEa-xTV|9q3ap z4FlZQn(}o!xO}Np&rD9_xa||KA{R<5Feqr51Y1E=83HJiN~og(XuuXqQ{3FQ zna;hD7BF8xTA-A<%F@j0&`pzP%jKLnx|`~5bdFD7y~Or4=GDG$2IVlyd$Mw|f4-me zmkgl+Sw)7m73R31#=Am+wqutM7`*U_|Juf^zQOj*>!z|#fgNoBXT{hTttABpbK}AC z@on*bOU}-q|C`$s|GVG2bUVuTwLNP-+rQV}1j$#6A0G4Su4cPB})gM@f zrLumNA?8m`Ab~POS6E$D$`DwtGgSXhJmhuIpdil*?QQbV*8aHTrO(i`@p}f3emC$Qqofp2*~}n(d_41@QKAWx(l7XB}lgeCM;u^ z*y3Mx&fG3|cF3){y?%e9fcf+bfIbDL+9zkwf<7i{>30 zhi{3$np>$hpBOWyY+5I4{(bIi7V-$fvGn){lZV{%k}sanWSQ}(R>vpr;lmd+=~kfn z9$5pF6aq;@C`SG#XdL)ueg1j}N4u)T+BD=yD~FN;ZTf$}L9vr$hE_1pBV3z!ZbT`&0{ z-fkxveB}nn?!}#8;a#=il>}1%ZA@VCiqoSzI8R-B4|1!?=h<-Kt`M8G5TpPVK3$YT zu@&r_>Cbu*k=Ou>H&f&Bk%&Y5@%W;96o`BlJ4+P>T8?y?-<^}cK-L5B$51Qm=v|J) zKtqHoY1wZYanEaw`e8^!)YiW*sJqs^)Tbx1NWt(vX{~7t8dDDDwRU1!KJ`ARUEjTs zeriKZ;L?aSFlfReEf_33AFTP9k&d|ao-RUtN$B10m$fQ$+6m5DQK=GrI?5=gB>91S zJs+Rv01UHlYr>ZjMVgC?-Gm%=Y+@b{(lvXfvzGHUUfVUP)h0wt^uPl)Q8^85FI!FO zTsVnkJ#@91-$~_LUkp>UiKQmf|*CC3e!2w$(q97PnXudR95P5 z-!QDKVqY-`8)s(;xgw%YH>LXCC+kwGY*@@Q0t3%_4Za*336bnN!rdSm(gW7|(uNqq zH<$=GqgfH|l8tfvMyb3(W3unY#n|l1Jy0P%?u_BijSP(~j3Cv!?lI|Ic&?TvTQ;UgT!1OCHZ{9wcc$ze%@vN^5uK%?4`$V)8h5l?o3LN z-oGRm3EN2D?Vld_C?Q&=z#bj@gtJ|2;NCa3c;@%xBXlz=M`7=D%r%^~wHEg@jlD~* zGx|ta8R?qaBVnXfHA$BM3)_+l4>&yGvg?!VpL@Fn=It8fDR?yIIIB$g)6R;0tnNK( zq0-ePaN`;~UB0ZYf;5@tMRgn3zxZZ0*`0-Dt)xvjvC{?md9BGP&^&$@#qmx-4>xOV z{p@~B9PMd?E}iu-XhS44C6sQ=_@E9WxXO#GvGZh&U5+rz(!p^75hdun@%Z`yg{a;5 z&+2m1G9nFX>Q=UqxmxdU>v)_BcaIM!J<%oNp+8f;$TAA zo37q-Bjb8aqAxxgsP5O3WQ}I0e1rzqly8SIHJvqCzpEQTqUb_GrByHAZP-9Y0)5}W5h z@F7um+bzOc7!piP6*r?sYDcXvNsJ`xt#M`g69SIu&5}G+KhW7oCJiVKw~XbcT|tY= zkF`bv@#=kqD)w0-Th(2MVD;2y^g2QqsDS>Y1ynMp0{n^-IJ~exm9stbT6Kn# z!bymG_B8#l?U=#>uSav=px8iJ%pXbvV)K_%-#kpu*31`rYQ756+#2(XY)XMWSA4Ts z|DaV!r}6$Xnbi{>X&&GbwoJh&&`g~T?W&(hV+MD!wGFb#LO|sz?7p{PLQnIQ)C~_+ z^@RSk;mc&h=03y~M)Fp@x8je@X;f}djtuNny4}V;c0I!WEAUM2oE&BsgxxFVs@!Q( zr=j>Gq2u%OPT6LV5!k87QWo26PZ-=ECX>_5+3j-P;q0lGT4I?e&t07gz0?8}daP8= zbPL=B=vuw(@XfMh^YTjXj1~u|rn0qL0Un8uCId#uMUq(>A zbnN2`x+-n~C%Td$T4dj+bz+%|$&}sP5x1C@!IpxLFQpaE<+HJdK0f(E%|38JM4L*R ziVS6*vDNi2UMv}(%v#|!)g!gv^kTme)3luClP}NgK^@KNlkplL4M@AVK9)^zZSFet zg8cvtTun|0ZVpKZxgzXMyN&{wvjo7LfjZY5o^p|9_>KlR5=}V_q50ZQ%)ld&!sOVJ zEa#e5G^Lio124O6w4j%9J@sX2_&tHw-=;$Z15=C)r+XvI;rvdM=WF}v_+w6Ff1Y7r z?{%4=V?rv>TX6%zn8slB4M0b0V)!ZM@DhiUfWfX88LIAh=!{Zl_3pW9yOsBKxzp$- zNQmZnl5A=objkhBlJq0=*s)3H$vf2KO!_ZRSNbM;h|Kd}-uB}KV=gY5_j4IF;Zji%S0`aq7lDqYH{>Ywj> zhru|kOI#FtvflBCw!RM(y_JvstlPo?)*=}VKk+7B!(SUxtnEN~e$e~GYoRL2BX<6y zAotP*2sle!WjaQ(VfRlp+voQWq}~Tlgzo>+>k$|qn9xzA)rtpbF(AI+9Fymw#_r(^ z-d-)7^Ak44E4S{81x=kSH;BBPQ)64{9r`+01O`$ zP3oUHjmmXAruWiNqe9%K;0$nnw!r#XA#ou+qTa3*EnIgZlPXNRT}c*x^FhJ7q@ui{ zT3;gN+J$^EHVwTVUBLzJp}2jEBBaQsX(z>YH^qaQ)?S~hzUFfx7rTyoTsWxOqvLs3 zC~hT})MPTiLsVCmc<9>2we6{YOmnG63+&MT7A!)wo35=tLQx{8caOXBQgX-SL@iiP z@U#=ygy)sT29CLmVI3elr!)a6mZIaR#UIj`A-d9gzvoTcY7&gBuAIC7gT42RhO=$k zh9!~^B_bj^NwnzEJ3$bHiQY#9Q3ew&ItfAa=pjl38GUrY=)L#edymma&3npyKWkla zxvX!k?|J{c>-wLZ<~V1L?bx@n?}x;kjCp{8GL`(-v}<^YcjJkX9bcx#Z}duauU9mF zA7RjVInh~gN8`9nMkuVW3&Y24AV$8yqv8%K5GJLyUmNq`l`8`3_4zjOp(UC7dRlry z{;9~L<5!!5bwz5<*FKp#X$wr5U$L&DDt*grOtsUWKDf@XX~yJFVKDtYB+-nt(U%+Z z+ehF4XJ%ioEww8yFx!3w;+RgmPMweLEKo2 z7q7ld%{v*I%?5!_c%K};)Y`j|oP69_VlyzYWM!Q#V=q?Kq+?EqSr-j-j`TTV1Abwr zX%r`w-aV!>7Mof9b@@`Tlg3xD%^PJ2Bo6eFsP~B#!EjC2N(FmOQY!A*R)!{iDU98( zn7^xUL1g8LN0$4J?4Y!2!MMnzOz*n61@%^z#Vd^m!8GfVS5yqQ-k`0jnV`?(d4V70 zqIi$Qk0rVg@>Y})H;Sz-v!JY>X`VtupKUF^BcTNGNs*GV zzmUHU8=5>OHFHOUal?G-4hZx_rjcaj*bxbQg2i?PKwiWL6i7S45%|d-YtRdM1Kf=nDL0^{+l|qb}yh}@k8709ML|N166~Lu;HiS+Ujr@ zpc^VwVpi`69q6B0ip)5rL)lGl5JR-+vND!`p+Wk%G!aKP5z7S4t}VkgIk+uApn~sk zprSBo808~f-m{D8)@|U7J=%G1rfl}5s<+rRLxLv$uXw?B?l|Kp|2;Bf-#|zKOs+iU zRON-tR(*Y&xz&0 zr^5rsi@A9Al_l{-nzFA38&!S11yMo06E(&2Ot@`<5KRVG;}*E7X7;}P(tP`%3}5;| zPFnRZw0I9h)D)<8!xPMh6fQ&g9WWzg(4Q5D=$Zi+PHx}He)kD$jgfCjtTXM1N(^}# zH|!)50QMJQw;o)L}L*+2ct& z=bka}4b^WJpVrde9WZ&F)$9d;SNAWvY%ao1!;u;@i}*kI)nJpHR@cz^5wlP2KQMa*ka_CK4@D zq-|cm^3!fsqcIjWw$p913jG?g>Ua3aFlLz$4lGM+!u7Ma|eSP?L&dE`qMcbA@9DPH7A@&!zKxscnM3#=b5C8u%tjj~~EX z7zSqw26xt#ww3cDTLwlN7Wl{8QkCD{jeT@26hv;2hIXh>G9?UXo@BvK`fYzecRqF- z$T{Y{y-uu@6<77XVajGhN8wU@c}I4{in83O6}`5D`5T?CMZM-($)Jt|wZBbh$ghOJ zamO9}r?S5Szf3p`M7Z7XF4RCLBjH;{q(}>7gn>jNP3;OWMA3;9?Ew4#Ygw^_H@pu* zK^GmeSEo-RQ~jY-!;RGs2Bs*XxYh+8KPi6yHpnT|>8wKdiidsT?LHT}Qn^R=3U`7noj8v-X|^gUe8YU*pg$A$dFnm zxuU7SkKa_%siR)$usscAfatWV0pH4@kd0bI#VdxNx`P8f5$8(PEZ~=VCb09M{Fmqq%JG)=UmhP~jAnoxll(F%jdw83g>Zf4%s6auWM#vs=6Nt(M^^C zNxtQ@Q*`U;F%_VMVjs6V(Hc8A*X~ggb~En;vQDm*+Qq(l^kAYhSK2(6=9I3$1btx= z=p}7NIy9bEi)`<@mXIVsSCku96 zd%<&Wh%b;IUC22`NE`S!6$0fwth?=k>w~1v8=UF4lY?8VRTeR;cpo8nr0-s7KJ87| z5_i%5g{A|{Y3c4B{CNCy^KIdD@UZc89jWfxp>9z!bupr%n1-VfSh&77d&CMGc5 z%2j>F9cQ_Mqswx~;??MSjKzpo4DQ;OcMp8plJT1;aE+URKW^i|A$qetxmMIC>7#h0 zGAExZ#pAljrnTXw-LH62$5u%ARIukMg_%Gm_`&H!e{wp0B#jdIC$uW_X`bv{q!}WaZ3F- zwzwXCxa7WL;fg-Jfj8u!{xrXbtIR!bdBE!9S087QdWyWdFjP!y7a-c$*NV{gBgDP~ zC*14)U4t*J!2(j-3O4(iesIz8tM5ddPeOz=lO1?Z2}E%qP7&ErX`?F^bgd*iCIPP?#8oD3bT$dBvV!Ct*oRKEq9-pg7Ti*DY3co zkA`loMUo-c?5U!wMUJu1fJwtjS}xB|k_+8$qE_qjmqhOMu6Ji`I!q+>7F3_AUT$JH=*oDTqAl&kdxmL9+2+4 z;X<(~U}C&^FOXusk10x`-L_r zrYpKmvFSJZq}NXLs^(IuckT>@u>yP5rze#6^DTqvF|71Go?tmPa`(9bxiMTLlpeAY z)XPSVZ&r*m7}bI)XyoEjLeVeI&`6@}hqlx5|94){zyJT;r8A*`Nmrt$&+xn|*H?iG zXaTMRr#=C!`nh)~?bC_Mooq9--Ih&vZz`<94J;QsljkZ#8tF~O)p zXGt|r<^0mpm=Urcv?V?#=Il)*y(d$*q-S;dO=>cy8K6XV`x?LqmKBsN_fijdU1O_N zA+|;9ZU4iw2}ksi{~ObdfDuc|`F)7aJl$%$d7fsWX!JFxglBaI_qOO7V6$;^o;Hw( z?wQSGe6(HdNrD1SoJYyesjYs$)=iB;CIO)sZ8t}4w@AUx^Hzg3Vzq$^YnMW&s zO{XbKB!M{zOzwUOI~stKF<1Z$Doq7wCv;Q!)Sv29YcJtg6-Yu80*#DWz(vU2K+Lxl z-1`g7FA2!S)PoM0-47rm?wcxCR>Rc+F{q~a?B;UG;9qDg&Y)Aqzx~A*7}<(oX<**M z*(lFaK7^|5nKVR>=QW$p2Qz|5nKVk5~ozCy^^*1(z$j-*sb9_+IIbdGY^^ znYjqil%B`Vq$hl)uVV9cu+w41_rdgBh16FVqD)4m+u&g^UYc9IJ5Hgl_{!c)ry}QA zOYbwagLh+fVef;L!Iq41>H>Bq)v}5e>lu1;KV79jzBN+b)Heg+jJ7M*laW~V^A=h2 zWZJDZBLycm^8Il=jV}rjh9pMC(T0q|3b>jjrQRJF@iQtOcS%fXUZyAYh4mn|r}e7v zFptS9D-g&rq8IJXck0=H{NV8TI`@(?c2Iw218c}(vQ{9-Go3jYHd&`1ZQvT9a!A?V ztDqXk)aR$X?kZH6J3nJOW#Ip!wl6$&d4n&7$!^~7W8gq>2~Ih17!9wyC=p5TEfe43WKtgBx!DtwPr`u+{EtLz>! zqzBko<~N*MKU+M&xFIu#St5Kx-q^jy2r!ioZ!K4%h^SEgcpoQk*#h@Kkc5d1CdKHA z$SA34(6ATH^OO5+xuf(uy(+io)7+<=-Ms|1>l@ylWn7Av+O`f!xMhWg4tF02t`jpb zIh8c(g>2jt@XAg>i|<$<`yo>mdJ{ccS~28#A2)=87JmcIvew-}m`$ruE#gU+Q$c>r z-(5k7dM%707GzR@ns-z+{?s)3d2S0LIs>bo#633XT{B0>;MR3%w!HqR-S+Ci$LeMZ zhpe#-XR_36x53_x;-xp@@z-Y^>6K)?Cd*q&vbwjnwN7;=Io(eQ*Z?Q7%O05HQ1#;% zT0A=@z?6q%Xc*N|2y8>{0oH@IZ?5_y2LB&C6nf7Z8>q`<-^wE%~OY&5MtWJ?o=km~R4ja2-zDM@sXdfJmNn9UP07Wv3QlQnT|a7BOBa(OlJA)t5aRl=et@ zP@`UE@_Ufnw(t#6ViOL5ZxAP&GV<%%Kbq;gY_xW#4xwx6$X3}t7O2JAF1~O<2A2{1 zb6|@Y3GpuB1|gs0E1HC2Ki$lYLu#FtNNt(MBZ16?!b&a`i;;nFIEutxgrVDf(SeoQ z8Iw-JJ4h~EO?gR7NYP>@?%tNI$E12ryfL4~Y>Cusk$33rj(P#2hVDM`{F^+9aI>P~ zja0qXg|_Yq4hHipRqH*$7^grp44x3~jD;w;Ckxv9A}6ZdD;Z(@Vu(6qGRx-ZxxH|C ztRwWe6Z&K4H0zVA-j`KwVHoQ~2hT#$;Nr+3cobqV!t@YCY{Fhfz3OBw5K9R8QH{~H zeYVc1vvsQWvBE8xcL{{svbemUpK;q{_=tD8yFW%g*taDO;@p*KrOUVwg{kCJbqDBRg#a zB5CR~hJyvzkfy@xzSFqEz0bybiOsQ6q%SpC%CF4YT;yA zcT?sz4oM8src4JFtNOy1movY8+ZdFjKZu@0MmxBldX_>@uQ#4@LqUUFW{xQ-gpHReS4fPEG;~VC|!i9y9$wsUy*AL~m?tz=e3P_i=*ja)CS0aK5JU z6Jx-*TV=mCU^7uwa?UudLyL=I}T4W}f1wiJqnt|F(@IIU!BuV7t! zaH4a&RPBfFOcL$d{g~~yCnT*=iY<)2VQowucPjiIE2-_;`2H+)%QDEIE)Se9pLtNr zjmWr<(KXe(QHZU}gDyPZ#`DS3lV8&E|aa*X$Owd120MJx93 zNObgTJ2M3$)Gh!*F*>}K#{dVJ+8)r#XukZ^Fd9B*&7{gW(eRTgp>XGD{gB)S_FiM+ znMzoq-G+5G#LfjVP#MMBb~ZTV55(8vxd0o%=XO0@m5f;(UZz)}<3#v*0DsUhy0ZW#aiI0IS{%2Ib~$((n?988gH@fUR%Kp~5zF(&y;WnhJ?FDfz{vL*a;WQDBhjQk$H3p`nSCaL-unN zSDXi_HkGF^KDcq{4NW+NVyAu2^ZoW=bd30&lC?Dk81gMSgHip1asp&|F)Nr87lh8N z?fo!0Nm|cQl3yEE))rZA*V_gd$;C1u2`|otZtQKb3aH;SpoRk1&^)R2oT9VA0ESSy}Cvq@G}6U91;iiQTx~0N20P z^rpMn+ONeGlisfnPPFN>7L43(6rtOggGiroF;h4FTE|SGzvU;ZuxozTwkc;O>U!gK$|NXMhx&^;0hYx z!BrD-Ihs_QVoCFD>~Lf8gzM6-J>uwjR;?)GgEcW` zkJit?>W$HLv8F0v{_NWN3BsJsN^d&~3>8f(Q02#3j)o)Rv>o9LS?kPYaIzAxHRiK| z%;kk}tjvg=LL(@I7w@K6R%~!;*$(PG5dC9gnC&HGXsk4C7&t;5KE7#(GB#b=;p3jx zL)Io>yDzpX0Tt68@N##8FT=)?rM?DPQ?(B&E??XemuGVhCctUihv<{tzQx`J>W!C4efya?+x4=b(P~=YV5iP!PYPFp5k(Eg&bz97{g$-? zdpMAoZCWb#4XE>r%x4*k37Cz1Qk&Bg{y6QMTvSk3rl|s=_ITrIJXTCIznLWR?BBS5 zH#YYDU<^P7rhU$OhC3ruexbczKP8ON`rOZxrtBXa8*_3ilalH|9A+z#ZyITwifMhy z(pdk_mhiz};Z=nV=pb7T`^?5ICn%Gf!0P-#s(Qo2tRunT-WPofW3-244v{oC)^AhM zY<39ef1%wGeJzT9tg^|uI&xAtSL*rnQ>4dol5R%t``zsHo-AT;fN~T-F&z1Ts|_Q@ ztomuOoK^vR+Uag~Gyd8*i+e*_MINePZ}2X|o`mM`76go-l0We~B{9|V%33dv|3+UF z@j9Sz8^7ckH8th8@);N&^V6`sO}WA|Xo5s5wVLt)c|+CMf#L4_h5k%{nx@cjq9dASz&m z?3%UUZnnE=&|-0ZFi>bkukTYP^ylGaY`eaO70izgH;fI893Sb)jaryHOB%`mYvna` zg(^rZdt})Y-#?^0TdUI9TFpwm`q%5@zZsWAeE*cSeWk>g9-Z=gDf^u|sfikfGgRv2 zWJ!taw?6I8;A3HFCHyZce|8 z;VQa^OF*8PQ}8@3%UZq&A(4}Ra87$FtWz`x>8bIP-9_)IQg6smBtu|*bvPjgHQLTX ziK$9MNs3ymic9k3lG9L|hy>Q1NCE;SRRIQNKTv;KndzJpMSCC58=?I>$+y3@%1~cd zrA&^Gh&o@M$^9e22kwDBw_6ACg;Wg7KM;T|CzJTCSNJ8htR1}^Yt*}?uw*B)t%L_b z{h4-#_PK~+#8bZ4#Sw;RhvcNLdx?pa4$QgK(O^u6DPxCeWlYG2bB`wT=yvG)vJQ8n3t6 zt4MIIlnAm#GLbc7h1#-~|5R-DOZ)@*AyO9rBoojmac=joQr&VRUz)@^ z=A`ue+Q_BlVvR`8Z!)xKvv%b6x;Zm1sOBNpJh>z7rY}JUlm2oAoV@7zA072O7Nxsy$%M?8|#RU>ffk6Xto&rz{KXx9eWc1tHXd zApD;kgh4GWAYdd3^T$C^rNr}FRMcr=a%3OVuwurgVnVn2+ufwgM|C9}uY#bAAnbt5 zkQ^iZ70gxD3n{rOpr4rw;ZMg2iuDXU?Ol6#yCzR$4@(&2G<(YEf`$xkkUJvlyaV+A z3@CEF_~Pt&8%sgq$!fc;N`#Rt($5Cacy@Ca^wXw{{NL26gqy5xJc2RV?mLDKW|um~ zxgXPkfjIfspTHX4Tm3={gd}Bt%nl&YFyx5!5QbE_pL@|8q^<#47G8z1Xdf+RG(NF6 zk9@t-*`?;-_{wmy*yA@-hH)fC^eCQoWC;XoZ;MHdXPL?Z&(=BuIAk=x$F@p-0l*;_ ze>^p(MA0P%H<024rN&Ie{%pLW_LD<=M&SW4uk}x=uJ`Z!mNP_l~$0_V>WI za0QHkk`vxNCX`W%*}dYTJ*SWHBdReRgKbjt_X7f){2J`oTP(z5b$%C88;RacwBj6D zzNzWjDrxl@d!RU7$I&_GdZRHEOfo-i>PP?D{peey{H%(apu}sNS`jm+k558QDIFH; zM!d_@MAPFnkQ?w?(C+f3(!Ip98NX(I@ zuGHG|d%OjIR0+MC5LUV5$qsv$qQu0O!O$>LA}Kl9EvpwDLLb0IJRY)J&QGC$RXFz2 zbICC+(?vRY#pWaPuAE>AaC~8Zcw4pc4${EQHUyuJ%t+M*k7=&ZIY(=mVog3K`yBd) zeFgFr1w9i`ruBToz+Eixhkf_xKXC2KKU}v&P^H+2f9G#!==BRmB^*!|y6}jR-iaWW zmsT2~S76Y~clp^0l<@s=16;;$vC=s-gU~1ofrRBbwkY5gpcUcO9y|5f@}WsAL-k0N zXJ^--=lR{iWd1al9Wo>)vJVvW)sfvTD{1Z~197}5B`;Il_7O?Yx_uT=onAX*+gw1H zA-SPxv7m_+tn8^~`FC0l7rK<~4>^HNdrO=pF-2WN}%n& zu=hbM5_n2VNif7rc-G+f0z@HZb&mf0?g01hLMSvT)}SmK__s*1<~7kod~P6^{;0CS zA(sK9x-jYIW_iXgzu++FjMDr%Tm>-CRm0x_DhF@D?q@~6`JuBlqfIV2mb`UM}z zN$5X4oZBJc22Q9y-?qvnT)+7|K;B*LBqA9J_>KOYtxJaekG2g~`#x+GyiCqoS)_22 zMrf?uD-FNuEcn@Sn*QoDnp-6lQj(l6`ZI0Ar7IA{`O>u@_3o*sTzwOnORtB<>#SH@OuU3{QD)<|u}C?IE-gj@Oisb2yJ5NJZw zo1v!-+jXCG<+;P<@6t_7)m;q>`y{ZfBYOOJv1amMtFIC%Tv?Nsp-lR{pV7){J4`RJ z-?Mg(Gm+%gCO5TmdLUmxIay3aymTe?Ur^S}Yyaa;9EZ*Ig*0PR9?tpBHy?+Dk@A`s z@_j_*WhA{{OEn3*+s_)H%6RnXAatd&Ac5pWkgfqCy;}@FTiXutvHsVl72mAoj%B4UXMokNPsYB zL;Xc*`H%d*=ldK5J%kl6dD&^E4EhG89%_6X9g_TwNee~=c_Z0+BizQwYZ^}@11DGC68qafIOn65Osk}~Xjo}YiE?%jli^Ug>4MbHQ)`;&NP&tB>bu`qrf z%wZv~g;21>1%6ZBx$4Z+MR!^oj|^q3*kvaf zvU7wA;ADp8`Xxw=AoTv&pjtEZegRQA9+39Y9b;Bq=|>p~pvQ1N*~3TGGTQwe^rg#( zg+ZA?d%ThRAAN8Jwld#QNqB-P`dDm-aQ34fkBHyG32VZ)cEX97JtaJ*Ku%V-iyXGr zz8RCaKKIR3vaUf%0|$qo*RKl|c&0?AO-FN4IPs_S&PC7~c}S31Du*;>sQ@0#kNQ@c`*I|@nC?4uJd?rGIRkfI{dla%MGSGYvahK^}G$bY>5~AK|$&f zYK}O8B|#v%oJ1iVm|2&Mqu}YsjkZUIeM{RfnfhWk3Vst|7B{J%i5VKpkAhttp|6A9 zWLYsb+yt;*`aJyPh%mYUt8Ne$X=ttcG$wyN_PdD}qTwNN0C~uu-}aw|7h^wr$QKoT zA}XH2CDZq{b9Rpy46FzrC~K$oDuK01;7$8wkW}b>ne}-YU|MA;4^F1A7=>BUg`B(s zADQLjA;bwY5zuOias41ptR_8CEuFTZ<6aLslYg4s4IF2lv3`$fq4OhvzIk;;rn!m2 zG21URGYyQd;0lMu7YVg-3*qEi68nV)Qn=3FowtnN;LzF~1aZR8sk~XXb|Hk_o=iC2 z%AcgO9Ps`C)$&4Ci@27yhTaYC_us6}ENH8j!FQs+x zaV!}>Bv?_S<2%26Dj+@p#S_KOqy4NJPHjQ{DtTjRo~mtE4tjT~I4t?zVflw`{+dRL7EbmZG)f5Y zV1Ox|JsI8M3uv$)Lwl!>nRZ*>l#Qg12XoGT72GXFsX9-zJ`=WOe{%aZ7xHepq|vSs z->CYd)Urbcxor-bO>a-KJdt7;by~GrS-@>qJZ|n_;ILA#x*nfqY!4h()o+4^D3G`g z4Jk*2#~l53*cqe#!cRMGnB*U5FQD7pQMe&2Z%c&>^f&_Y3DYJAWaN6`oR&u&(mQ@R zSvPCYb0^zGrI9~HzzPuk34Wnb55T>fsKu3%d{bAnpDx!k?Lp&)fx6u(zqBFXXSJ%7 z9D5b|K;EAMAw>E`uD?=FNq#H=Zk;@V7oVWUZO21WbiV5w=ptCF7Ss2z1;sK zolHFAM+eVNmGD{lUmRlSQn-JDD#N#KJW6{+Zn;T*l1ReyWxS_Nj|PmiI?@_#S|+ zZX&|cXvH@s=5+>^4ji-GS)tK?H@zYUUram+8*K@znPs9eC(&^75E%40|FTDfsDZQZ znuD=Imu+DP*AeE2$C<(99>K~Jd9|H{45H9$X9s#vTSJhdY%Ew0Y!k7oqXhq|zz#mR)LsHo8GmFh)Ktw3Q~ya3(a*e2*Wgm}6Q2yD;%0`xMdV&R z>i7~uUYa3Wpzp-40O(4Ib5o{MX6jarD&Y*PnE*KTO4A<1dr}2(kx(ddm-CMYUCkOZ z3|r#QazeUZLgV-SVuf<=fJW75p6q z#Gn~NAkJ83tFa_bswY<#5b#U!RT?0uXTJQ6O`Zg}sao-Js)pP`O%Iqe)f~TR15g~k z3&u}$2o;|i7mqo)t2K$h+jnE)d!wMnWH#E6?R8f+i^AM>!V5_H**fLUb%fvQXl^- z4WAdi3|!$aE;NSH12SZB2mF)(+{el7LvpRAPMOKt?hGg@+OK{KJ8t`%=}~+UGD2$4 z%R^&8_6JbyJ?-}g#&d|d)^nrRoi2-pTs>`XaWdTfVmTDdgseBHh%<@{;WIBiomVZ zJdp%C?*&vg>`o}mJpV8A*0YXB%k>pKUhS-`{Dg^?57$9yh9Dc6}TA0{(G z>`2YzTGhD^DEBSwaOZ9cBhrLeIr5~cBYaY+v(zr+;OaFZggHoQZ`*YYIZXmk&PNHX zrlX-pyTYr%sI;?y2MOC6R7mD}U$5rVZgGpBI8PY(`O)Fr-AbwvOf?Lhg*)2=jnUq) z_mM2M_)3aNaKyLRtlsejIdJLnf*qib|212Z9hCR5^s$ltrxt6>UHFyruNh&w$8K75 zZ{W?<2gSaxo;1>%y~7X{)10374FeKZXT&%twk1eiM*2vgU_}_(ex2-XVG7gfb;t%l z84VY(+m$+c0LmCYji2K@732N)C=%FplX}kpDOwLA5GjX`g5^@VWNwhI}S-C6Y!W9|-Er)csMld(tS!*#rVJ(!C6b z+o9KSg?T&0?8C?^@>}CfFnq>Mzdd~U17Q1XS+6)?71HEm<$bV73Q&nVAx}DpPrEqn zboOA;vj2}}?7A|P%tULPvVS!ibkysOEBP9P(XYFiNBP7q3NXW0;(hWM)y&oV1A zVPt0WghcL=3~sNV#y{>dcq=`yGiS%gIB4a8m$>jf7dW@lI_~H9Gyhy@aQVTCKZ;&) z1y0;o`Kr=eD?8E7*~&OI`lpd;GLuV{B_TIgO?kfyz`SHg#QbT_}jhX zT>gcnNVkY~tj~*FFa<`@8TUD-e&p~q6Im52ZVEY*IKC9O_U$q@pmJBU*XWKLVoYs* z&4=bRAblQ;Ojho(o2e1;*m&sw@cs4%h5@;XCn|A1C6kqVr>-6dJ{*k$Rs0QYX{Pj) zlO!$MiO6}6h@*+Ez)FI#|NFVm6n-^ZxDo@XaA#|vk%un+245kLu#9X_{I;J`v7UW& zmH-6)=}#Zl`66Ek3ID_Ha+1Cb8FhBd3~0GB#2H28E4y|!hg^cOkOcHVl-pw zROLOO@VdZf8n8eAqF?+oyNA=C+p@}VAsu70$G=g(lPxh!C8<3au0&AL?Gaj>5o>oq zxoME9wesTT+E4wm53x7ze-fCpBe~lyp_bdDNO`z5(M~?CHKQ6pu*3nu{%3lh4>&OY z%*)4HigQc-7S~-xj@*2%F-(DZL+xl%b&tj}V#cZ1xZ(5d+d!7=kMbI#bU`!;3Hsx0 zJ4^plC}}{$aVCX+eJT_<*71iwcegMo`?s!kSXZRKP*mGh4uQM?5_GiPK$)-2V-=z8 z8_7}IXV?!queiqSMv-|{Zt>cC1bizN~JzM_We-~A0q(UCo^ zW+m<>{jv8V=l%W*NyBRwxlCq9f2HEU(9=usb%pdIPpDrp!c?rZTlOp#m>4M#e52LnA5!0ziODkF-2J+^&72E5W@ccei0?ss+n4 zeXPEUpcqlgmVyqLeHdf;_a?xt@VW8B@edis^V@q#VkTMH{>e3Z_;R!ludiUkcCdiNsIO0lkVM^dEAy;(ZJ}6XSVsL-T?U+&&UD9t>C=S z?${DL@^4xELN$nKrltSHf8tkRD+2;~f%>V=i116V!tvd$S(JC8mtrZSYsBa1p0g24Z$B#h@OcFD^fc`iG^ET|VTUv+$ zg{nkE-o&veQILLEs03IpGyk<*8U-8(1LwSC1c<EY8=W(bCsPlkT6Ym_6vE7ld;<{%Y{q5d1@yAz>t);=bs9xfC47`xOuPK3bDqixIN%As|W($?n6YGDE)TfVJNXJqC6srg7EJ6_= z+c8Uf61eDlzcdE&DCUuTdG*KZ^z`@b7D^dq^HLln`S&W~orbm__aQmzf4pLp<+9rk zSB@xkMl?ePb%i=A&kMYT-2+e6rEoGiNEE~<3#UZSz3lx!kp>o?nvo8)r#zd?&xq&N zU!W~6F$oFfazIC`f79gNXvLQ0M?geKElxV?;A@iQKtYOoRn~<8`xh7Fkvc1A+|Kgb zX*0%yg-4KPyBod_Sg!X+*2OlHGJCcKe-sx0$h!0QXx!Ctp-XwMQo*43&n^-;bu)&d`F{!8Ht(z$S`U&;?yl zOODi6dl6V*YXKt9o572iv2)9GDPfiZj5hZC_uu^$mzn_t^2*-E&Hb8w0|$*J}h{+E;PUl3tRp z?{eWi%QFCX2R6e^?hS^RVH4DlI)4v&TMWkQDM?f&UkG2Wmp%p^2WwT3-4DDe8$_3s zWkqHv)?Hm5xc|AfH8JNtVl8d+e2$;p{}>8@m``&8iQi*gq5t? z>d$R%n7rKd(^4K z$upYTt~lhCdy zFCpxPErsL=>`Lbd8||d|g~H>Kir0TPzRa}$o=*Y;9btdGag%?HCbi-TsU!ob^#A1k zIZ62eW6{you|vII7K?Er-I~RWbm2>KDJ@XyHGsZUlw?cC!;27PvJT4kU+FZo34OHsUZ;@G%^F?y#JqZk%WLFi*u#TA)l zP4~Z+Xk5U(epx<&$DFB40^gbrU5}+mB6)}EL5b^Nwm)}hmK8z0l-!UQ_rm%iXB2Bv zxGIePvwAG8>)qeEAA)h)3pzSslNa<~0%Z@@=`9p=Y9YbZX!?ic1CK35u5U9249quf z++40VagjRHAytrVF}KRedzQCkL-VR11Qs(i&8ejW9?aPPcrc5gtGS3zY4qZ&XCBPT ze?6GLH9r=ZUx16}x*5Q^$VDKCkA&Bvb z1)BVpsw2E57@DXD5Ey@CH^7^)q5AJb+L~3E-V?OG=;U$fXyhl?jeR2Nwc#0sUnWN^EG~7HN|;TJshP&gKlRjDd>>c+(U($aVW+w z1?WQ6sx&<4AB?MzMyTm_0#PLX3G6_CjeVL<3Y{kmKfDbhOarsc;+=)wgIwfOAtPB? zM=L~I2l-s~0e;$OZv<_#W1nU;Fbzrao^7Az*0d?czR)(t7W|?hb|w2A>)-{al#4S? zz=JQ3)5A@Y@EEuJ_cmn?fMf_KsRNek!@R@1Sc?oGd46&?PfW(wV=?5UpPl~+)3X5!ZVK@#berplFKtg^uRfbWBwZ4*FT=Z(822p(MLdOJ zrtbC^A5ag}>2G1`!x)ME@-mDJr->W()yo#b3gKNlerMhEb2a}P-SmK?z>BoppY=|g zb#Cn>TRjBrz0GGSu+q|DS4#Q3FZ8NnE`7ksBL2&QYiJL)9(Qr`Tmyl#Q|v8y$Il2H zs|beD1RSW{#A#e`dUO8aFe?=S4hQg+7exj~MHKCrPAm^`jf$>~^Yrw#nO1b(kz5d+ za817fDyetzIZ}4;pQa0&9kx7H-^|{xDNP9dB;ub`5XFYC*gyM$^8x?qeWpZU?x~ks zHxNfhbHkOy@cHT1I+Jkc`2deP){wJFgbmm7DL`iN4DJi(xV=0HaG#1Vg*M<}R&SEc z1P&w$$7imKB&3M(2mYj{@f6x}{e>1gm#TCVjoqM(a9A5#4j&YnjsQ`k$GqAa*&z6k zz&v8M2XfspO)5rN%v8PyKicGpqwrbB&T4cDOZK(MOx{y`rurVsFhZ5TfxS#5Oa;*Cd|3;`x%G z=_kJ^inel{BumdsE1`OWU<|~USL9qy0w+F*oZ(T8?2UhOWh~=ZP{+24z^A&a2DU~G z*{EEBL>u$1O(;67#CGr&`9haMc7Rd(?na_0d4z5{BmtS=;Pd>*wgNh|Zd9lE=EhxP z*j)#*J!PPFrmr6XmjJN3|Itn~r*+{ZXho-u(mawxzeCu16799P7aKEiRDQY* zjDOY256(DIA3cgi6wL<>6vA6wD-3tHgEEfDf%`DcqM{OzxySMtBXo|4)cFHt8-fCx zuGjEm(UTu;L@sj3jR5ZQJKIX3jWv-}BU)kdubNu%+FNjr8|Q`87k;4yi<+|GLMDs7 z;Pp&Q>rYUO!g}&$uev#!=Ov)mtld^cCjwC$x~fQ9tGB92&Q7O3(UFUMYjG_ajIr5j z6~5~$(T7lE#-0VxxT`-?Hwat^ILO_egAg^W46~JfD`IY(TJLn4VtkVFeSE|*5O3t6 z1ETJzx#U^XJ_(#030rqZt~Tgl3dwA;$(Qz#)tpkrj!w$Zeqm0Zl5$g78Iw)Ovg!JT zR{cZ-M+Uh7B9)oJ_P5|&?=j68X*ZeqIb#^aPcD7Cnem>xj60&9?pH;p70t8)Cy!~JDnGgn z->IKp0hJik8Z&h&gCWSlQ!H+z-i)3v%MM?mu0-vAu@a`ms7}FcNv5!O6|eFc7mKzk z;vC=*ROO~k?Iij!w*AcH-Bznx!4Mj&X9Hc)dbUCMZ<5CR=2If4P2?4B=YxU%c5RY+ z{tA%~IYWM9U6HGiOr3Uj+k?p+3{D9^H&jRB=tun0(S$D~)1d8y)>vfNCCWOr30VbgvlYe8j&> z`Z{`+DFek?NKCqL#rSpaRliY%XF}uyp964lRKn96)*UOm=3DcRTNz-C8jOfs%Z+E{ zZ&#vwj>%EdKuHuV*T)R#P!IYL5_`>&P+ldAc1j{L_4o+brtMOH`7MY} z#k&^{z89hbX5fqB6lRP+Llr9x#7~S%X2{^1&Z~YT;jC(2>?sbq7jANNt$aKSe#~Dl z)JvpHc9O_&y0<*hYF89lJmtJ`%&vE$(s}n6+T_M*OQ}Dc(gA&sAITd1-C?6qIaxgn zM4L5`a<`a>U^>h})mQhU9=qTh((;;0-pZ-mgq5?~ipn$GnFMO_qNa1U7gNYY)erN# z+8q43+8-U^7=cYD_U8Qt=fYN;dFwkzB&K*9EQn;^i*V!JVnHOB+|fwhd^R0Lro(ZS zeaZ1g+Oa4KZwl@=kk<(ukwK-fkD*k%8TxK{LYm9v=$1N1?{)TTs8IA6)o=Ij4>9YTs5xZBoc_B^R0a-5ze{nBGvE~#wc)q1X1(hY}>ZzX3NO;dvRLe21SIMD;_Ui%qyfraZr+= zs=a;QYDJ(n+yLOn-b}yH(xYb*j!uAbQGteH*f#E2xcqM0hO zvXH)3_hBn&;FNZCf_szFE7`Ot*Y#Vk)Im<7$JLA&WJ7mym(XpCJZ)-Ku_}6$HN*H5MIK*XVOGPAe~)Kvk?WuUWj})ESG&%VSo>c*4Qa zCLZvA*n7{YCbzC#IBpA~Ac7(yB`P3D5v3y~Hb6i?dM5(X1*AzQR*)_rAYDN~YNShz zbg7|t2t|5JsDTu|h5J2cobCH;J>UDB@5lF^?HKvt7;=+)y5?Nhysm4m^(_9)34vy8 zB>RE_>$*2)C!xm;DOP(w zmK~w)deVT|x=*9a6_e=aS8Jujk&pU|NTM}EQZqT(@Zot6!+3N3z?RZG4tHK;37&e& zP4WQ)q1AU#R?CW$+x5YU)n#Uja^onfk)q_ARDNdDT`c*n_=)1r50&3T?hA)OuPNG|Y4WekJFX97Rzqm_|vX0UX zoH0?zh}9W*7XJqWMM;iF=+XxqVZ3*?j>l>eA2aExq^2`8M9ts8_4&4-G^8$&t+8AT za^_G(gUvMT`5q+iI`J+Zp6<3?4?86(h@HCC%Na{8v?zGqGvd@+r}eu}y_#zoIj7qp z=Mx3DqDj$3NrNS79ZKy5>G-(XT~fKhyk6fsOxYLB;V-6~hbV5p(K$K(qKE22 z^3`5~vMvvMmpb3gf<%R3#poMpE?*7{mj$vUdf^ad! zUw4WIaI#S}s&FfHs*?Xc9zN;WSJ@+EW9*tTI&xP}m+$srH=V>P-G{>%8`{pp-aFd< z)%WX)mQy^zt}xl+)LMHvDC$`H#Yp5wqp^%cO|1PmI1`IcQMDZWk0P~kG{YBlDk|l- zdEFjOyD!+3;u?Ly{*O(}_&_R~0(j{Xv}h<^@eIOWCC5%xTZLL7lHc^O<<_P+PCSvH zAy8+byHeA_^Gcj$WZ4sGi=Pue%j-9L(42<06f=t2FE&Hrj17=WV&rN8+ERvjQ5rA0T-h-GK?TjO+5H$=FQvA0GE)D5hXYasl%EY4# z5T~GeBgy%-xe7~K>!E^+Apagza?X%vu;``}iUY|8?)-PEijZEFqsk z1VZ;yzT2Q<`_>y$c#TpXb?HuCV!H71X>H9%!n}8+5;UFN#hB3yQT=Z5>^tTw$cNh) z*;r|ZE|h7~Ql(n^I{6IDKb;`iBpS(%;#q$1B+-Le8{BWL?pLE)llE!9QY$&}PO-#& zX<<^2Y1r!IBhg8oYJ}w{5igBh=@mxfRVr?$d6&UOm!9NLa(y{?Ot3rP_Z7)A86f$B ztMTOS2z`tzYRm(%sO7MU$Rr?~qN7IghWd(j>`PjCW?8hi#K}Fq{QR&9Q+zB<;k|Wt z)t0ri8BWXD_if%RGR`Jf-#TdhPq=(`>BIj5m%-@rF_bw5uf@u%ymm`* zNA!-X=}d!1kT!Bb3o)c;JDUEkgOtn}*s4+y_ckchA+|t9lUbNoQYwMNY+azy+^wRy ztZs6)P1wwnqj-otY#sI&7*t6!j`G$Ah!b3f;fT)ZD6oUgHee(9epaLzupF=5@1bYIj@Zr ziv@6%w(AVDOsx4^Z(jkVkiDm4z0I0@q9-nN0!rj-<5wvFi`h>NyFD;tRWT}DTo_|u zYv-X2w$s1X+WCOXS}oWC|FXynPl%YE*avRWA}yA@B47g>)EFU8LIm7Vrm zilVc9ZHsOT+7!>VP#}dM^1*B_8m~jXl(e+YKBf^)L>4_8a-Va6%c<(1`D!%cGPtZa zM?nq2+zu!R5SYBIuv{3}hG}#x|fxGT;LQuPV~*#`6_xJ z5Qc0?o!B2?C@p62TZ&$@d%e;K!f+O8nOyoI%J_1dMv$=H3NWy2X5q9P{6Fvt>utY` zjGYb{t0>{I{@2;OQ~PuN=$l-1zNU1&v$6s+_t>m-#`x`Jxx?y_3jJODwk7x0kiTqJ z4bdTz*Fc`9zuZ)!0k@c041c&v%I%rdDIh9%+c*YvC7z4qHflK5xxC-RN+|Hs-$DBTYL?39AqLrm4n>%Ukw||k;1=81u`}L(Xb$;td zePJaqw~5B3757E(1m~a?Hn@3QeN(xmtC6n7DD3PZK}kbNP(myS!zG@4W4r&NgslH6 zU4g;W@9P9M-!X+r6!0ioPt3*1W^wAlytYP`=`J6&Q0$@H_$DkH`OHdcx*>?6b{5`q z$wA1-D3+jguh?;9lYaKEe8jFvKy$ACs~l0ak5@4JALYCk&R=e6hc%(=D4 z0D$r3;>6_F+D46@3->O%jbDU;DMe+iyQ>iW}s3pBnBJ ztSA3ErQto%e*vf6pnuuytKKCS)jfEO&$z4=JhYAg z2cRqgB-m`#9CZxIt6$#550AA-{I@6_LvQ-bTD4&4gXr=iRF1Ovj9b||%rd3Qc8T(q zeokQ#>flcS@KmWm`GL~u#dgMzl;@fIC~}%$MzDLkBHrMA*kwcO^wqPEgm&g-(Y@sC z)mE{exfaRoDJbYj^<#~aKx068B6VUlueIB~%*NJA;LFg+1`^=apOL#-PV_|HDHrZr z%R8ubp|7|rwox5AkNE6#c;;Iesw&mZq0fk*MjnN~+^F2Ikx2u_CrP<;GrA7Md)_v_ zze(1GLT#CQ!rX zr4c0M8Q$$d+_ye4O3%`p2cT(Qe0XKs8H@zALp@ypEl4#gD>fA0ELt3NYo_7 zAto&Fd7Egwl5iW1^JSVrUiRUW!%1foRP1{;MjrN94uV# zn5+s(&P&vPnIWonzjqNdYl2mN^cH8WX=~MxmNL3mbe0!e9wQIo&`aqcwk3f@`#^N{ z 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%0A>6Y_V9wF^#Lq7 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

b^wD-PT%w&uMWmG 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 z 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

F-eVLXHjd zy68hw-M$4$2c!M-LVc_KJ*s_X=LdKkiVE2N@?)muG{!X!C{ZWz=gq;&!v|cxK`w8f z+F)Olyeix+HEjCUc;D*PAA?2AVNkCY3;?u_hLl&H{x;U9AbM6olv{43J4UoWI%x0H z^D!$ipBR$n8Ilio4V>5wh^2?kEDxDc8~%VR=trqBGj_!LRekY}MmNM8&S6+=$LZ}p z{_B6)k?5NiJF_fmQbo`YF?kFh^Eb7*#&k2$%mlsUiwfoD?TL=c2n)^$@kGHu$bz`p z8)LmI-~J8oqG=g|Z}@=tM!M7g^UZ@vz8OIe*F;XQ2%K6NFca679vX1%>`68V%I^r8 z0P3EbWtp3jBGbbB%X~df`TNua`D8@+Z;kRz|I<%Q-z999Bel^7tvd`g6n*f^-HBdV zFCBkEOV#xKQI}ya~yDXd8fDHMb&QE?k z;&8Y(_z6B&2K#1*`t6Pl-uC7TO8GE1-4g}rPwqp$rv@qDM z#(#QM$bC3g;CDy7|AjSQnSK^@5P@_-Z#vs|zp-droDU8fH;uC{3v|l}^W67rg1L6e z+_^#6sZlvIc7uaM$@_PP2D@Uzb3$epN6yNQoSYRsX?c9WnUx=zA+3HADvPyN$M(Pa zT*{nqTzPfC3_^>tpxIfW9_bN2*IOHyH^xU#$oE!HU*@5$@e%1EegrBfy*yBLWU7;M!5WDm&Ll}hd&HNyTYaxgm|C)_n)9DxJY;aI0{Jnx+>rL)7~I|SGadU;50bw zikfvI+^=I$$LW3n`N2UIAwH!6GfKi{WJJ%}lHfa(b-;{W2WBQx4_TtRaBAOU(FY>E z%Ohvzhd-Jf?LiZVql1qxUTFH@tp-gv2r^Vr&daMl-5csz5ImzUWJX2U{RI(^q$ap; zjrZ%^|BdEX5i4|Zv0<&XWy69ecP9nXZdv%`D*qpr1$ktI`y5;Rv}w6$lp(KGRaHJP z*s*zQa&$yms83sGvH zdg~Fd4qL-z<6c|OrT*;s{qbHvQ-08+WntdgVLk_9LbpEmgt>TXVo;165Zh>9XKu>g zxbVDipS+OC#SxQWLSf9z)Zp2T@BPX2Hq&`Z!2`*6uqWf^KRX;1o)G{O+zLXb6~?-! zMiO6zn$yKhp?@b|ZF$Mqvop#wHNvMT*cXjtkk8 z7%{@6fdU>2+UO_YWLtZBQfOvkU`B*nLCoypICnhqu^9i%e}CPK_pmG|Qh`C1fCu_7 zEnBueI?5F{sVHGKXqg)uzCX_Ao5v!$4<0cC3P_}x_@l8-(|B#`jvjBiGmN9FDvEG-cg2&}{k9C-J(pDam9h%Sx{bVYmT#rb9=1RP8Z z*|}i8xm>6D9fn~53mL5=z3nNEAL9>^<#7S7guo+F{`=;{p8Vny%{MBwMGO$1m-9B=SI!UNpj0d^vsO%**iD-Zhb9`f>;?bQT@=+Kw;L}C*uz$1Qf!w zD3798zr5(+{fSXoU%qWf0j2NcZr@SXI!hQ?@BRTdkrN%1pXi+zJ3BjOcIuqqZyt{| zC$&N<1~AUVC*8i?c=FV-n82LGu-s7hg3#Gz3Eud-jKuK#U;PVeg8;Nag8>Um8{O^2 zfBoZ@xv{y4vrwDd=&;O~n1hMITjoXG$tzNzffyuToKc%OUAuFBVoI!MQT)u4!67Aq z@GX2-T-e^<;}DreWa!GAHp`=&Kha;YX8HE0u-us7{ODOl(NpsxCuJnL6V(qEoVatB znG3sss6i8>wz|Vl&p8_5lZw}vAD9#EkssrAJR#!ntIwISRzMhjE>cRwftC2 zd}ds5ZoF@5)XdxjPgjz6YUqsm)KpDP>+n@5W(a-DTyNd5@Y!QY(S(IX(Y`JQ-En@& zNg>IvJZsu6AzyV1AKu-=glAXs)~$*Dsfm7hu^zdRZkcoa_s0i)laSE5bFWRzu!B+E za?A9#A6)#x(J0vKlNaZf9s4K*q(}K3A&%<4rdSf^iHpJE4-R%5+`Vp2_@Q_|l%Y7* zD?h?3Ei!O-QgqpdujQ>EmXW^Q$%suJ`1$MmV}tYK0&-$z7S5fW8aescJl{=EM`#V* z^y*2b@Rq8_Ze4X1r9=ni#)jlYc$P+a7e~4k#`&R;XFvWc>IacpH9>ok@AZzfU;TXJ z+!$BHT-&Qw(!rpeJ-sUxW%T{m;GcFapkOYn2W%%}_Utqg&0 z5qo1I)8G5O(znn?rdyf)W-v0+ed2>ZB|jFI5giD}ToS~z6LV&-o#QutG9Ta|w^g+w zU*fKsk{$73*>l1f(d5qc%TMyligMr2l)``h%-m{WwFY@%jIV}ubxw`Jj$5P{?h?8Lg1zI{I&~o1Rt{ zHuR@F7TkAt)rt>yJRW)^&MQ9#YG-H7@!uaCxIHnk|L}46>7X41v%i>Uq<;JCytKHW z>{!pjcz0M)5bKH5GM6ke*W1tlCZ36+6x9y&pI^IjOJZblv`^vOpgiOo!)Nxf0#7VrL#o@ZPg%o@u|tQXGy!f&lnN@6;Sg z-<23}Fxs~&F}OO+t2k_CPL$W4D4(mVK2xTgc3LT+Q>cEU;K#To=fZ{8lLtzP!b{N#l2!q~uy5Rb}G&;0n1oza20Z~dD5vMTm|U*eH!mqGGAuVP01U}W^gbTr zO<~tB{)I44dW8tMh`EM_&Mf_Mb9CszB>${=emSx3;8J>+@1e&NuASH`cP4hJYZ7vE z?WX7Bk0u4v{ruS3S&_5SlYDn41n&9qBGcE+U>wxdXd9Cs87bJj`Dna%dW>gzlxK0! z%=~z-V~Kv76GJ->?a?F|+QkJEa8@l1M_+jActX_CxsPPbb<2wl$O;R~j!sH_=~bZH z8Y4Zk3yvdQt$Vibm>-vt6dxDulE;lci62lvNCP+MBOZ^j(I)Ht8?1iu{# zL8q6$XYO{4a*_k`g##e^&{)<_e~}U$pBEc~#-_*3%9`()5;rq*jz?=pgPbFEV&{0^ zk=r9#IqPDhk0*wLT_q7SE8~6BV|{ne3D5iVEvEH^25^8tNb+qw{?4y<&JAYDD>K0Z z$5$NXlMxlNjj5-a8qiMupPHdzd~mQV{ovya_T61^?s@T^nMnc1V}c0@D*yNw>mcmm zG4eb3-{F$?-`N%)PQ-#MDT?#RkDQ$u;k$2MOb@v_%t9-1#i`bqy25olCtk`?EN zgJArQ%ibI3pYpq(C^uVY2(S>t_Cw-}{zEH1KOXaFRswkImLEF3Jk~oS+JEERsQ&CU z>D702l9GD9>hOZON8j znOGYb9QJZ7*I>iWP00z7%=Uwdsc{}DvF`AN``5<>rOortkDXZ*JEJhhEiKY_ zM{IcAx|O84%KgI!ZF(Cr-OamywrJnnQ1psv1Z<}=+CMWgc+1m|nX4DU1WjT{!O)!E zuIz*R5`(iMyb9vnb7S1oV|_A`BEOA@zWDi9%AO@^lLcA#*FTW@>;Kpj9ZnQl66H}5 z>0T5uo7IY4PsfinRo*l=aFA3?4z+5|KDPa_*rRj8(xSWzqP<*^UKvTjJLg3mfBQd` zJ*AVK7-};KIY7L(_k*|6Ln8|k;&YhNWFQ~wPiXqh)8XT+xZObsP;-_@6>2KG&gm&F z{p0WNjRV>ig!q6>DxM1ok^=oyusUE3SUS2(iXxYI03=mZ?Zp1_J4JxXuBVc-rN^ZuFX->!!EITsWtzoLt9rr8Lx( zn7SOzxVAw+kLl?nI@QuY3nsX1F=&X<_pt9oQS-QjRlZ93>R zO;=4-i8)s-8c3&Mp})>$PL-PG3w9$C>05SR*Z{jf+Dx4-d9lJK&Si@m6-DX-)siyZ zPc|}>Hsl!hEBU0XL`2pUm>PJMu3SpeIa;m~%h{b%*Ofbj2-q=Ee_E*sg7;aQmhd~vuL|erIIB6Rb{JiRgr19XnK%BljfY^Dw|5UPFI>! z5yKhjuMZQS9{IoV3CwPdOYEgq!F%4go}vtrDIjpoMkGD zl(k5v7Mn!+I#m+C&t%%wbLMQFDrA+UtjJWNZ)HlJA$bh>-XKedjY8}jYL>FqRqF_y z^5dqYz!bybN^_>xT&XgBSIzZ$afx&|`i1P8E}QC7DL^f0oMfRKFeee5%d}n8jy$47 zX*g$QBi{~lx=Lfu(4V)OhkPrFO*P%gGbL%}WRbXivQY9Rk%q+ho?dg^Dns){Db=|WbJ8Vq zC`~mNDokyaxqMkYf=H}pki2)66uXo>hTc|Wn93B{Zx!+_mcrj4d%v3}FzSgdEH0Do z-qm0(Rhjc;N@*@UZmN(nl#_gNRwju;V!W^y&qZR=g*sDHt|S)nUTWZjmGZ?>({)LF zVBr-#q}qXgStYqlRRxkh+KAw)^OY`m?YydGIhE`qYDTy>y3Lid<{UMrn~F?Rib_@K?O3HG9r2> z`wI}GQ^=zFs5zM_9P7R!Rbhr4dG)am1zB{MGu1K{EWLsx^f-YY&6=kNjL`qwmVXD(a4EWI1A}O#jkZmj^W?%0V8K-MZRjDaQZL*a`hVh;( zF{jH+`xV!qgQhNf>uS@)D+0TPeuJBs;E{ z-nQ@Md%jvsaDbFltBPZ?-`YH70S&Nam<>LxDh?>zclGw2q(*EW6illFsYgyFR zTp4iG&aOA?y-QsHnK51@E6mT5(?pS)o0+(f=3tnj8KA~N6pCrJNGeqh1tbSlK?&pw zFy4TG5#@)2V^=T8DsjPp4BiAitSJ-UP;wk)H~5TjaS&t|H%Ufl4(W^7qv_1Na3*Mx7WhiScw9L#sf(h|HxX@Nwj6BLZ{=Oc3Hxp5!r*u+p4MF*V1vRiU!d zlvkVLB7rTttMFx9y&y@4>1tIkXcTHIKwZ3Kse0OF9R$7x;{_IaaBbb@Ou0E#DX&CI zEqqol`mI?)N<7?yg$TO7nsIVX0XBTKZOQ_+h=-u%&9Y` z0?VRZ2smbHQ%n`Om!=I+eP|<|lmw3fAwT8@a{zg=3&-$Nm6Rj`DK{spOgl`l_>9`nHH3>R#8RsAML;=OcIkqt>S`rJ-T=GU z#*U%k)=?Y0$pxL`4G>AVX$qWBF!GjrE-BZA^1awEQPY@)W&{9^`@pRilWk}L=h{gH zA^q3n7m#eXjayg-tw@o9*Wh_UFx+&RIa8^`X>d#q1z@z%0%~7VEVdI+$*t!qZyboI zDw7~o7#(2Q*D3=Uk|+r%hrdH(kuTbaGio`fWhT4{tiY>Yw|&HR&Q?jjRV3b{=inH< zD`NUcd(H5Dj(oA5&PG#LCO`&2PUV=B$QRP80!O27q+nLQ zCBR6DvQN8-?%25uECBoXUyP_(*n)f^Kp`>mEjQ&AicuwBx@P5zvxepir_K2~DHRTa zd~YIy^qfK!am;ge;G2$hKPerEPf-@l#CZmYOMuY8*vWRkg zE+z3M+4Ay0AJ~W&(=d(I5$5IX^eIC^rWF41_jkwvl71ykBzSKg&*~xZPn+pDXPA3m zz0|DwO4ss_&DyWb#?@xeR?~Y;fy5|b6?*In$ZY!1to_8S{*31an#xiI!#Z=oj-iN}SWwvViCObkv+e`)Rj z`PlaLrk!I1SgF%=gyLHwih?4ua-|_dW5v5>{YPfQr)K@vX5H6vRk(ftffXfCl#r>h z&g@=mwk|X4J~k`fHmlz=tfX)HvTyHN)6S$ZfKPegh=Fa3Y~-sC&AQLcSN~Aq|ZZj+=oEjM4kWj23cmcPr5Bip|= zS8C*CU>7knZkPQ^m#b9Iy5(l|hi1h)X8A{E*=J_s8gqD`Mmj{}@QT@M&<3x4Bw6g* z_=#Eh7cqgZt^U%i_|mjpR-KSR*VtM@OnCK_*|pZJ`N%APOX67nzFG6J*|Kcl_;yl; zqyq>SouMQmBddJPO0#mQ+4z}R^|smgrP;RX*18qivV_xTCIJz!MFpT^bHui<%<6X} zvZe1y+17kvwynIiXS3V^$7?9B4{jif4wIf{RxCFgzc63_)vW!{Z1~))v4UWf#6SQV zfO^23MO)Iqwy!js&~tk9kzP^tHOp@@PuNk7UJ}_oZp5;`((aFGs-%t3p(ZrlDXhXU)D%X7yL*tM^5~#t+S^56z~}hj*ven_9L?rrhTmuG}8`*e~ND{wdZQh#+8P3kfm>1CC4hiFk9D*vx|z885s5wfw1|J zb1jHAkL@?BS4dCLhqdpUjh~w>%f~mY(zr(9J?BnXqd>lF#iI4qZ=0omwf6gkba>-e z20`#EJ6_p>Eu$b5>@tTAnT_k!_qFes%^!<(tG+Os*C;xbAOMg7#Xn40T&*#izcyP} znN^>dud$ua1qI{pDmVtVU~R?Xd;Yprj;D|5|R-lY*-d&n;k3qcdXH9#R>A!UI^ga zgNx;20v7Svf0l$OYs*se^*d(e+X8d6ebcg$v^|122u5%mWx&J~3du0@>yOOW?+c&l z8s22%*S9yWQUpct!#*#>K^Q-9#WYo#4PS~y;1XnD4nV~EmFDnXbK|lZw?K;a;z}5N z9Y1QAs9*P)S!NLrZ?b8X*|b3u5g;uhV10A2T>|ba4uGv{2R2|f1BzsL0WmJn*$~A!b_`Z+KH~7AMO;+HcP#Y8yEN#7F)~_*3Df6LO zN!Q*pTfdUa*t%8|WyqJ|HhWG{9@5*`^n^;U{M0PN`2x-#$@gvBU<%ld4JKG6$DcCP z>TEH)wn}Z5IiB}Dv+fhKd0F3%wWjTgY9kc9$#8%XCAL#)mM@ivX?^Y6awzM*6ppdk z2V2ktKf(n=81J;09Xrg5uVn8_f3HpS8}Yx(ZlR5>m!&OmjI|+FXUONO%~W3`Ur7Bx zerNe-w^uJ6ccs|LC{znR;DxW4p3A1-uLl)NST=?%nl7qq;uZKz2z}LD zEmZ`vQmSHBe?Ac{Y+h}Se{1?!MzIG(FtGz~QT2ld&2s$jGN}y!#f|99)=iph#K7qn zC`vd)&F5;&+OG|3h|50^ZwW}&LC?oGQ+LX`;R6E)#DP$l*=7$ZzJ?HM&HK_@Y-jan zH@B@*wC@~ogC;;T>}@0xTVJemy^R(y5`{9zv-mZ(65X$@vAn7X-Qvi6$gu#|WSsQJu%{ej}E zotrfi%LofT;Q9xdD7a+KVLQYsADB&_m<^xUC~K+Nv|3xkbo>aDY@FwVLShkZX5SvO z0=<3Lto@V1Q8@O^x?8x;Mmq@uf?;U5OU{vFHyOT6^0iFZ_8AfH_{NWi(|2m(h2gn4 z#(eS(O(Y&mHmjDJwOpVm&RX*A!xLSu6BK}B03DiuW-_ZuNvd7(C$sTw!Gd&*XpoSJ z)_GVKuV4rhm`&!yLE>sb=&HY(HFz|_!mrJSZRX-RWh0Ce6*rkt=54MTW>&YNU0+De zva=QK;6_PWun9%%e$cAoKmPs>Iluxs=UhvCTnyhx10eubx)J9#oZJ&0lI7#UW{QFU zw`}i8xjv5^@tKwN(o?b{CC_MI4|%}gK;wIF?RTGY!t1_l{~r~FK9cS8P@eyzsk0~7 zr5qBhp?mBeWi6Y1L!FHq=0uREo#*>ddEi48L62m4J+jAZ%AN%PQ9!Q0bC@c$hwf^3 zu$Fyq4xU=GJUJjR+jCZ`&jY!^59WFQbDH;qJN#yLZCN9WV>bt6D-nU6^4AW{_sz}a-RRgxjql) zdQ49CnQo+go`0p znSR~uznFDAbJjye{?m*69w{fe+WY=&?}w8;rk#KL5As$}i&@bxgQID2y|&<>*Q_Gn zDJA~X^1UA{@SOz5b_C4Q26m!8>K*5xB9_!gZe^X=9_p1HIISY!;iABQ&Yb;EE}vP+ z{(iZC`h#46o{WG9N#h}yY0mrQD@T227Wz!h^}0Vl;DJ()f6DZGcuVALO*Iod&?ybl zsdjL@s$iGDU#7P^yArZOrquXOshfG^qWeuAbf>@0lBTe}2$|CG6NjzV45(87lq7XP6&2$Z)e*CScJ6WTd z0h96rC%L>H%5$H3(BJ(!BjvGf4oQ~YI&)3U7r&Vsy~ks!%XfOU-;_#^2Wq^gruom> z{B(jQjR`hxj@jd{*-kN7vVT|Z%qb;a(~Es3l?P18_kK9TXUbmh>5WT2WbC8NdCh?! zU))Dy*0b|dJ!cntO)3wXkry~Q#rL6jjitOi%`%s2wxK#an{>*(+4yJEbaUO0mzw zdA>7}Lp;-e_fsuqv7be0S4uWwB_;b$zu)8Mm*ek|7dk!5_r84J2U5K!?GE)Zd6_!1 zg7fW3{Zift;aTy)h?%+GKPU=#uq=F9hW{g(p>Dg~C*}R@Rg|36AyPV!GIP7+@SlC_ zzmEEOrUy^U4Sj_DiCOOd?DCqi&)ai6YV9|8bqJ+8P~l#Lun3ds>OtLls^R zmU>M-7Bp+e;wLp+rE6%ogEpgsN5A~6VD{94*^{e+XOss|%kz3D(|_77pBV!?HgJ#^ z2MTa1h2(p;$F!Y2ni!GpKC{Goa)IyUf{2+X{2n>sJN?LGk*4Q@8E4ytHV`O1_|{PS zhIKoA+_n2Ac)H8?{}u*4a$@$B9e%#oaLOo{P0kVx$hWt7-%|;xzB9`Grn-E7l;Qn< z3TFOuX7G${kB2ExXP#kPkc(l0jV=4OZw&A}=rtvkoom69OMULI_Pl?m_l%~`-c=mS zTrCG|+pHMEgVd*<%=UK6@_h()6-%lGXp%T zg4~L{9xMSNeP`|Vb1Qj|&53RHsp6Iiux_ybz>nYD6&#oz;0`=yd;cic_x>aPlefeN zX#OAAhX9FXk({7MQi5je_Ly1vt6wq-)2<@HIJhv%hOg@X z_|*|__q0H^-%ia7xJot9Bw%Wx|0DT6k7NZ*-|aiooY>E= zfYSH!y;{8|%s1QH{e;JTS^ksqgQjJAKa%D)xpdLfX1GBBPCBksm&C=Pi|@X_-`D$u z|1|bR=K23quHOS`-j5>R8%GZ#U)YMswEGqLUOTfrF+9_6R=MvKE8eBin{)OY;Q{y@(>pDB4k599{kR~S4g+kg5IpV^oG`d8|K32gU+guCQC4|NtS zT8Q7t4VaV{a9@7lkFvb}Im`P|w#l1Is_?cj^NoRJSUZSPpS@jq}cmD zf{<@R-Lv2SPdO?4>8)YOmwi2bt=s-OIc! z)~F+8?r?a8YgeFWj+a}u`$PFYQ}X?$WqM6M>M^s4Cbe~PdXVNZqrIhgS^eruu_}R{)SIK+3V}h{w74=^1r{> ze@dyF+hK42<~^VdhNc7gm3s#bEp6Y-N!lOiQ4lt(!0U$vp8uyX;711oAK9}YQR}ee zU-2hY0DOBd?pjSGQ#$j(Lhm2pBeH`YIpRNco6oF{O=}qG%YIdo8(5cb&6qdOW5P=TBTTr{-JiRE zSKv&S?~F|EAE2~oZf{o{`{nZ_YNR7;)sl)-K? z?f1Gpgu3PiPs$2>IFEqAZ`y`%Pp#fE21LHrt0@vVRlOt7p92B1{T|ED}brlE7)D9-iO2`}JgHlFLm##BIWl zJ8T^2GWB)r*Q@ZHS?b|-^}W9+$A%xBN%2e17QOsL$)fq?i{_kp{i%}I78L#d-vCUWqk+z&qI$N`$Vl7z zwRuYxl)m{y>FY^FOX7-NPOMz~Wbt!zuP`x)wkxNX?W4H+o6O!P|LdE%uRK@z()_Y# zV(MO+SM%~S`HL6k{qeU-@3AN~DZ$5cq z$x}_=ZehQYf5crK%u9bM%C$HVg6m#?u4>^^MgR6wr3Zjh_9!7H z`#|`?!-sMfEh=8}Y|%^ei(XEue&d;n#m}TJdj8_>jqEq);j{Q5sWf|(d)l+#{$u(Z z3(H@7x^7|o$pw)$3*%f%9y|2wH6BUc*RlNFa`j21IeC)lm zUjR3(Y^=B-<;_L;3+Gn87+>*5eEFiplS`g=z5LSYufJ9f+b9Q#5I|5ChuB>F)!W%i zUMP9tNos@Unl~QHef9BOZ$5YTA}3vp@XRDxDhClTgLL^!&g-w{FL*NVjVH5TODbEO zcN52Y=D5o%P1#xN8`4 zd#G~b+M~}uTeqnPW>{ zXw5pzzUmm8CEfqczkJhlT~-W<6kxGEd3-PyubVg-ky5(>5?UhWp5@*zOO&A>t`>R)=T)IiG*h! zCPs>WO=;@O3(FQSDEjd;S!m;u`Bg8?VUT-?dBxkka26&INI@{0-OhaQQR(6ri(i>n zv?QkV<><`%SMgpIOt7Y2(hFn#7?9JB-mpotb;@qkQ3AGF7qK#QE zFDU=wV=b@96XI)ciV1@^3YRZUS^QGzqGv1Kc)a|zq}o^K6fK%};?)^2#r>7Cc_? z%G`p*u?34_YF>Y``jv%;Usy0iX5HAZeMG5)BgULRoAU2JD}3d}+C@**ElfQ1Vtnm$ z33)F+p2?m#Qg;YlkT0*0Jv3N;@Id8)CyJk$bL!P6;Z^bTv1Lo1%w6*0&6H#4DgmOk zUyy`-myMaf_}7wGUaNf>drzo(^>L7-Z1FP%zxt^&Vp6DM-96E7=ix)CuP!QD{8Zud zapkYXAhPn8p2=9Wxcx9|<)eBil_Ou$1^e35fBW;C7oV(I^my@-#Nr<(*1hsf_Tr}w z{OTvlA49x@+U%y2TKfBkGSgC*EG&5WiHbL$ELs#>wlL<@YjaM#^la0XwJ16J9V7`v zEPEfTd+Y7eh0hl)o>TebIfXAr6~7o=y?B1z|Hs~YfN4=B`~UYB?(aT(H;Iz-07C{v z%ozkEiAc_1U|q9!gIN)C&bsRwQGzH@Pyq=Ba?UwtW*8VI=l*}bRsHt7y8Ar$e|Oz= zS-WX^&U;RssybD5LiGtfuxmbR$P@a_<)v;xe!={OlZOocvftG!`*mH=^`g~%I;|Pd z>+@b$Z+!h#CJSi9Xl=AYgQ}5zeAW|>elob%RH)+8#>=by+aD?H7H{`|6sG^RMeMyMM1WPdrXrq?1U2yL?D9?D%a;vqN4ZuH?y_P)@9F*f6|r`-NN*c_R4?OMwT#wg{@^}q2X$Z7`?B@@ z+E9PL=+$A~<9FGfN0i2!0p6wH=jP3R=dC4IcUp3FM{Ij(-*(IUcUUy2>#Y7gbe>xY z&7JLu!_d+1{%zB*8@6olu;s(LE*sQI4D{`?v`6Qazq^Hvv}Lwu$}E?+Mfp4a_~x7; zgXZ<`@=gDC%dfqB$&e0<`(E{F?>@Qnn1(2%W3}P0JSNaiz4@B?{jXlu=Zg6Q+AhAX z{i*>y=M3mI{r9(Ni9Q=|IT#Q9vIiwMW6zj3KOfkA$>8n_2V)HF7xZbnd|;Ceqg8zsr{NzGU5yD_0Nf^Tn{CI;p0FYQXC! zF`-RHbHDgv*uX`7x~&_~c~##_m-V@L>7e%02Y3FO2^uE!{oNP!l3lymMPEGo>gubz ztnATwY0t~i@6rJs77pz;^P0X|QmYq>I!#62EGy2=TEBd9-##n)527Jm(XZ3;ew~)| z>-MtDRHG}5#y>i)*E79+wA#GL;zUqs?J->SVK`l43PlV8y=opRc!<*iD zZtgW#Eg#&8o|nPZ@;;r{^zHUZ|DL5BM46v1ys&`k5JGy|XV(m+3Sa|EuW9$ypi90P z*mgz#t_N?q4$U$EL%h^<{0bJR?0xI4xdZ#qjjkNf=Iicft?bu!Q=hBn_ULhRCPz{n z=j{xvs#@~C_i*~>x7M<59>7T&g(UgS%iCqdD|whlB^w{e>87s z&sF_8FB#T;&ftsZU310k>$^`I+WRnzH1dwgd8hv7!7NM4k1V|Xrmwnp{%UB)*@G`# zG_=E_0f@KPyy3%xLwqYF3$%2+S;f|`eKKkG(0(fhUcI(&$K|~)THfzc1Ttk{r{!Z9 zGI3IkYJ@N|9L*{CsJeJM-B`H^gC5>&vP4I>_1(YN3Hz8&WFzF^_C zZN3@OZeIT@KfQK{R!wKq<;fDn1T)2p7R?yYk1^8X!Ce*(VqDP%Eif)x_UvOCiSdTU zyz(+S%Iw3-UwL@WwO1`3(sALC_KOBzv9M3a75%$S#u^zC7xH?<`aU$lcX79En|aN! z`B!(v3>NjjWWk_ImkzyRRqxKZciyhDtKNWEPgcBad+FtQ{d!TTMLjQC()Z$}ecEj3 z)BWoK1G5%<$!i~`FlnM?4ouJO-Zbm_{#(yzvbk}}wtH^TR9zA8xA_=@uo+%!nG}w% zlSu+BjCS8g)t<32Ycn(>Ov}ydf_$x_X9aH>TYk0&2RCYQBTLX(;ZV%mGa3sGQ)Nsz zZp>#L-m3+W>FlW58XN_FyH+OaZ3!>#=xOy*TjoT!zzaZ@;If*U#mqbp>vt)&rm=(it`PV-L3!7I&!I|N4YkppWT)3$5-9;4afTslpd zrJ=CFYMvIxvwRvR*@nQ^@mOkj#P&cHWR|dofu6uPmJpcD=UX9w9oZhFtqC%=2m82L zq{Q+zS|DE6GZ)2ItN3WLEtt{b7TXEJra6ujU?Cz72yc!29T!Y+qY+%rbhbFLj%ZhK zf^w}1(l+U20~Q+;XYt0>0i_EZH`cL(mc{wUw%T$OFe9|RdeKThKntiZS6WjDKdiFe zzgwE6>^%3gVlYh@=qV5vU%Ju2j{!550NTS^Dt~x$a1<3&K=x(W32$Y#XBH+f1UZ|m z^MO597oguQDi_wp(g;e*_qWXkXae&C=2cn#fw)+P$`VIb&R~aVdB4^&u{OibOu!3} z5Kso9M!83k7>a=UR&72)zpRbHMbK;~s)c8ihPR!qeh0egyR_?vESNFdj|PX13WjArykn$X6jRp7t1#<~7!l~57Y77lV{C*m29B)eq(MoKtrKip zpdX^cpmZ>d26-Eg;T_&>2sa1m8?`rt)qU(AVNQWl+q`iHD=Gsm8&yf#IkwoqJB{$TlCAYj!$WzUm@Hk2H^ZKdncKqFSHuTFdXDqV}VTi z2vvB8^oz~V`oROOidIZzW90CF_Ea^H*pUO8xI=ipDZa>hESX(O5fesor+vYNx!c4CJ8AR4LGr%nS*zrkwzb3>kLvB1K^O?1<}^ zmB#D?qG;@hlx#OyYsN>!bY?;+Ex*-YovF^-a;P6+ha-FIXvR0IEoFlnTl{cRfRi3< zRF8f|8ZDT`njHoQDJD&>+B$}OWZ(sq41)Q`gBUq|1U9x+Dq}e}Hjfz5uYHn?)`JfK z>a8_)uI7mL8SzrIoodx7ERw`;)CZ&VqE78I^N%cM+ruVM^t&Zsdnp@K+3G^|DdHUw zZ`Dn|XpX;p5P^7vkdD!=vZCz|4kIzsFH>TajIL7spy`+8XYfgLm${Ww^;9nU0>-6$ zTcAKwo_e=QO~*u41z^=$2DLeKSnM5ON?l!v8V`TBkB(Ubxu3GI-4*3-;OJNBZr@h; z%ctEyX{zrCnVm9h+o7^hXRSs6Mxz9`biR5oqm>(`TyxxLwAp}31>e6#)^c!@x_FM6 zWg(>osYOM&qF6X}1D9VSrH-!&cCQF_t&}=w7Ffl~@E9YM6m)_fI@8)q8d4C#u)4^d z+UN#LeS9^*aU6Wf!)Ero$8x} zock_=r`CHcgd{4f`;tewe0Rwf+V85RdtX;D!G zmcTYN)30Wvut+X!gPs}-#~SH>53jQk4xI1A2?a!*j=qP<>k$TY$J8sSe?(R^AX}wA zhFEyRMJzd0^QD2k#udDMVr$6}wJvkEBy|LJ?kh{I++@izgQ{l66M+y9Jkhn z?v-%`3nOXg0YVF^J31NFT0+JZ4ArnP212`oLx+L`w2gWJ$Uq3s(P~hs^o#1LTx`W< z44`4&HtjEC0WdF5kg6I+`FPSVC(@~}q0wW!v_-W8QPZ^YbxZZu92YHVsGnjEl!oOX zd*s7)4Evxhkq*;#XH-nn8JvfTF(nFak!ULP;*ej&rmyAI|SnMK=KnF_~r$M4G$=nPEEr+mRxFWv(~8b30LeELFhHn_TZWU zo9frx^U&@3k}OByO8ZLGw1~l4IFFTIU$WBrx?xBKr=Fgs4=2J zJ+F~)c9^H;r6mSTug7vKR@Aekig&}5&_1}sD244jl!f5TZ;H|+_Zf3nY_TIy|Uu*Wm|pXmKKIA>~vs_R$-<%M;eGlb5-zW z05;|!l+T-Lx_j`@;ApZECh6O_DT&?mgUn^qdb3oOL(C{U1z|uH;8()1`D?(76RNbc z%ZI@@(2pHJY+=BgGj2KeUJKSr3y(4*rk+#dL%<0`lyWg}Wj9ALCy%kAfK5pp;ZD_8 z;ni+yL6)tSp&)1qQD73Rj;0#|GQWVfUrhkdJdHQh(ScT{HJYaAvN0HxtM6)|T$*Z@ z5(<6*BqAA3VwiP#*(e3B@@j%O#nfSl+YmBR4p*i+JPB$az$QpjQwY?AG z2ffo}W01%SU>qp>x5O+ zd^=H`68m~pY9d-SdmgccDf~FOTQ7G7EPL{f3ZHUxF=_wO^vP=tZ z;R*`8yMhPg05IyXhRemJz8e!m9e9prgcvPW9o+~})?!)Ez8$irAv0zGTE?HSAxl6J zWaQ4pd<9K$=rw3G;805`Oii>o)L+xD3QJAr>zW7)RcHW;X;H;c?h)G@XZ!xhLan4D z;H$;B&YEa4;j8tgouORRUwRY!N%K}xKucz7;6;Wxu+&5~N>mC8XpJ+6VWTxvz^Dj> zZoxDTNI-44HJ&mFCj5a!OH9*PzXNe=A!+sa2Dp?Fp< zO}R`sc)pangjN(1CI=>y!5J!-Or-_19_Uv!-I^U*zbx7%YZI_cbHk{*g(WQaM%_pl zMF4E#MFq6g5I=#@np80W^ou&Y;ljMh#f@6^l-z7;)>KUGqY*=W>dr7fR+O+Q49(I7 zd((&HF;}~&6cmaVM6{o@8*DbDmjodUU`}*Q`T727jyH*4{mj(OR z20K@25pr>XUSr9|C}y!f2SE3YrqCB^RkOgm9lA3(&nqg*Dk#g*B1Tw+0UUJtUvHB! z5`d)(ipFbLTewcAfQsFQX(|y8jfT2xvkC^oXq-inG&>R)YU4o#EzmcVX#1na#491pG)J2g32b+YRUCtjf@5W zBtpPj1Sclvl@}5$Uv~yDLdxZvYC*^_2^eH`98Oes(61_vs*hMM0vjVPY=9nwL*ZDv zNGC-%L}7u%BoHlM=hKTd#Au^IgwJpVwbF5T4~Wb)ZsY@MJh}5rAx*7u{Zc(CFJVn@ z$x1avE*@myx~;0&2oQBp(atYbwS2m3wdFJ3}bDjjxkV0@mqZc(jW1rjI_K zbE;eG1IHXvWUUqhTm}c$NNEtNCIXYt#UDN_%S$fRM5|xwo53WD^oE+QQyJ9wk&~nX zbsShAIc!Wts$bLDW54r3Rq7U+|dC%I<}S+F>LiOn{n#>0*&ULyVg+ z{Te?-h}O8!4iAP~+C$;evPl)w0AS4x9#oF7(8l+)t~OpO)?h#=;f@HP3d=NqZ@)Ab zpiV)9Kp%x07Z7yfDm-)%UP+!BSz(|AJjg(W=Vo17$ca!hF2H>Sl2HY75%>{;r)DyY zQ;4P&azv`&N>g`lBN#~vRoSY1VP|{_J-~nhj#TmyR;G}m@FRbQDAKpk+N&6{p(ksF z$d*t0C`|fqqEI4e`KfnZ3TE2`8HnX_8AZ`CT3S^Fkiw=oHQm+_lMKS0GvPx{)jK8e-zua*o@7r#AK++O zjC1l*Ov?)qm}dE|5E-}P5bmwLH5y2s-CvCA^d=6{;8N-NZ#s88Q9V*EQvzjYdRg)U zAve^Rd2zCY$*!qyl+N45GBq{AX>2M9Eou=6;M$QY8x}dxVVtuGk>|HRoGO(0Rd zjmg=1K(wlQB!;X|{PhM~T>24!}J;m;VbMz63?t&bOqbX3Jp0)?TK@IF$N(cX}R z#Zi%sLBPbeN@R@*QsTym!wnQOh6o@q($QJVNI);^h;;mPe3C2l$%tA|rR5SvAyCO> zT2?gFXsE)15Ck?|62B!pd{}_;%6K&d7uZP=Hdm;oSEeFHfGxCPL!v#w zW_SxgUgO>0(pgynCNIU;Vs9~%PyxLA4K8xSt~v(8AlH47UHMS(WKxOm-`b6@}KKMuX}{-J>7E0+{9n3+dD> zss}ZgbS-^Slr0fw`4la<>|ZDt4yg`V6#z)?iM@c95wccactESxSazwO{Kqh<>zF-2 z;80c5s95wJ2S%Kz-5NGps|6rK1Jb#H-?(Ypn{U0hbH`qOXi1r@xBQm1TP~($0H*(7 zB%_9fx)gS9YO%S9V#hKK83butX+x-y@C-(4YOP)X>G(mb_CWQ-;T2$Ah1yZ;_4xx` zS{C4mBe|>;Cx}9TmS2k0FjpA79b2_w!}2xjkE9(#AY#=zUv(7p>srFY$ibQ(@=mt;ga$u#p#^n$Nlmxm zr_{Xb(Ilub3q0BE2Au{Z+^!r$M-uT?UKQ4E0v?76?H+HZlZy`wIUL3)Dpw+_VZ%{L zz*wsZtS+MiuoJOd>cVJld7}-tAS+KIk6DYeN>V6)Cv82tbEP~)dQRmM8MIH9a=J#F zpB@RUB8&tX`57fSp90_#Cc{kF@KZXf6LrmI)Di%m*&zi65eZq;yfwGH5$zB;f5d>Z ziX24D<3i38q=_sqyNyHLu*n^k!bU{o^5HZ#=e8CS@?!9V8=PeGaF{H*4x(o= zpFr_5ad}b1GKfMdiGbqZ*~mCu(UOqOhLwXGY&`#he!cv3NO~cqg8LQaB4Y>=B~X)$ zob#(>LrxZ>s0Jj#Psk)7x)MbfKU|7+X^XUeCW;0gM}BS*MmiQ5v0 z=dWJ`6t+KRQLakqPM78PRI4Tuuf2~T0M3v~h`}g8MDiyuKTW@~E=q)c!x*DzVbG&W zeuIHretYSN3Hc;s0K`*H;LGtF5<_4`00JdiHXi&EV_bkGL6YQ{mCFC5RD+fwg(OII zM9vf8Bs?TK2G=ho^q+z;c)-C!klR~Dt7v9O=1Z&WT+*)ut5KL{5;YbiudtI-FZHc) zFnYvuJ0YGxdg~$Wc$!rw0XPPKS{bR5z`V|-%yd*sNX&HHX zr>Qjb>quRmgxw#60Sh}0G{_B(WPF4{1pwkARXN})q{2sokM0=p`%&kgp`CZk4>JDZ z1y?dNmL-0iWD@Xqj5t{=&YAq)+zaY|*|l}BOwwi*-gW1F z9j@r~`HL>Ppkag5l$83_tJbPtJN2>)+rIMhpX6do!a8CIa{S_s zntG4H93%m~tg{6VfT~ZCiY1C9c$h?Crb0IWS~KlQ0nC|FFJYZvmCVuz^$|7ICz3pAp9p?@>dt^M2Hk0UM2?>OeiS8pz6vk&mtm8w*iO3 z5gF3{Ouxi=(FlA?x%`4*BuT)sddOKN?1aiyAkM#KX_nD(Qwkr|M+_4$48kcyZX1fS zpCR^y{fGhn0}LYMY(oWt#BqD^?T6#BSZB{vNA3i-9wMvsi;;vbo+Gy`j?*##pi#XQ ziy?}HO`zfqI2^Iex zzrjPAzkYd>5;niUSWcxHb)-S#8DcO|dx4yPkLL-z__JFSsHERk4S0mndEjXr3DUBJ z{6L5C!?O?UZ*pp3gZ~Wb{_mjv|Ju{?7s15W^@g8Ufhq+>Pw3aN5UF^>WkftWq+vWW zPt6J(D_Ih4`weNk<+brVU2U7Ys2q6Lo=i+l$vd^`lFUrccM)zmx&m% zB!A!*~2 zR9bnZ8y#1xu-WA~LU*h{br@&J=z0qIxX~}VQ$yhw*@(50B0OSwQcPQqZu%8oMJfZ0n3lfSiv=dyv=NU+ zGGX)3l9OktU?ijEC7%bOgPriyZ)ei@5R}IVP9%(q+Gp@%#AHc=0iYblTu1?Uae0Q2 zMENb89-FXIvU>)eei6`C1cu6%WI`h@QFHl?ZK&%c#^fO61kf*Uq%=1ts>})^+U#Ka zs$lD?VDB!IG%lN&lPuGP64H$SoJ0~p*IE(BGGIPW_W9VEXV?C$V~b$>{Ggb#CC!-m zV^$mzJG?Y2 zU}J#1#A1$Z)3LfTZ*HzUmVeVS*whf!Ocy_}XDX(q?NmRp$@JWu?tS{Sxvc%>joYZ4 zc_itTdD!auIw*4Mtp^5e_35oQ-#h!P^PhR_LV zqFM85)oL_s*tkK1hADOGRsChfYQL!5tXY$J^X71hoh{Q+vp`EDOw2YymXP12!LM(; z?b5baOrG+Iugc&=&hFiM)~;1=`lp|}z*IoZ3R;(?mXNtit&Gu}rdIx_Qtv)`xc|_B zHR{!<(Xe)q-5b_WtEF(&k9@R33r$^_ zeMg8NyCD=JaEb7nfIZNW>Rm_?-rTkjg3AFui8N4$G0vu3`U7&5|LFXCIKWB&~4g_Rg+AlU+CI=Xac8Wb^|e&LuOM|8_7i?lU3V_N&(X;{${kol)Jy^NJvPSwf z(xf0XWi@6LfE=+P580D)xf4R>%~8Zw!fqYjkT@DEtFl;4VF)KGMA~KCh))D=W=tL~ zJ-y1S2)b=?lzX-40&Lcp7@&iDE;7pCt?aOF%C)9LhJ;uWl1b>--Y+H$Rm=cj4WPIP zMFFo~N-I=Ye?xLEBg*8rzwt}dATNI?L|L!6D;KAjG4nQtO%lNRUlTIOJ;}OA60DX& zDU26?+?IoqT4B8+@B}l0qdt->!T`d6b0A(Kt%fWKt8pk$VWU~oDB7w4JreuW()j@E zo)#6eoBpD-(SMXQ_&?jvI3<|!M}5V{md&#R({@+7ew{HB9N5qZB{v>K+i#I1()C4} zvV;PWjd@QI#wXPy#ke`iDr6WY0mmaGcB=~OW>ckYPNW_oTuM`}2)Ga@fJaxjVp7an z5*WZQ<%X3Ad>EML0?3qN#UU~xohYCP_?1YqLLm;bUW+I>{cYGf|_R!H^5b3N%Q}TBu41+Om8%&aiY&H;nSiD3b`qYce-) zS~686Jn+}ydGa&l-y~zgF@q0zarE}Xk(1dg5rNQw3XNH~jAz4XsLk3@s6KsyiCQU8 zjcMFO7nRucXqk*8tc3*>*YGC&QZ82N8y>}m07f=ZBE;@;vs6$SnnZC`mqUv!FKL2p z70ARK>DMv?j~NKR6ADX*foW(>|IWrXHp|eJ3kEg~R@&#qz9tL6f*ja|$7>S~*2cU` zv{O=r5_{0h6*KX5@=1VUuKHpsDIcSsI%e*9sb6$tu8ptlWXKB8D%y49Bg~tc(%`mR ze_yS3z0@Yn>(@$|^uc%m*t)(V+j>s7#WF}Xiz=r!pC%3Iu`O#2urLte1<537h%q?~ zN%e!jX5sWF!dq0vmRst*IUPhDDadVc?l}z`G+McQ6{`!OWe3z}vm=IO!8ye`s}`KH zO8%R1jvVpuDZi*N;(-VC6Wk&hWM6_tVk6!}D?~#DA~GRFX6pnS(gk}qXRTN+*0QhNxS>w{dM(dvJ?`TPD^{#pyJF49 z?~l8>L)V(M>Ri_5@`HyD!5#T+8?6d2_K2c{;MCa|!Jwhn|NGBQee3OatsrcKE$nc4 z=ej8kCr_UN2#in#wHHGw)7~6fY$~;e9Kxq}jwgysZusqQD^{yny>8v=P3qM>z45sh zpMU-Z7gecQr(SByCXLRna$19X?tT!mlm?ukxDp*1F(ASZ=Xf|~Qo(Eyd{)Ls^)v|9 z@oAX=EdzWcE`runB*|RZO`J$r0c1-h93<8>NHbMw*y23w%R9ZMuG1YZ4 zlqGL?TNf{d8V2jZF+XDr1OUnM)vF*hjYC4nFuN7OI2XC^++qTNazfCe2yP^nM4_-- zEL=t74$EsJCA6v%I8K$oa@b$QE3Q0M4Xj9j9I*%q%ma@cd4>pJTL7en+$cbiqz3aQ z5}@SL{vJ{pdGdDJx;B*^w1zXWoE8Se9`MLapAC|VrEB^NM~uo;STW91&_wv4PB|4X zZt2MEm5WH2aLj9SHsxB<6^588CNR1~RG@_oUlB@iLSw@i96*0iI)<0vEfOLO7!ODu zq+(dZ7>G*0W-6h$M9F~@S;Tr6HZn35Zoylb5_;q(3~Ra>gq|9~BPKa+P`A8>kld8V znhLBr6t4({$W6HbnFN63Hr9yx7KbKbV-QXtoh&`er3@-HEift;lP-Tl2rAN{&M#dc zQoZx~i+)uc)2~&@Ki9A2aDKob{i3gEtYSuPf`$mU^vjSb9L>s-NKELLa$8wkM-<;~ zX$ST!KLX?@TqU{>vb*uST$SC_5i+1mCKG8y;?r#$Q%t)|Zc&T@B34!3?q{W9bW~q{)W9O%C*P58|+MTG6 z#8{GpM^CXOeyqT7&XO%2Tw;bxw8V@Jv22Z#={NLA!QkZ* zbyQ&LlU}$fJEz2Ff>Wq4X6?D*lqiPgng@xmlTiX3s-RYgnx1(im_BL2IcI!z>G{FB z6*>`}eWSd6b5o?@wwkx^z=>98U(&esxwqVTSCtyohYTJFfbUStEhyc#`{3JSCw{(U z*^%PnQR6>;KA{BZZ~y*qd9dG)nFJp9OGAC8-FEF&wQ zL%J|A^@WAUPNYqrHRXxt9vSh({bN4*;K2UfIxwK5Z1eVA&%O4?=B>_d(d>+e9(s86 zlnHAO?BXaN8lOGs`#%13;{8vI9QpKPlc!F|VzmZGmLE%>FyW)2LkCx{TCH#2{_l_b zXzs!#aQoH#Wp91-@%;7c_zEqRnWkg!;hm$#z4_EL554}v6SJmG%*)SWgEl3`suz8| z@Xa^g+IJ{z?WS!nzV!OTk3IYD_>XrVPIqo4oU&l?y!mgw{MxgRKRIU9`)gKjHi0OG z|5PTm9YL^S)5bbY8aKc2yd6gl5vjz|VBMOH4I7_Tv108{KAFWjP$;h3wd2(>@80wD zqYpp-^sF!EvVV=8cj*U@jve!Hn~vR1tyTYyJMQ>k)ab37cYwU}mAxw0O8sK#ngtto zJpAGt_dfdEhaXQrl6D-@@J~B)g7dhvDVP3Q8|Xg&d|t(hb(=Omr$NKk7k2D6Z^i1v znc3-?IUh~`w8h!y)v42{acawYb($`izno58OlrE*n`(5U5}`+!v@wGfFwqbasip=9 zvRNA``S8KO6pO*bhY!gJ<&F2!t|PtA z3^N>+GZ1Bj7V-98Mg1Uov42U`&_+A}7G!;MbfoXnZO8V+nXqHqwr$(S#I~JGI1^`L z+qP|UV)N#A&OP7x*1iAr>eZ_sy|wqQdg`r`(qg!Hf9}r2A<;|-(Tk3EHDUAYQE5iN z-*BWZPgmHE2UIZNTKSc2A0c9GkvWJP*>hlDf%Wy%Wyg;&e@jLO;ZzpJ2A}n>`I$&= zthkDN1|rM%O}PU#VKOLOi;=Pv)_O07K@!5m#W4HVK0Vp@@l}4`o3SXF()n>P z4&?Ax?IXG>*5(eE*!W^7yiB5Gx^;N>M5}0Qwh^fy@_y>r!zG+$ClyC<}ZaHyUAt`CYyX_J(VJME(MU|-n^oZGPFc=VwsCv9{LpoUH>(I zN|1*$)rK5>FIX5`Pfm=>%4D{MYQJrcN#4II@PU>&CHVT#Knb{Tx9U~)uyH??%O%XHz z6wABRynYYbWl1{)Xe5xB@lVsPiwz<-Mv0B&Wk2?vd@?rhkRB_B# zlmI5J31P8nX{5%Ki&lIOFdsvT0xdP<%ksDW)V1n-&F^ui{?I%pVYT4;utHm+=Lvw# zY_>b)tJ$C&*9qq5I!FIU?bD<1&w|n^yM^ydGmNr@Psv(eRo96*KkvbhuD07de74JTVSY*9C+#YKiZ6Gz+%iOK;foY1geLy5o-MTfZRB32d>SbCD9%!Au-fqa zg8M3E@`L(0D&E`kD3h*w-65QNoGr(#@OkE`SJ8!J*o9N|@(d@{xDWBz6X8_y^F1jy zJ!MA_sK68mb{#L{_tuHiMLWGht-c-ht^51gd-nCWHt`(q95vr3+oq!Vs-<6oK{%?) z7jN%AS#jjHb0pj6J*Dr{b5wlgf%=Z$m}g8-N+~{`WI0+xsG?yw&xniHLM8w%$p9kL!k#;k~2sP`p zqsA(d2I3PiARyWl7+$kksJ8@@0eAdRi4$3(dF3B+v`CQa%{B>SQtP0|s()*~7?mtb z&>O;7u#H#;@uchK988tO56b85CE>NF$%jjGzDGJCUlI4jVHa`uR! zGFq08a(u5_%giT6U1S8y=@qsaP5}p%R^uA2+&y!`&gkc*mxmJ&Wm;+;tB=#|@ps*t zWZDT2h?jRjJ%JBvpk^&*oiKp0ormx{FFJ9=nzVIzj~EN|Oh~D)4QhTA zzu~Z-`1AY?z{ZpXSv=Dpiq{w)m{qQS)DO3PNAjL$)I0J50ncf$Q>mi?+v0?(2VRX_ ztqgaSiRI@6H!0U_J_Scy`%>meIsVI~B%bn{P~cj%%?ER|N}q(=5aIg^wP%X9C~Ghi z6@c)ob7ujHJ&ap~0x)73y7*_u!}cIE^*-y1NBqs@x%Jw@&Ah=b#rM!SpD~R4QJHu{ z#cV}i2}Brl>Xm4H(;YPrR3~V-Jbs3x?IEKbPzr~HkYatKxG4UJ#mxjxtZ@gl2W^8` zp|w8Nb8+ZJA*pH()896#tKjH;GVSb#d6~aLN;4IX9lsp`p^urc3c1<;Oy2x{N`x)m zhf~p~P2MxR^ezCk78Xn$3JME;duoe{R@#F$Hnbwi(LLWFY?N}o44&cVueCh+`Nqau4wEYqQIY*eqY6b(fBV`p+F8599Fb&q6NZuK8t~= zTxUgeWX%{${zHLI7uhmJ6i6^Ct7B;`t|+TdtANC?z1P}#2?dgwfGZhhq(7+z=s`O& zfF|(HUHs@i4XY2iapw)*FbmIe=LKVQvOeGKkE7;N6&Ez>Je1{+w+Qku3$JTe93(r| zxuS5clWY^>g%*}PjKaCKeX!bd+JImYM95-~X)TtZCZ&u6^RMFCRY~%of7A*gUJ$?O zuMG33G(VM{7e@6>8CrOcImTIexG48T#UbGMzL%zyy*cc^{$+5)gXV%{_ewNxi=(dySY1l+Ms;l zX90AzUGI+&uI&0q9!2+hynMV4ri44BFH~=RoNV*;7%e5i_rS|hr_tX!4P@glQ_BBz z?IV}T`S|cMrfb{3`Q$lB#`l4WAJx2mf7RP6Q7luYQf>Pv${dU%U^m(iDm7=}Ei_Zr zk&t>nNK8pNt2U^6_PUJy@Z8Bu`+V}8OD)b-tGQX{)K~bliT|pgc8;Xmk?s>2gL~Y&_#*C2FeOW%1-lg{xt3 zo|1Vs&ditLqOVcCzErDhw4&+#VNY^S&2}|WRcF3I{IT`^l*MX!yGS1)_iE?q_0s2; z=GQw6Z%(=1=w0|btfI;NHj2#E5-)t{ous5vlGea~Kxu6d3hg6x4DH#&bk-}!0M zQg|g>3bc~D7!AW5Y1l^){2B-f!nl%4BtUCIc&F6 zBHmLDUZeb7R~ndCW56-5B4sdTl3S<4HSTUnAmV0uHiW1rC!)km%?f_DczA&@FrUP_ zc1lRmPt}K~IFG&#TBF}f11@;>ZCi-QVGEs+DlsnNP+A8=!94i~b}h~&2+aT+6^y`9 zK^ftRa^<>>WulApEACnQB;qAZU^GLenc2(YP%+W`{?JX|L|#T?Gv~>7|M3eX6&?aB z>Ml`oe73iap(R7H9VAqsO2{EbIY~R;PJ2Kgw;-N<_)yD1Z#tZz$^Y4^oqv^NA*$rV zh&T|gSo5#~423uYhm1ok(>l(^j*s(=#-mV9;7|^phtH`t#qjXK z`E4&8>EZIb)t+N|d-Swj`g&`nwEBeUNpq##?vUq}D|C#4kr2#2Dlp9E1&UvG6gv$_ zk%;q1(Ka7d4*6;p>b;ghU5-tYvrr7Y*{2pZa&&lRd)}IjgBd>B1^rQ#{=49(;O46b zBkQH$@M!$_UcO2R7KSKHLEpjrQmlIB)?Q0~hWj^q)Zj2{rK}+cEcjc zaOTw1T8o|gGVl?;SJ3_8@0 zEl>RgWov$iuQpD-9{4=v_6L9X30SRo_&qR(yb>RD*VHSVPHFqXR+;!ut!Mr=Z7LQz zP4x8HDM(WCu-|%)XF&C&zH`%a6uVkU{pCV9o0pWe)#L~+fQ;2UF-gaATBOAq}k z5*no^&N6;o41`Dmf~r)5Dbr9Y z8VhmUyJ>2fN7?F@Pv3t(C zwpL&GBXK{ger3n^n zJLei=gimln;P|O1z;z%+(*}nBx2Bb1cj2i~jMSQSt{KSjzfxTG7|HJ6t}HJ+}83U&A?yk_vS&e$RZszABmt zsza!)8#>|wANh;Ewi;CsVVneXmz~$KrCRnKejkA2SiXB&WPYCxmT9qSlga!r03kC4 zipF;|H%k%T}`}0*k;O=xIEmwRtR?mHgl=2>j zMyI}?@oL^ON|f|$(LRgUe6wFt`J(fvlS;Mh@q7Uae%tS^hWyV`iR;qFquABsx);B* z?Jv^M+WE?)o8BmTZcabFg%0t;QB{4R z>ls4ZVQbCapz@$MU$Pmdk!o&KS|gJ807Ws`=j`tZ(#ecUnR=LbgE@)pU3$y zP7;4{SWkl@(W#N}d02>L1F4C*i?{Ql*5+j;O)Hrj4C_K;GMp1f(A9MoI^R=Rt=UTS zyEKC!X@9DgYd6^)O=dq^l=2lBV3y^#5C=OFrV7vmXn@v$8^MU6Zo9_i616mm4zw5X z8|KA$9i0?|qirp<@((WS;D~#-DM#N7{p-h_1Te#1Dayz8!}3|fZNA65t*Vb39>(#F zcwSbqGf(k8A<5YwzKySVSC-c%1pC`d z(OKB-NR2iwyJhIo?Y{EVwi+O6Dbzf`dJu_+%xE?azwNHJ@rjj#Bme2%_dI7 z<&xef2^5hKCY5hcwfxpcfzw|0`;ok#?OM{ne_$R~PtW2i@zN=7d32bzNS|+2nDVM*1_SEreq8 zgV6=^Y*)D$oQ4cG+sdR*<Tn2}$Dc_GV_D%OWpZeb3-O22>TE?p=`a=%dP7VgcUZ9Z!OvDbkd|KU^(e$>p z)zS=(q)sCat1`~lE5Q9|^y@y4!mej*gVxfLmTFb_uZO4W-nSF6@%akS+da=yPuSA` zbK0FG0n65}u>!lfHQ>HjFc!q}zSyyun<;qGQv`e_rhPb;Bz8!#e_`SvYZEw2wU`O? z$@9UVgns&@$`8F;UE|(fW;{Nkw6*DJfS}ob*_E8_bb(<$*@Sl1WS!z(5ziUBMYy@6 z=+NX(^7LZF!RUA7V)&|w4R9Uc;VOp>IJ^14=mKE7L6xI{I2Ow=?7F3~F|7&eX|nBt z=zfWP^Stx|hVTBaZan*WeKDuwwMUJ;@MD*B4DWEFY15GSa(vMojLmR&pVPUkeG0oNx?0Wcayn_{_5*^#ihY^hdr(Ne5^q6@OQlk*>dYqGv>ldUs%$q}5lTyA zv>L45N66=v$~BujZWpt;e-Q9bI)P5)Uk6k3EK1Ya1`)8Ep0bdk*|*%g9fEIofCH)! z7(4G5xeW%hrKGu68?4#eyH@IsZtl5>uMY=faP?c97WjN#L{lZis&9kWB$JA7es>g2 z$W^I#q0nh}yu@_9S?$!HFki1KDP??R!!fZoKHAs&jnZfnjqt)rk^gDb{x;w_9B>O>9$kM7_C!(M}Y0@S&#D{52eu7h7kiPlE>|r>!V( zg_;WY#b9k;w|HlsVLp6^eL`lM$}Qr_jkL9oX%cz03dOXAxJ)+tjYglN(3s30mn)A8 zOSe7|+e=$C-63BmCm0l#xNzAgKD*Y?1=>Yq9o)r~AXo5k6nmpuGIRlvCxe zsLTkj@V%2l0J_c&K38t_=sA(y2KQzA5g$&tCQ(G(AwDs5iw2Qqhv$T0U*&x+&xWb< z;q48aW64i*oA}jW>?X4b?FNgLR>eJxuhz=Axr$|O?^+E?_ALh(SJl8-b%|5vu?OYl zJ?j6$t+zI4&C-LdM}L+SD1Aq@?GUW0bsZi`b{oCF zxnTN2VzX#D74W9-nqW^89*^a#WwlUmz9BmCt>(E;A4Jkc3qpLtT*v3$8Nq!<#O zvCZw0_h|k0x+UFit=V!cHoHx8OF}P;Z)@1?{0Zib+vsT;myg75*tY2tQyTVX#9F5@ zX8p3xARo7y1QRm^()tw7D-Ru34hilS;tnH3PsbxKps&-+=^@Lb*?{5d+?n1#plY}# z6J9@}!`}0#ecFm0@$ouf;5wY~u zN#ntoI-B+4ZkF?;ab(Ou%!Mil7>u2o*Dj=z%;6FRrcF271w&Rhtw@02qyv-7F{@3& z*yND%N9zv?%>T<96G&2hso=%EHoB}Yb7y+V_&aG9`v3aiE|=z2jJo>)b8C%1nv z%t5WD7B_+Bm(JS=Cr)J#--O7F5ywth&omTAvT)GMMRt3uUlM3! z%v?`aVPL($}gvA6HxdEOWAl?uyQ~ z=xW^&n?yGhiji0}@BJ%IAP*do?r9YPI6N*7K>j(Fkf9K=eyZ}F2qs)7Caa~_uZd*Z zJ#*Y7nO~U}_xL@D!KvZ78&Qmi&lAn@^RE%zD!n%av3>jX;a3jHM5hl_xJl7?2bDk` zE_retg=SD>Gcu@Y&*#BD29yC`?7RPx{wH-~g={t#0&u$ZqIG91wZehw$^Z6Ye*dghQO{TW+1gy7lDP+)4e+fp~(28gHi&Oh4+s znXNlllJH^mLk8$5LK8qB1j?qgcO?+>aJ3ps!0R%1ug_xNeDvF^KDm-13JL2f0EG0V z7{nJE-#Ejs4BY#XSZjO~@lZC$N3WyhuNFjR+8Hyo5-ps*^fPgI=wG*62m5e={T>gQ z{Zd1;3qzFchjM)3<&GfeZsqqAclX4x1hfZEJBDhx*-I%{AInc$tY1Q1s26 z4hoF#C-2lQIiC>|s@UA(S9zWm zL9B^mkM^W1i4x=!I&DD|M6zbIRtf~(i*RsBI%Fr&BdRA^FU zFWVZ*e$=Ppcz@ZtXNfo>-T2I;*W#sz_4l^?%MQ$}VY5bmWvJ&I0~m4H8_%4}ox!CM z3Xo2i@V(HCy1F1sGWI#>T0_$lX~k+^E_5k@Ce&d-d`O8nHvVViaMG*qF#URKKfqBxqe-uVB)ZKtBBgJnrD1I%zU6nG z=j9oXS6ZHmN*`feIERM#EYjwLJPRh@v7^ya9^jr7_2i%Ql*jRPHJ=p!orGPaM}$qc z?$h5p6t;8Q>B|IrWS@&hc_Sf3=ClUi{ojn7iyGe1c&VJhSg8T(R{`$ycW>1OaHGgO z1ms{eMjEfqepUf~bhpXwH%(Au=OQ^>5^^kxJ~F)5ING?xf(T;T~Q= zGr8`ejICye24AGw+E~8lt6e@_q&Qz@js*Pu{R9mi zi?wxd;1FG>92bnm1c~z>nU-taPNoN1CXZ9kBWZmMnuMjnMNu{erU}nkbOtky{|dA( zi{t(m_{asu%nYJF5lD6qUJW$*PwLd7tzfgid+P1Y$Nbnr!IOuBjb!<=BqaIJSTjY7 zKlK?`@Hzz=T}PXScT|zgTAf8lqON1;)N~hXVLE|_* z&_)dDHmcf3ba{8@R|KEguZ9_4HBf8tb=?pMRI0a=e$miEJJnO>)Ce2tJm;rr(fDhC zZe@Z?NlD$@Y9bVqI)}(KP?#{&z^}v+(6&`Rt`?~x@wlnSXMgpz#3QD(k6HQI%;#%Q z^#ny?M1`>7)Z2v^GtP~%ZwCH6bXUU`n`~lMQ35VKOh-9MMXlNBJE48q#ZLFX7~`L9 z>;M;wdvUlst}!0!`dkTq?DD)VtjfV|IUgWb=l#4J#MIZk8zm@;#=gIJQoM|P-VS2S zAM$4Kym^ZAy914aK$hP2itj$2$>)FC4vIVX{Cs~jA5Tw6Na)efEf#jFbFN6%H|>dt z&a?KaveI!KduNCG`5M?u!|CGotv&Sp8aU3syz%lejE-KDACqPX(Q~M(&*!@pn1+uO zdy#^s-antY8EXjXj7jUg_qQpvLZg%A|64&Sy>^Go$xX-@2Cd%B#0%+`jc%hu-;HQy zDy=rJ{Y)t783v6mul>nrVc8Cgu(b_6Bb7`=I*~!;(e2idboM&dQ^TLIwGXd4GL(GTF{gW%4J{>dz2rl| zwQRL4!xM0az8?=Qw41hGg4L$B@tGCIKvz!-OGU?%Ie9+ite_%X(xT_y`F%w3xqmYb#YGIbjB+TUm*A5P(_zHfO2yPjmY#rzMU{v#~5 z#pyuSmWmeC4wDZo5!67uY#i3_zU#kVv&1mp1O^hc)bH+o$;3`zcXieXYjw-n^{RE1 z?MiJ3CNN7>aAJ>cJK<-|Wm8w~eC@zuu{b!k*MxN)%k9Zi`qId04U6D>7$ zI_u7yT7#Lcr)RaRX?$kHlA2bcJ^gebW{%&%Ri`jh$o~s%3>S5V#u1Gg+f@fni-JF6 zxedmL(*ncIDrLb`ozGm>O}q!bw)u)(symz2uk~_}js0+Slmk3R%8ca2#;xU=v8n<$ za3LzF!#b!I-pnxa8NlvrQ*g{G-R^c_Ki`LxoShwUGs$^GN&Vz~o^`8);le|$!K|;B zInhvi7~u9;dZaf#I!d{Bp7{UGjAI*2kd$VSYGO&wom;*gsJ$noW>8ZXYFH4PNB7m} zc^ey!<{$X%(gjUeQY+tSp?hesU9FcyqZU~ptq8JvQ!6P0qa{W1QOW)-N{A;1Y zgE5DCh?PV!STXD;b}jO9a8-cnz)ZsT(k)UimL_4~?g6m62ePFS|lQm#Y(}OiR%^91w_=5VT8bmQAd`u5R8Toumga|=v3It zeJJ>#CO_a&e8q(l!Ct3KfWA-BBoWABAjKC`&~+q_G<475k>a4p3E`k$vtTrEHptPz zADL4Gf$=AKETG5%#{Iy`i6sKP%I)_%a^j(rq=#b!fE`Xj=i~x7cnlf5mO--OZ?{Wx zvVZ8Hgql22Fi|lv`m)&vPdoaOV0v?{eUx$lT2lJ)bbj!7(^_3{pgi zzsNgrdOOkeCR}|VSI(!wcbMeG<2U}o>ZckB{~nO0jx}>bU}Z+?#j$V|8-zI0IG|Sm zUV_)@-w%+FB;jf8md~T^;p%>@;?{DbTDixCk&ibgw9~T|v9Sl_EzY!cVrV81V|8Fj zk`iRT{Cl6Eog9PL?*8qW-{$qY!I%_}%Y0N(q37-D?CfkgQ7R=6ljVj!JQ~tBxC<=Q zHQ^;&qMNwvw&!;oL%w5C96t#I=!iN?4!Gn^30AsA^!Fa_KjC=S!SBU=B3OweB%%5K zV6XBylU8%Z*9i?t_v^p<=Y*MVm9BYe>QIre z?NX0;nGj4F7zV=u2<8bjSHT;?2FX7N4;IIHnU!dd?V^Ouep%-&9@cn&$dqZS(j_UXe6tSC?s3eYduIj7{zX_UE2;X(5TgVQGNjh zfGxD#zlSOz-g!Kjcl+r(ZRz%PyCNaZH5X8xZc45)+z(SlPHu9iFHBOD<|}*x4uJHB z!UdTU#pp%xB_Epe_*EU7n;uRuH8v-T0s`2ROgJXy0Z;53*^dvsMMLioAers=N*uZk z{<3cfPzH5yRW#Y7q zeM`*2mP024B@IbN*?WF17bS6e*y;1ib2FSkqG{vv{%{~^w_G3+?So78f&LY4?d~c8 zx4=9(TmNy(fRIi*t;8-V^Q@Ek{)UMztW&N5${!BietC%PY0EaeBcPspRrImadVnhT z!?e`Nw}x+FFt|DU@Kn72lTc?!V%;Lvz1wCcprYpvDd=ZX&^QT=ViQ|)zjxF2 zK$_kNhm!^g|E;*U$m5E6F7M~t?G(@LxHNso-30rVJ1R*N3>q2F>v^5Qp-kr1+abI2 z;dlgO_lyII0l^-~+kTQfYV7#bH83r5X79If7!R3830_FP;U5wZRG|^$;cz<1*sa_d zLXXXM4-&EH?kyKU7!>VN?yWG;Ai5(P4}@bsvLq?8t2=2-@maoCp8x&s>3T0Bm&^6^ zZ_`$%^%7n0BqV&BvH-lg2s80{sM@j`=Mj5FWaGCCLbvHy%l+Hvk8I7;t3I@R0jDRK6vAXj3c} zZ)DyFz756t?6K>A$q->S=q#6y6pWc%#39}pX+|oFX!|z zNnrlAb!o6BzR_dC3TFZ7vwYh^!AXZ;#{jg*|GK@s(Ob4Vxl8f$wFcApqfMfFk%2)` zOJlsH9b3>>OCcWLq>#Dgk0PtI!F^@<`A>EIRljqCyAJfjh#b$;Qf<2y)A3$P&;2 z4-4x0-+4Xj(IBGXu>81C6B9k;q-L`Z-K z@7GtU;armVx7qC`P@&&@er)-$=ODg-!lQ~fp*TF?bH=+4xSK$5=Mec?q>!K z?d7+}j^-*v`-*9XM^JD9u=23N;-2=&tBgvP+}r#Oo0N-WA`E!A(>p?Yg`LEpqP{N0 zzVO;wT0pv@*%iJa7Oy6AfMTFUP*F~ypC~bybAb+zFtthYb5$uq8uQBy1A<(Jd$cZL zsIo&+nzpl#P(v?zfA{8O)u;gu(?Q=zm6nT)S?4ni-d__G6kcY+zhc1EQ!2J$aK4mY zab%b|V0!M}EN)nPfmFqaVcl?0a#+aZRp_=Ywip6N+Sd@+*BO3X=s?;xBaJsOX7#0F zO7$K^IQ=Onm^Wg|LW+o<2TwGHFfcwg}3#lCXpv3?%D6BNGAanFSZ-Pa? zz%7^rpT~=h$1OkpO=@_sZD^01IjHe(R#Q2=guykKdhR7YV+_mLn8Nf>U3k!U#gYobQgu*t)Zl8=tLQdn`yWwn@%mE7O%_u)h5k zu*ZpZucOX@sG#!o4W%PIAZGv=L-#fVmU*7zB+QsveeL|IS}d(5r|abP{OiZ!s@IP- zGLPz?)EuvMUO)c+QKeR2_{x&vgsLM=H#&}!iUiV;_GG(V2-v>Zr;SGxYiN+P6}AJ=^7 z5ViQVFh=~NA};?>hHcXZoB1SO;OSAW-)5hpo4~U5?RZ{eV`}ru{gVEp!R&R{%W2uc z!2u~LY15W3w->2M0eFWC6uJjS7SG4i9=;V>miy4xy(ji5zqZ$!ugKEU3X~@F)`R9Wub?D;QiEzpCkZJHcKWOs7Vr=Mmz)s46}g1?>4yca zUON`*_K@GP9Pg{(b{NQZDHOoAt>yQz2#CPXulaWiL;N0Q^}Pxr=!X0QMvJ)JP3M&d z(k$8`5wPKCz=MFQfz8(=jK&2;E}{tC{RGg&CEhCoY9i-h?kdEkcr@>%#P_W?Q`{?r zu^4fIwf(phLw6^mpA$;%jPDBw2v&8uXkoUyUDUQ0^!ZW|I@l1CbzaaLL`Ur{9qaOJ zHp|ktUj-T-@s~>6peaz_nR8f#VoFs(n};5eF|9P7rVoXK=M!=9Aj!5 zzjaj^f=z_!YFk^Muu@m@xxU6|{(g2iKAw@wL{NZuIteRR8XWn-P;ukdCm^Lv$4tZN zF1|hVe13xE)>Iyo*>?G%H&-KUXJ+&o7zoN&mnzcu1h1F{C%-R4CtxA|ZPZT4(2yvA z7$B0~t|(a~{3DN#*p{srnlQpLLJ0WFy3N(?4261&D>$eJ?v66R&5oS%Tk5 zYUT7AfhA;6f<)`6T0t?tvcqvu2&Jwrw;DkEO5n0gu=g`funCF$1i`9h|44KOK~GB+ zY`;?Y69s9sxzR!k!m;JKv{u`Pll!C14AUGRj28Q^&TwAype8gX!NvC&YJv-bvqVGN z!MOu+{;DVlhJX?j2bv!R>-c+{Je;qz_ePG@gnN^f?M9dKW@b_q2zj| z1IbA*9n5$#f6;peAz%rh*L&i(TFel)e&y4CSK9${9zzSYAM`*G^zU8-x06cv`1tU; z^&9>Qak0P;$wwQHSvU?X6F^a^o}h&k^@0wJ#)|cvB|Sw!yY2~XS>zfzbW@|- z;oBoR_UBTkws~l(&+iHn7Ym-*UU|xwx#TU(VoNT9Jjm7;Pi|8_*+!oi$G<&v_z8xN zG-J4k9lwi7?tITWFYzo5st|q&BufvE%0-&1&Nm-%$ODZ`B!kcDQTtH^5|tGsOXMBk z;7uz<;`Z%=V}k=lQbY#!$&z8tEekhmo>QQ6{gdtjs^iOpf1zN?0wh)>kP|VNyOH=s z+Jo=B9xq%OwBALTZb03l+EFDMJANT@?rKX2e5b;91q*@>el)=bZ;B^#`2NvD(d&u| zWl<9aA}uo3O&(Bo2Chno$)T%Gfe_No5PXa%dX+?qf}1o9EKdYWByoU4btftFdD;ov zNu>^^aF~{AmZKl_N8!2MC56Bu>=+P0zP~U*+YUo(jXy;#OCsl@1$CN5s3j*HAwY?L z>&t%^ z&G}tYeqFUa2M-EGqH36R*hM15UrB` zxYEF=#P`@o>0Sp}z6pZLs7AqB=O^0V&qBr_V|GROa>V1kl;D9QWST$-Kg+op&`{i@ zS*31ulw9y!CIg;q0~dF(2x`ws2{ff{+);4IwryG!r(byEr}k@!kA|M-A%~7UkTm<< z(O`sRN(SF83~4SiJBz;1^6NqT2U)*h^HLnFycc=*R8!mjPnhmyC5WC}V=)CSLI?9_ zsoObu<5muCD`KecgUPpJ>)e<)zEbNKj%OBzU-C6ITZ88IFG9}B%N@Mu8w2d9qt&AW z9+cTX=3hJC-!D%QBpdf3A(tx%=}d#V3-6l~mg!qe$3jJdaCUhExwc`9R^W+|W$|ag z&Oaa-5*QpQK`QczgWXj6BV!lQ@V01)dx0z0{woQ{VnPF8+u;1)b^_o-zGECG()ee| zQsgP@IzNmp7w$@#_2eLaTfqZ?VX(nH*x#R)>X$p0A{M|z%$ zNi2Y96W;xSW6DO%NZ>AlkvGFd}RmITl)s_EfCx>w_HK z0Sf}2cTba!^mfDWu({~mRdeBBmB*+)b zan~C_88m81T29PY%3E7q2Z;s6ZP8p}jmlR;64qDOB<=S3z+RgU=ksxxt4rzu*9-yU6TrgsNd zo`sz6w!kiST%Y4$hA%nT#iuwohqw&u~TXV`Ibp zy!o;ORXWKW<Db*=kKtAJ zT_eokE{J_gq6opjeBL!wXZAoIU+9Q28KXb;XwRkLlfc1UVrDP|Sqm#3BUVqH!4&;E zE+k^XiZ>#t)QHfqK}d(FC@i zu*1?x3<;0qawPb=0JX%}gvSIipd0-5eh6yT7E%OAX!h70U?CBOliFToP>33^bGu?? zp(HArJuo9i*J5a$;Y=%Tg&MnmyU;`cJVwYwM3-I;kbVel++IAYKuzE~LKo?1S(1Y% zKX5@HE;wjd$H)4E(EBk5y|C5fDoST!%+y$*r0G}sVesJxN{<~Ts{_I)JUWR(1=kIYDs!McAP3}Nq?eUlEzjHye z3wpT*p}?cSfx^*nq(CuB_u&Q5 zR$nLCwZ)ge8Q=yoY!D8Zito!MQfvNB0|a+i8QGg zg@GVM*o}RSVt$G`?dC`9;@LU<1e>(DJ)UN^ttWBmK)WFimV49Ub3?gB^!l=bIFI7B zlUEi;#HUkb1`rm+AA?%OlhT9|KJKRTOIf51`acEOQ$Gg-9Ry%V11ocyYmxl+$VReD z(hG=xT-KV+A-dzQ!Xs1k(Mrq^d3p_DEY4k$x0XE?ygi?%xf!_-VOT{r~)ax7mz|rPmw3u7(J2}t7{nfFX;fC8+ zJfT zIdTge+|y55jQ3`VMS?%_=D12{CXC<)Dhlg-ha&a_r8gbP4(tmb_QYLQ4g}`y0CBdP z?ZD{^9TiaX5=GHw;xFrku4^28Kz(QN!}b^pz-JJllX>_5Kk)gVIO;=&bBmr~o7{{% zi)d3z9!a^r9(QEcBd}kfzl82Hk>dxI7l+uS-6U)z_^7ff*{_RpCRq#&$C>v@=f)Yv z>GyTMbkg-c6s^=l;>Jm3PuYmQsG0n^;qUYP%IsIcxXwm=dbG!<%%DpQs1geW^Ap?J z42r0V(G_tku-aD)C?`uHk|vHaru~6OtN4?*Mbw4FdnKY~Vm&ehFydCf-55NuF~GH% zC7@w3Nz!S80=6uCZww*4CZen>3NrUl$u1)SHlDE;==RH2^`}Y85^Di$Ufv*G+;8LP zkFJMX?_s-`2_<{cqqTZ2FPP6 z#tJR>R`*y-EQg{%<(~zeCw6hXCm81&aJ-J*``jQN8%HamB~HZq3Wam-j6#jFhnE=# zfIt$n{oZ9&D$4{*(p9k_aT0S{2*}W9>flN$f=k|m#3uoHzF*zA2;9RsLVZSE5=A3Z z0!~K@h^30Wgku`tX6}Pys%kJj4H8XW4E{`rq1^YU6XAy-U%SgDeUx6CGeKa3o9PXR zj}bu&q3&xp>I0cgWE4U>8o;V;Nz_mkU2ElKCf_eaO=E6v5QKs@7$Pg&3xKaer1S*w zVk5f^1Ngs?$ORBfx!03s4(>6N`?ixehY?CD+z;iT6$a?mIE^0TSTSQOASibx%RxQ} zqqWo{6G$zG_K;r!Mb zf-?XK%t5SVHT#Ds&hsJv7jFMk6FOzvonZJO5n9dK3FxyMn5uy3XVSPYBYpR~?oxjo zo(<1l{<7Mtx&XqQeZ#}o(^Xm1FDW*mngPXTOk;is% z7akpv*Wnj>+eUnK6!4YMRGKE6r(l*+JB9Tak^eLLHYoc(P2#idOS`~yh3YOyw zhJy6$Mg$3J*R(h9MwTe4vTvX?mo4=tIv_o_8}M%v1veN_m(hzwVGO}EFA8Eoh(N~0 z0P+M@(;Xq<(Ez<&aC_)`@j+)7Hx-FE54v~@eFQfD(x9r<94%Ss6Ga4mK zz;{_iPz2)Mau%Ow3kT^9tTQWdyQ8;w-s;_zDtio;Av^l;%Ch&M_s0Puvk+0ql(O3z z%sVOvKg8lPBC;08RRFiR1>2lSQ7nl=<3h9n!zz3=z%65fff*?m8se>t##Bn!>!8S= z5QX-?7Uq8@iJ&;c%^C6HU->V3`(Lc$=UXIfhTteAn69;HH zFwUFcTvMCkb^9E~?DKu+!e$p*K5kEVUia(RWt`6bR!j?d56SnYvOQ3B+8l)g}9g68Yj& zf~ObdU~PLTIQ65z<*_NXyWjyWd134(_QQ#djq3Rj^-0Tsq+g6f2Vz7a4JWO6_3y7* zxgSmwcPT-A3MJ#5ptk4r(@Swty#hlxv=?-AdB1eHu@V315S(z5{N{@YGyy--3J@Ns z`6Mt9BzpicRJqvKu}^h=O{=0Ndb`yLb98E3fv`O z)T#?GLz4lm+NX9zktynL8kzC$*IgdDT+2+G zqhhuMb;M1OVV<#=eD`uRTeUz6Fg28j-(_;QP^NgHIiDfi-KxPZC#M*fuLpYcnf02tg|F5>l2{qXEnZn%gO zW}mt@MS?)39A${g@5YOwP>WfpJq=yRf0e9S8apnUy4-+Zfu}`*gyly=wX)_8g5#ULaXa+41hp9S~QrJM^_DV~p1&tT&9^&O2 zW-E@!UEB_!OMOjC5HlLz!!T4sR}?XI%64S^KaT$&uQ3E7v3aAh<&?YG-2Sq34H5WO zhs+z8zsvX88O{cH{v*j}M*X8uIeY#NW}C%*e>?sb&~6s2(tAFKH}qw7wOMWCb$dD0#HTa2y|MDU z4ZPvR7aSfQ{uZt()qdMz+r{Mv+aPeH{1E8DU3R+>)Pk=|IH~DB)^9K%(^E3kN_eaNYE@euWzV*KKNl){A8LkmdVO;h#j$R+aI!vs z_vs&UA2`8Wwv1Tzsd9e<}_(myZo@s ztv+3=4&8{exOP250(=XYJPLqm)cmJ(fh`RGMe~3iNGX5Zv5yqb#Kk)Q3PZbr-ovBd zt^C|v>&8}+sZYD=mY1e`{G^@slN!Z$yPqq& z(wzU8t$=o<1_z}RTS=0}_kg6$JN}z=^dDu_0g)J2`Qb9T68s>(ucVANGP3+iZ;x@c zeBAZo>*(xvyiMtUx$~*WzclBP^L6}02>>l0bs5xu-V?jZu)$pFc`>aE8;tqu zeeJ#L3ECsEMOydhd~e&EO)I^S*gwXotrLW(4cZ2SrA?ZMx05|m%SJv8IvFO%8^iG5 z^o1sfP-`OXAYWw*=;tnuZbyeaMdZIBw>~r8A9tJDpX1N5<1F1xIz0_rif)d;0vl{+ zan0nv`PyOLS+KvoAm>}V1JxM+l&akkqbCg*WXgw#M`>(-{PRw&)*DsiDvlEbf~V7K zi?4k@ankOTJ0c9QvPKrrgTJ-){gmM%=y&vS(r>at?vWd*g;&{yl|t27bRug#6ZxM+ z;S|T{=!jDFWG1)grvpvZhxsh2?#?7C_BdYsxeIOI&gq+7<%{RGUN}0*PS+*CiGAQ- ze~%UR8-lNMTmI!@ZZpt+Wcv-dCUS8BznV_SxG=-_C@F|T0U7V?9Mo6m{?S4x_%+IU zc7P}X`q|0SgY~tjs(5D}fQQyre2*y7)`Ucu39-ri3Vr`Gej`Bi+K-@Y>wcVwP9Rxs)Mv(W_*ewBhpzmYB;jIsmz5q5G6VfY*l1j6m?;TVRdsS7; zLbq;!zi*#k=-=9n*24m~YcnLese{^u0RMP+s2%s0enwyL>lI_^)_=}cK$Ls<(S!U{ zu5G7iR!=S8DF?6%Hv?z4)MM)wIeCtQZ7WGer76kSZ~y@gH1FbW@>m}AzYVEr8kt|$t1Ol zICXn8+;mba3*T_a0QGbio|!EMD|#uZ^%VQ{k0mT!8oV3k$G#R5u}Q_&N*!YUamQRO zi>DwWGQ)r(7AbR81m(%)Lb6P34xy2b?x`=|J9e)%*X3o$_2rA`X+b;T5^C?6ogYi9 zzm(Mmr(Z6sfw8GKA9Od|gO&@r2f-1`;O6#`@Epq&!{tOhJbS8*)?!G%-mb|12~yMq zG|zbb_Xa8wnT*0()O87oaJ$Rxa;YRtf@EM7bFuBc=2!pHR1o-VqdK z=E*jpFN%+KD{=P{es_*FxBTG~QCvEOUha>)XZsP1S4$T9S;5S}V&0_eAU7LHm|9nL z$#aho>@c(~l?YG|<>DGC1!x~Mtg0+IcIv8#;VM~~K2Rb*prMEr@vU2`n+uZe8=GF{ zFGEMe8{2&$Ws2n{!kJHnS%?J8p{{^44!eF~Xf+^UvY-<9YLA=7T11IQ3sd6d1XEZ3)%{U0hpa$ajI|7RDNcekn;ooPmrRu~IN+OQFdm{QMEpkUv9sTp z&A;l6;XEt318OI9^7qAMMCToW7l0+oh5%$a4yRW7MGQn)#<>7fb=+#H zjWHqCbrB>?J(WOdnD_JKKsl5OQVuvF{IKblbxb7ucT22OXeTw=o24^2Z`I9l{L(ep z3J_BITqaHd(V%A4<0x%+G-SsLFx=;>I#eb&%Yo%7{5xor_cs8L#Xx>6 zbEU+hb0!|p>=1Z?T`U-STs9911$^}}`{#m4gQ0^V>@m7Y!`X7Mw;O?7E{FXVIVNET zHE)wWqJ9_zWXBKzoERPU#@U2)NnlRjHUqc3rKac6S!oTyzjOa@k=0He?LRT>aobbs zX2({eqho9+Q&CR(yk$*EQSAkwWmTlH&j-9q8)T$R10~x$CVVurBrC1;mkXKTUC3Be zT)t3)ulO6YcnX!Ic(H2}+x!ID{b%gcBew>NBc!wJMll>6_ILL+C4`mH%OF#p(B3AZ zs%>AvGhAkoM(vA<`0RrXW&9R&IZM@3gO6it9ZF}J(bb^77qneWwJxNx)c8&cCQZvG zdFiVlpuHyg+KjCHs)K*8a9KmGvLgBy2M|Q1ec8HJ;Y`!5-HC$3+W`Mw)>o2`dk1=M z!VMh2sW&mL#u$68vqNypShG`)#} z#l-mde!D-XRB-!q&oC>L_ctmJM*l;kfevnp0yQPt+rji@#*oFivqv*681{nO&GJUq z42$~;=BtqgqT)i->r!bl`9#}BKOW+%NYiRYU$cX(ywkjbfp^mqQ(!-;YYHuC589kGSyT^mRXht*-> zindaed-28$2cN==BJiPSCHRtZ5FH7jp`1M>-{>EJ5TK}N>@F)%LO@(od9#Ncx;X&v zHo-nft3PPY(IuWr%k-s#>2%HhI03_5{v0tDjnTPD%s44^0?4O4!jcCa}O;tvJ8 z+7h`yIO4=|plEypa>KJN8(YlMD^T5PP=Cvax+w37nR57;L^70nr@4DjP`gkFF`u9i z?+Mtn8bFgR?tosFxyhHcrI#QIk# z+ygm=p*HjC*!%q&2?qu{8iiNiv~EjY#BN0{5;AG}Oi^Yv!t5*j z4J5|HefP7}l{vwqvQEuaWtO~=?yP=fV1{K<1N1D)8X^3S1gh9iVlG&fXv1Uui4#>| zuE2nF(~mxyk1Dm*X5EG$tP-tVybzC~6oN*G?FUs2g>Aq-Hs-Z0vTiP5r?$UGVK*Gj z8!$fHgt|g+6-_(pcA@rHIFN(j26R^588R`1!W^!=KI|9LSP2 zJ-9GSlf@>XVB8KzNk7V7wMD-mJ;4G>YQMjn0l z{xC!pYIA3=DK3*_)~p#EmO`+kVAeEVb(SAiu#>~QRnA;*1Aksw2n3fK{v2%%|78T* zn2Tm<33ANu{5-^XQ55CUJ}XVo0B}+C`rhiKh*D$X{KQJnMX}>n4P*JoLkezritA3E z^J#di>d2^v8VbnYalYAj)y&IfX6dLR+qgdt=G4I48RFzuwGE83O|CJgChWQtgIQxo zWLdyt(){>U%ce{h>G2qGexzrK(7W?##S8Q zZKG&AA;i|~IqgYd7h^3=HZWqW&uAGfSi_MP@{6d<_Hs^^_9jp)S=$v%qLH(o8H=+p zw~jfvTVazy&W?Mtg#V`A`w3OqvSM{@?m&TZLlUK_@3G;x(~(8T;KNNVG1doplCuL5 ztqd*YCkMAeQb{Ga!164G%C;84>jHZdh_WXDKfbBICDCh1bz~M}qFUc~IYXtNc$Z3i z)i>0mA!AJ?rqt34Rfzdikaa}G>wot_q~D=1-=vy1EWNTz0dG_n{!@Pj-+spt{t06n z-~ca*vLN%ukya;30OoQKeq%P;ej0UkL;(P}%K#6}^Ey-?L3mPf6*sxZ&8f&n{ij1qV6B?zM zdyZnP&JuQ*JoZVB32h~_v9uoRyu$$>Wx(WG0Qkji?2nf>-Itx{JQv|G%HZ8E4AMVf zM94EV82{d?Q1%XUi;#4IByWccG^p33EiEbb@a~aCGy6!?`$_}ePDBxtTb5TB$KlG7 z1lP&A+<+gFXzqYIAM$b(G_#E`Nw&eI6zUxyQ~Y$;>tZF-Q9MU3jkZ_9nAq8zc_^6? zZL;*XnnKOl907DE=EWd>7>telfIl-AKbzc=h~*wd95WC2QI zb&&j4s2qn0^U;ttKg;AEAZp?$U4Lk4{>iaTR(l{vrhgaB`v&MHAIpIbW0NZP*`feB z7N97Ya`*-N;x~p6W-1LOO2#9%YHMfMZi-HW!%W9G+h)N#ru?4io!7v(O%CL(;EPa&9v#N z!eLy#Tg2Sq5ftIum8QPFI=7hLZN$WprB37T{UM?tm6enZul#~@FwDTLHJSKQNPB{W z%aGH@1v0T>q(J%5=ynRv;etB8C?3?t(;0YInWADk)bq_d_OZDZpC4izex##UY+0nd!yb960eytDU; zA7_|vrO@a97SPQo2P)>4O&3yB3tTy-iwv^k5n$!gBCs8aMp5i$a*+0&nR}HY!m%|Q zY|T!g$XdFkjYz~k#2jJ+0$lpS`Jv+0z@a}I=?;|STln_2vY{E&OJil0K#an`qB(Fa zDzTUi{I!svAj&{3bt1;v?u;wQi6MKcQvDf`%yub*A>*#LED_}ZFQln0@;!$x{>1){ z=I$g*pZQ?n$nqo>-}Kvjeolu}P0SctTpb(wYi@{VK7w_Bq?~Nk%%r+>SbuZK?$lS9 zNPDvTD>OiOc-%$Gbt^oQnZ^ZADZf#%Si=p=DN-IbHQdItmT?}9of%^V{T+#BM3m5b zV|IDR*eheAf2j(CkyAs~^6M|0vtRbDQM$Py-sC0j#iCtBtkg&bS1=D5f_1Oc7<9Dq z0{gx&8~F6zBVI3egfmQlprlBWyJifqw_pmS$;a;(uts)ZBw>otKE*ZUiXKIIDRf&< zpl}3T|G?roJ|quI+j@SxZM0N6xIZfZ0sAIn;$pkbr>T-Gp@k9YGGNw@th`F*&bz_> zN=BW}R?~s!ln!@JmXV~Bbj`m*N5XSsMst^?*2}@VuDBiqt|H#`dJbl+WH>Hqxc%{Y zE@7yANr+fpbiHGqiW0${lM+dvQ`4_KJ6)A11X;HJ?t!IvSs2#65kZQOp5IGO608CB zQ|tNAdU4d3MY{`0$wK~VL*MWRMoG?;vLMeu=e z59=!FMRg*W06M^c$VN%+Rk8kFGlVEUbFOCb$`p8iP*$T3=w3rXrpaN{rLi&GoaZ&d zGtz>7LDAYuDv4RQ5NF#Y0qR1SA4SrnGG2Y1ot8`kwr)N5TEj*D%8~9anetHff z#RZJx&KkOeXzRAuXA=6Ld`u(dCR^yC6eG;DGmy3CQCI8aEP_gc{8!<6OH)eBZWXFH zY6CN69q2J#??A!x)%D9XIX2f;WV*PiQdjc*E$;wx{!!-g!;gk(KPAD+qA*>|A*myWhO#t*D;qrZ^DYNWzN`)3gzl14eEu}c~#>Iv^SA7_RwNV?DQSKmsa z_9PKkq4<^hmJ~Bo2+$u6@UyGMSX05;Ov!A?mzhy%6)gOQ2Y>Mvm5EvZ#6d?{z`Zb7 z0$Jd(fHe9W#MV-H(~(xGC}Q$-5Y_t%$J+GT=fVS1)!*ELJURHX2McwQeFkWR?IvJP zkv+J|&6FdYXqj_8LSPvUh8tU|d_xr57#|~2#p5EFi6)7g4raUF7Np$*FH3LBT1mmshhN*6F;(6;U|C_T+~pPZIhi%pInZN2z|mgj;ok_sJ;UTVVwD?h zamn<|{_X?!&V;7%b$PhYW!I&_ZR7rVH!f0{jl2<1KfXai;+ZC1+=j`X6^qBT@8uX} zJ2+D}boz5g5%dIP5LTkyRp0wsmqn6!DzvY*NVtZTLlL0LOn{|_eCA;aM%{%Soyi}7 zN&E#CMQ_!hF$4{hFU&p|msidNl<>G9IEob5Cjpq9v-!F+nwPgzO(g<@2+O-@c2q^y z>0&157Mn9eLhK&&48|VHy&v)&f``FssCBwv`V5snRoi`(8M$J2o-Eg>yO`=??^>zY4wz^tJVJ|Cq%34Rw8&x4m& zUoS_z_yc^TJodpUmcyMmii_uuMq__h(d){nA>thRva~oDMo&XWoIp>};0GLAYHcUU z!V{pt+q8xru{J@Oj0>mt_U9xG)%LLJ(0aoiokWhbbG)Jcamh0#Ea@c?d3+X(8P605 z&b}6tmL71{CM~$|_`z%+8ZjqGAw02Z11X50jn`w&Z5Z?chpeqAX_p~Ipk$0;2iPkt zfbO35aTUrJrr6+G!EwTO5`m{)&B;}u);UB`bbw3R>T?r}c7Sg~{ByCWA>fTr_ za3q_uUO-TVqKTRk6RPcno&isu7lDL$p#K2#29*=GPp1<&y3}A#{h*q);#eqO|B*^z z40|vdTjpcJ^`X!{72wxpX`o);f-K)D=Y)mC9DQ>%SU*Fl0vFM~m29`Ztp6hFk@|i}` zmOcqJU;z8qadv^SM$(Q;$cQj@GVmyq8?CB6{C=1=jy^Cs`RZe;+tXW;MtFxWHIVhz znUIG;Z`7sizaPis)mcwv%;+der2vFp2O>&(XRBL-yT$Xbcpx#cE5jhNKGD8qgg>%V zK_X!Y*;tzITrlW^bcnfcA_R@id4s`?!i@B;IWZ)p(O4r0Xsp%~Z1P+Ii&m<4SkqlFLO})Wn2wccBx2JZ10j96(JiAzY@$1njV|!tnq!1< z#Y6-Sm$reEam@D@G|2C2gZ*!pE8ij+cmnp3WD{j6!38e`jpXE!5hJWZV|hb?10%=G zCx=|4Yy%9=t$q_#STaKR>17DPLQZ`iP;^+no6OCPTj_`+mcWD%m*|ca8D!^Y)Iv0T z4#X>2FE@sHo@SVbpM=rX&iP=SO~1eMpxa{g2XQJ#V;?MgHHgbl5H#Rpp*R#%-8iI* z?{VNN4XM#dm|i@L1MFmYxQS+%+{wLb_mzG-nJv$lN4t~mfg5$i1dvX76Ux~=A5G)e zDnh4S+O8_q{qCc8`a<>azTp?Wu z#A%ONUFeZgY>~*rzNick8@`%b(W>V$qG-MO8!hX&Xg(7t?{vl`Fa-2zgbWm_@N_#Q z#g7&?*r9adv9_W?cyj$SUx=WcFF?sqFHCWS9BSKo76ZW=yV-NbmO?^@BnChmYY+#g$^5)Jj%W-HchP}ix(-TvGz;AKQ{W5xf(i+`Lu^Cc?)w=Si3 z6zYf#1S29}J@h0VJmkj_6-nVe_fsU*F6%+G z;J#Bl>s5R%onQVbzm2K1)k!VLyQ_)N;Qlnip{rrT8?a(w7CmJMi^DTqpfn=#j+#$k zh-fECGXnBh$&i(qDkBqW96_Uwr8lXV!;n=aEu~vDI*sMtdhtRHrLrO9dF+Fh;7V+= zhbyQMfM3bz(xIgIhRp9Mb^*Ciad)U|t)L(8stBFp@$Yt+h|4M37t5bn{uHgGaeO%9 zYn?*vuWonTu@FN1Ew0T)*aL@;7*EOt^_7h2Kn!Jh27Pn17 zU%~4uUUhHqUt;Qzk5nc|dUMv4>^Q=5COWP|IE4_1OR<)d#XRFYSV8Ry^R{Lg-&__% zLnZtCf8bDIGkxb8?aUC_Ob&EBn%8+u)`5qRX2)JQ@1pHN#Mg6J>|$Bqy%?rxi@|6Kw#=wOSY|y zhLCskKFu2gxVQta^~Mq0AJyz*c$m9^~E-49^c#5XF>C;y)F9!0%>g02XDw%&hZguG+ zx4JNO;=|`c@yFc9&+-6;T|-Zf;*3N~Rypc`r-QVrMM834`Hy$w<0#?uNV#cQei$8AzDkE3K~bT8ogtxYL_6`1hBy^5P>>YXFgrMq5;P%`eVFKw9YpG36=YZgpV?h9 z`7p7a{179Wj6pW~ysVei)`1dUIGXlLGbN^9SV}H`2HVmnhY?&$l=c8PLo7RvwubQ@ zA>GTfrpuNhy#}{qbQLH3uXz$36B0JF|TSiwXc$*1anwca-ldTuff^B@4C^Wbh4~Vj8x1|fg^}-uMl|z zS)*(~m_Kw%YWvFCCN3{7VioaMYs$5ACI=HyKyljf(y_9czyn8)?$^dFr8omE_#Oke z(^b;7dQEXo>!jt5O^@rFZ$LLzQlUdsuuN7zCwG@#`Eh z5dmBORUna@y9eB&-QcV*LHIrgsI8JG4R=p+9(O?u^J_Q-in~C;S`C(;keuuuEmlXN z67csAPLRhc=r4>Va(0V7_|G`Kj9$R z#WBLNnCr8j1dEo*l1$=;C11>VOJSB~yPRNkHJdY;O16C-;w}cftfieq=}_%Gv=xL< z>>3v;-$4j&kh@d=!O-y(+8CMY7Fa&KvM|gV9A@k#!)ajTGcx2e9_{8jRGy*Jitc$C@|RlMtvqHGJa$IV3`r4rj(_Xg?nf$ z$@HX117{CjBP-dIw?oVfCdM(!9J^Wsg!;aH@dMpndHPA{iv_0}R25JaMV*}ZP0f%6 ztI&ZUh_~OJ2h^PQzmsg?XgvZ(Hbd`dr#4>AyO&%dhB8{Gx}S+1;xEdhEbdpku{i5% zGcLQHLy%;QQbn7FMH6GwlL80Y=D2p(>aU1*TO;?&1_5UWhl@bRrisRWTCaye&ZXC% z8?d6!X(DS+`8=%ds&ms7n{~FN3{$DJ78C-@5`)wBAIEAhTWU+19F?_ZHf7^54=%XJ zNBCZ+8)OKrm6=%;>1Z^Kzhy12ay7BfmqWK(`qXOq zZ5BG*I}fxBy{3((^p@*UeKG@vtb0Vf3h5U(vgrRuSl!I->2<_J< z_E-)iueDZVu|$zU-ga%_yng-ih~3uP)Me&Zn}Q=x@}_0g?J;P$N^Pj~|0^OjYTIoR z%^AiXg)l{b#qcMECKqFz@+D3Fx_lJnTT!3}TNE{lejGGg?h^mSr?8TZR-O0>#!msE z71FU9PV$`n!D=8n%+06L+*_;1&rw@@r!!J1V?~vXTg|ex!V;fm=JNNsuwSLK(=HXF z3;Q87#h+*V?(YrCWAx(VBli>qn5DcahpMcuqvJ>?BTm@LK}cK7MzNKMVBUeO`M`bc ze6aSC&_Ar+6{Q~N=An@Oy}voRR$*GNg5?_J^M4d~P>*J{w9x%YrA&UUoHfk^dHy6(@Fv@e2Da%~f^|k+|UxS>m3|pFjc2t?P7!UDk@}X3vS*gz9&|+4(1etZ^fe2aiIGguHN6*8d`*U@G`9V;fx%B;sxMOYzuwB>mf4K^Cq`s~i9J{-< z&Uab9I}eKSn1qdibWU;b!F7;se#g;0xAl&6CHLHe8y2zIehmC$*?Kq)C-_mXfy50g z3x)WbT<4){$1YbDZ`=YNL*b%!5~q{7r_pD*n>%Fhwq-VE39G#-4`4aT;qFaq5u)oN za>s5w9o=Vw*MLRo`1=tOr;ZXxgM^79| z8Jzl;p{b|k!5*&cZ(0|K<3l(N^RWK2e6wGYUeZ6eKa`II3L(qaXtw;cTyf3_VYve9 znXLSi1B0v}2pW8>YH81y$E}y!Xo8++H>N3+O581u51bA>8ritFT3YnE%i7!zx7Ban z*In#ve|*se-Qf|44g!B}G{vu|a)~2|&0@XK(<$imBOQ$0M!Vs|5OU@P>2E+^%Ty?Fg3Q@txh>sq-lfGV121qicA(7VQ+^i}O zE;_KT1C29CmMrsu7uc6La54EOy?Yy#Dz5c6(MnwEE9aYEk^Nl{<02>dOsmNzL`CnA z88%Snn)KXi9K7xqm)$TJ*=L}2%%z7`&JN!Tf=Rx-apFI);3(+#+I?fKQ$_`4o_Qy- z^z@I@d}(G19`m2dpC$di&~2_Wiw*W|(h+ z>`oq#4xESC3@>Nuv&N)_4nhi@&H0i+=9c80Qc(eWMJZ!MXDTGB_Obe9npBcJ!*uqnc|apUqp2N<~xyogT9XI58Sl ztucn$MzuI-C#ePBo7?k0lxUi;*1!64ILLh;3>SWawz9U*rH!W_)s7z3yc|^3r9F?d zi?h1!UWbsbMqd7XaPppL0Os}Rk&2T<&)h*dr`Nr`t+_g25ib*!UP&2`IYZ51wXgru zy1qx1hPiCA{K0N0FW}?*VwETQ4OP{u2Zbxd>pA05$G8V3EKb!<0AD)Z09kpj=!U(+Blr{YX z&ez))(U-YCwWu}B;JeTK_MbH7_exscO4g0^?qhk`6d=RS)+VaU3fQixYq)53bFYn+ zn{>_jx8{2TKD|B3UzSUkpoX+NZ>Ro%8VryGe6H8wq%Tldn z*^-bykecI88$wspzjiME8q6%4hN7g}$i_$BKZAEN!3 zVH6!5VFW*rR(H>h1He9|{$(4Q#=@(M>vJ2L zvv_=5f45f5RxFVhvIm>dh4FXuNj+#WODs_zqSjETV8 zleJ{G?%<5Oe$Y5bO_?We1<*ifu{hA25!hK~v=B=W4Ln=t2osa!f zUx1LYWS^$J@VtYbFRKBzZf@-nhZXw>)Zh7AyqDVVC#R9Il*UOtNo$j#+3}Qm?(}JN zYTwXSz&Hd7rqP67c}@$HK&v*H*u};_?ZC(=_3u^qK|;f(MAD};Mz8s%#=AonmiO4g zee%z|s{22qrReVaPEc3cfxau?`QNYef_YsZNaq?3wKSI<&7D12cf8mfTH%PBI=^1a z2}2ZqB#)B5C|_O#d++N6B{(ctF^o#Gz{g&Bb>0e^f#<8=Sp8C#G^SimOTqX<4F53$ z5NgV=GTYNi|9;RE@c7b2RVe@1%&3&~GjSg-pBTx0nOrLDuLz+VZ)+R^%hs{n(RuAh z*JQ+VeTz&uS@M1EZnjI1hh;AZ-*{xbw43W|3OZMZ_g&FuB)i4ApSw~b>)(6&gyHACV53H;8f^j_ z7Ij@XUgtrori4CR?>n<)9^eR7(aUs^G8fm~Z%1@z#bpd@?p~g5L}6`O^ZVVkQc}Nz z<{-=cV7dao*7a?ab^CoEJ>S}uhHZ7BIG%*?>h#oa7m_iy+imE`vWn1mz2PobhvT`a zIW5P)V^7a-iiYKR0c&n4#-I!R&s%awayTjp?9) zy^ulAf9P#OBD>pXlY1sc(Ep!&qv!;K8KwR8m4ywonGY?jB_Hos!4T@SuE6yodZA(; z_IAg8BB9^jc%5B&kQ-p16Mqa!mH$b1rHg+*F(oahmHFT@b3)O}d!HJX(#K`!^r1!X z+x${C6p<}Ahr9x=+S>!oqDSC{9@a7_^2jzd!^p#O@1xvRH~uBqTC7q@s^^bSP_SzFU(~h8x%AGCi!4VhTAD)H4Yi}d;s)&&g@CvyCcNjI8zuG85M?OM+g8z_ZaJa&Le`mQ~*`fnN4 z_An>X#weuxnyVWHXd6#!$*D}l{u_~q=2dv^6Y1=@hDqj9arUo0Fo5#Yf3_wSwD;Jn zs6%=$LuDy3-<9#K^Js zcXDG+_H{B2=Df@#q2qjm6RHci{MA94D1V%;Ve%c+%5zkNPy~YLF5|8{VFf55J4{zG{5Z&-Ir2bVx^&^ZC}b zK)Au_EN6_=eH2qe_bX0kP$DP!NSDZ$h=v=-;{DwTeZG_1`Q6E7z%v9DH|I)yaNnB7 zpWEfaTq7brJ8|f?{2(l{HZ>Yx-E$Pj89W~?RAJT+;-+NPb=#I)P3fRn_B>{-`BxMZ z_qMM82K^HI&Hr_Pv4wion;pi_ zhE&uelJ-}lZJudU;*OkX<-K<^+TZ&OKh1UD)Z9oPC8kCHeP=%Jitkf1R5z09s@DDH zQ$;F`ye7x*SXn%Gv9>3R7)QJa^~ZoR6WH!HD{yqeobKi{qzbEMm~ zgU%Z-p#1f-peBDcnqPH6=4Yl4=gcx&E!&Hvi>}mmr2sE25qW;PcotK;^lZk)_XOF` zS2w$?X6d^8Z%N$v#pRul*;A>k_nq*l6MOQMZ;?RHi>gI7cx{g#mxFiuJ)PAxmOCw< zs_@=x^rK(Q-goT$)$+<-LN)`7P+Gm?`Tr;_ky~_;=4tQ?tP)4PhoZ+@IAwp%LA%YHddP z{MjAf)KXc-A8*r@b94kR>O(Lme4itu7L!au3cPDRVH%rkrs$p?mwdb>fVL)i^( zd;F&yEWW!{!lVT5qfIqTcEP-ETo12X*|<`=m(L|CDZckAj2uEWULPSahVL|)o$`xM z6fKPO7<$FJW?*sA(0#{a*V}P}a%wqcC7$!afn#wM@y%5eP4@kqup-L0#p7xAzSKL_ z;M$s(Vl;MPRs#QxlWFq>lgv)HIS?bKqQC84$u95YtTpZE3ZB`m0prurwg1~o6Xyg) zCRvH5^Ky<2f#>t+??ZH(Gkd<=Bkb|7zYM}VV=r*CJua; z6n$LV^75Hh-PRT3APcE4KKLU{%`QX>*zT9qZ4fy2#4dA+i3?g1*AXAg)NVNWcpsEY zQnLD6_X6cA1#Iv7m8$TapHHT7yIkh`H$tlD|KXh-?;{fJeht&PT;cpE3*C3bEl>9l z${YCDXnxkc{K9W%rjz5@Bukq^J>0A{flK|3XN>Mi70r(yaAn}r>A#feV%Cnc`VZO{ zLAG}SdPvm|Q<%S)h%ZXN+!s18n+kBEh2>~6JQz0G{CcUutZg=TU2j!W?Qw___i9XY z1KAT1Rhy9KqbOW-me?AM-;O6Ua+4mekYN@M=@ypVRNP;~OzGmUDaD<)5B9P6HTT!f zywSpK@Q>5}&j-I$a^6XEkY9LPe3Nl*<_fPgcVXOxz3*g#TDgrsP>L_jeFeVr{SD<1 z>W07Ys%CUnqiE-6Wf&o%)w-=Jp*Fi)e!0Q7<7>os_wl2+D#EJ>wSr0AhvjIqYzs@D z<$964rhE-01Nmb|VZF)2(@WpB{v&9c0X>X548XT1zmn$Ld?nsx=pZPgA4M z^Tdp-HgctOi7h`TPio4X-%CcGtoEneUB^;LOF_fkvbhzqllz|O1p}z1%;lu$g#J{n zsDg1!se?zqYT#*!@{%g@h_BvJ?|37qoEUDF2UnqzIa5^|U}`=+w^D_BgH`EUt#JEf z{C5|)Xl=iMb#TFu*;;Hf6FPdjkgD5M>@e7wdE6kU|AVK8smBHm`4g%A-=~G9g_N;M z)|@BBo;&X-8e7ImEtQnE>(i!Rf-fd8Vv4d-rK|Iu9@C@wz06N_r%p7s^qK7)CWC_z z{4(b{!fcOdI&ijfhVXTBRh{dLdsj;fpS%0YHCP;D-)cX1Jv2~!CA7FqeX41)AlUFR@()z-Hq=tF;35m6!Mak^r;>tTCXj2a`Tm42!)(BVJVfdf;UoleZAkJ$K5BWdus$m1uxD_ zkrseXJT@#!P#M(i@-46@p`$uM&~o`}yirU(w8Q8*=4pvio@D%&~Q( zIWslaihF$jGHQ{lTkhdj?9FaT>(zB8 zNW1RlehZ=bz3wD_B31oMj}3s-RMm_P&&NDe$)`^?teK6}@2$+#i}NXp+T6te8v~VS z_xK&p2;U~%vQ)M46-_Q%-=4eG$YN5aF@Yp*V`ovtSHVrwMR>FAl)%ccs`YbbwDq_G zyUKPy;{lBm#-ce~`Kn3qdUB%s2Y=lWEP#yHC{FHu-{A`$kJhJ&&*EQf_SH~3nD;%@ z-iBqBuw-H*GufON6jXvBG%W6$FJLPSpr^qU7^GKwfI{>1#<9RBQ%kkaMLSv8z;D-e zY%DZ`ooR#xVLbOra3Q|f_O~t#fQR1J-uxIok?ClK5EU!uvzsB}%f(()q2+%m4TrpCh8W>z7pi4VAOXGE+{?-RoHxaP@oPO zn?!M@xf$P2#Cx<3FFAdmNw-<9bx=Hhjx3LXTdc{o zVFc-@BsE0S?+22G6!1)4+BMlr_r>N2)#qE>5BA!eflHez=)6@7{cM4zni_}q*sl2b zyl4LA`vyF#J#`zmM0PmqLe>pI4Gzf?|WU?^-ytK<*$GM2J@k871^`O_f zabIyGo73CW5BL(<&@LGV?ymJ1bU$fgZELVHl|4wA!H?b)^jzflSHY65_HyozjA|RX zwWSuBtD&);zj$h{w65E~!)Iwd|7U$)OGUG>moN&ec-OR1s>UBf;LF0gdTmy6jmOM0 zMd0~xPHPvL_iX#m^FoFJp8Z}abN`cl{W%=mN=8tt<-}YCwbq}sp#@y*`p(N}y*m_$ z1^ozH9_zBF^LbOJq>ge<4r=c?TuJIahx5~7X&<@X+u^dEP2sQJw6BQg(;8F zi{GMFYD+o<)gY*9W+Q0v9FBjaP^U}U$scgh43h>WXu>l8|YkO)i zA99zhW(ejX;XO`9bjWWA+)#bJFWfI&l|#~WbH`TP1oHW6$hz6u-EW6oEOwGJVgVb= z1AV{60xr8lAq!eXH_ApN=&rDz zXVI=~LQm^=(?#dYtsCbytP_;H-|TAZMN5wDcus3Ez+3u?Die}5BfA<^RBotZ^JFz* z>W5se_XkjGJ(9_U-*mRpx?{~d)@f#MczM2R_Hb?~`c?CNazV`06Z3UP4WzSEAXswzusiG{o_ zVUU}2_L=j2(<1P@I?JyG5ssQ0Y_314xb4d?rwZ4xbg{K71{7~ajzpBjHXbnZs{doj z25Mh*@v8c^bl$FXc=Ddn4=?L$ZA`EJ9XjA^srb9pWc_i%v=2upXKusLVdp!*O~_DW zGoGcEs_%Jp$QoMY5s~n4f3>r7-PYOSq&QuaV55HX3J3bLix4uNg2~pfw-x-nBw%FR`@frT$Gp*yMqgh3PrlVh$R0|E^2#MNEl9Yhdz1Qkxp`wsLs(UmS1O0yJ*pKDuCiLqnidTG~qC^*fivx;zsbE<{8T zSP?sAe=(R4jToG@+<3FKQ&zFcGa zORsvt56p5(arSf#oD%!)RAA(P7Ms;O7JWPy#|H?RY+Ehf#s(D%>Iqm|AjQy*p?`Kw z78}E%zXl0~(A2^$OXlcp2>DTE@^#y@A{EP!(I^4$w!W~@$O|4ChSE+5FVGq2RqkTO z+UW~nktN>MFjifCF@prv{aqD`=swJzn%|g$?n_I(lif}gJYpWDXmEd#>%+su&?Vy z>7%KQfEE=smKe7(`f9urmF_=RJ-)Dtk}oS{_4UR|M-OwcnKeT0+6pU(HFxaR$(|Jk zAv^#9p>|@U&P9pUz3TnJ^TbW54s;yLh5Fj2;{3ekd^-2{c|k>KUS$;@V3CzIS2K*K zXMF7uKaTcLoLB)1W_}?->}xZA)8d(ur-r7Amo@(eya~aBP@p7QqiJ11kuhtYCjP+? zJ(vOH`hSuA)T=ld6oxvm`wzABj~LI8~3V((WZd%{8-WqoQ3E~nk@R6W0X%HW0p+voX; z<>3+3tHpZ@D*v%YdxEoCu!uH}N>lH=%$9mL>;O({=$shnX0`wx- z=?scK|GJv>5GMFd9-EA9Z=h4!mO0?=F@+Ev)-qv4MH4PqFaHpSU1Zq!X?;juYsX5k zQl0BJ{wS;IXX%k%!feD8!WLrktI*I>>fS=o_uWK@WC_BJa$iXGIn`$%vWU888LTH8 z*6q298wq<17v#p_Q-w_BIjT1>L>gxB2G@k^ID!GJ6cB8-^qN};zFq{|kLj-{3xy(> zsHm7UdeT^CW0-vQ>-3aXgYh)53q8qQL;S<=$hSBm@TztVVW#n55Ei>gZFP1YyM!WcsAp{tMOk(D>Zt&{r8Dxnjq@(8kx%qiUwVhB( zx#RvOx`cm2@%W<-Uj)CwE42J(f&PPv4rWcf2&Iq4(kzvk)TgkC^lH-X2bB;C>h_c> zYI}#zDxF8XU0k0+q-h9-1*V889rE87>i0NG|Fe#MCGd6rBtC0(?tQ>HlQT*liP3 zV<~B^2(TH){%PKTSewM_janGRG^o>8*T6_KT7@BXhrz)JE}`QbTWnbVz12{&60O#N zB_6DVSYscuO<(H$6Lj6>`y1?uO@D%t`<+JZ*@Y9VhLB6|4 zy`c!fDrR(r##VFCvA=8ntYA#JUh8a29OqhSQXfZhhR<=jAyf@W00fUcf15)lK;!r4 zI$I}kQ|@A`3fLNJ?`6-nzHMGFrRpW8`Gc$=HgNuw0cKY-NYX+#NipSu!|%Jkww@Nj z^La|iY`t zYarp6gfj=%l@mxh0sI5o-Pz6xhPuC}D#wUwSK}S*{qtko3WvqmlDStV*GgOpAb?!~ zn&4;I{4!1lwTrl5kXvbTTz%>cmT^tYsv$I{b&7BRWR zze#=OJzx!qEsU}VNbB;5dXnpmR&o0gs{C!*NOT*Wv{cKRsS|-!AYs_q;Tb@SnC37j zrT}H$@;OV7FU16PbNuV+lTqCb6KP85MXkD9@KbR@I59>f3 zd^LF}kGfRwuUg~e(WUT#o_q{rQJX30dom>c_4cuAvKYX+SRY~Mm25hbCd=0^By?$1 zF{Obs5vFnl_W6^cK|z}UVj0yPqQ67He^TOH*3?NZ(=*iwKg4wUe*egz38bXU1#+Sh zqMN6W5=|e-+_G_z8BZ6GOQ_7^j+lipPkb_b<=$B9rcXxNH73DYyb4fiHBrW3S08Jf zNQZ8O)#B(mY+j=Hq$7W4B9oPtJLud(QO3j6n(Y(&822Ri_={hD6%Roj6%?F|uZj6) zIsBWhk`fKaJeM5%k(Qi`y*;$AnZh~Cjeik^{T7oZ$JKSP9ggLgK3Q`_@KXGvPO1v6r){6e$3&!pN|^ox_XKGA}`!N`Cg=A;7$tqz?UXM+q)&aITMA)R`jcJHIqOf{D!8hm!oWG^AnJ{6qpwK0z<W1GWB z_I$>%KSZ&SlfK7v>%Ka%^V;pgUBvu&GW#9@du_23u%syr1Ck*z`GP_1GZ;Ue4{HP$ zWAGaj7jgDU=Sp6>2Hn}(d4(*Fe`ma&Q4B_M?&5*XGTmF;S?%(LhnA;qa*+R4AIud)~0mtb2d;v_#KiUOg zV7f5(_|_>i$z|2MWidcO2}Ca3JCV~cym$EaxlkgaQBT$)2$_5yWF8LYQRyufz~g*t zwcu|z$24e?Bl|rk^xp}25Qs_ynTsu;l{cniR7F@i`V*9rNMnCAKw^@=ywMLo?nSiZ zk2~L}dLpuD#_SSf$wXo6322urj7Wq3{{D^8^uZC4fDxuK{uS&z9stmk@;E^^C{t|j zhK44Vd`qX0tZs>VQ-aOb^wjfcP;|?6sKrADuzXV|D9CVGGTFF=Dg6pFwt}r*oex6{ zk|UO=b~#XCiFeMI=%M07w)hOz_W=?xcLDs3GcjDF5(LvC-X0^K;)ceyJryMI9)HP8 zhp}$Csu!KF=Ut+3jF<>i-u?br*AGwI9U%qbHmh;pOke?rFJ)djcP13vV;zutlt8wn zth32=m!v!SQ7TwJnmjer6W$!h9UM6!xHZoHg(|Mhfd{e%2@ID9Ndv8<-m$LI@r~f{S%BsTDsSIZSJ_E=`{3Te=EQa~KeKQh1nY z-|oLC#{L>Y{xg?z*|of)rATIJ=X>uB$CxEgMuV?R`Iqoiol<#EbOg8!$j&3ElY;2* zUX{dvdXDJI@VKNSrWd9dE92nu9GBBa|_lq*i<8Dl|<-`5sc z;|bI$l6p(q%KMqLgl-&jGyy$-U@?@0n>^MXhnXt6l_th;p>lB1C7OwKpI8`Thr9F3nJoDO zl2zWL6%BYazxz$2QnoOvI4&*o4`mN2l&J8~rkoILt@wYs?X}VS!gf>i1&d5{01Ng? zq=CDWk(N;?Nz4JYNnRV8d?+(`!LmctotFk+eFhAaJrsxXa*XMAX5pHtax-d8?fRa@ zaEcA-)6r}R!+Na6_G2;_pRD)i#50EV zqY!byA?sho&|Cf5 z_eGgKM)lw;*J;kOe1~CG!1uI_Y4nsWCMDX$$r^ zh}SUpbR$P*=X?VXAp|#UMH(CUHG%@s1yIRYJ;@nXySo6OVtSt!qg6lhsWLT^H%d$S z`7)mPU4|yYg44vfzn)9Apc77i8tH2w=a(T}Sp4Aq{;q2roE^!7){pX#;fxUoHFCFI z2nK&Ksu^kaqy}TxeMo>O9}YeTj$|+A#Kk3@*8nnJy0uUX#YXs_)!mjr#5EShSPcGZ zum$G{>K_cwgRy=G0dNkWS}tHF;&yK20b zo_+LXkq4l2IQ=Lvl7M^%3{);+Y7PJDCi>*L58RN}1n0f}I?)7Sa7&!VK4<^ty(fsOyFTc~uX zFd-ygHl%6_zhtg5h2wEZzj*Z0^%h2-XPXdYA*4_m2oC!6IHqC?Eb`$vf^ide=~;g6 z40A?_Ewf_3OK{5~F>5;&z%6tFEyb2bw{N1TLxkNzhv;N*tj6@Um297^^E}^b7d9^> zp>NdJ4X!vAMzGoB1#Y^-gmFrRCIzAOO7m68kW9GpZSW(pJoG4c=J+;jIG)&DCBT$8 z=&%V$bVzEk%ACInEqafce*!YBMpqy*HeWjjk@tT}IZ6oqX0#u1_?cp;I0o|ZUO#yT z^>!CCUEQ}0#0%@)=c~S8voiQd*Lb)7Ks3fb%@NJgdMA8A1cKNKqJ>$SsM1>2|^Awfh6`ie=U;rDEJurq$lJ-o~nczn}BY&4!K&;H70M#mO}d1~RH5 z;k*N0+00H zC?GO_iABGiVdr5ePV^B`jk>4c4JPs-3qv+7GbFx~c_$C$B*DEjq)HX=>L0iS$v3a^ zBd?o*0W;dK%>!8;iG>oW5{_+xpV+IvJz7y#{2BNK>pOuNfpT@n#&1lL&P#kQCAOvh z#bx5avNAvM_y<|RxpcO%p?JW(SzstsPwna--kNiY8uq~6MC8(GN`Y{jcFoWT3(tX3 zrC&CLaco8hvoa__4Rl8Q4Q=ukfP%*nOv$~`C+q30@ysMG>jurY>vTnXht(KB2BmvX zEEPIs!ma?hlH9;fpTdR{9WMz0{l^TYy+b(&-nvZRfhI^@Hz7{diiAr8-O6c(K@qIa z^%bf{O(ugbkq6B;oBVaFo~_0a20%cq*T z{R!8c6z1p;)v~U)NVRa1P^ovD&^(|;3{`WMIz;f?sP5TN1{OlqPZ?^nr z*%PKH$0L@`tPGtn{@GRz1VFsB-(7Dy(Y;Xb-a1O`946o2q!Sw0Wp5j;v5w% zm@YysePP}z&jCg>A865zB|V7LMa%;u*zwBvZX!~fsEOk&Z^@I^K6vA>ev{^yU@ZTohX=#v6+c`eL=^UV}rV; zCzWL>X`YOj;x}U_H_pFc#~+SkKjHe_1;GBt&d&~8C3Ivh5+YHzwqsBu^1Z_6i8l86 zsjj7rX&x}U7kn9Bipro3U@A3LuA4E9MRh)w-62f&$i~4TrZI+#gc3xf`8ph}!ZC+a zcr?wRE*Cy9FdF51^l1oYoQ=ucx+5M-#db}kE#LsDF%Q^-^VthCyn=lKEe7I-OqjXL!27kq|Pl1j*o* z#>W!v&29*6@AHo)d^Qctb($JLpa~vbnAyrf#`Rw#cY?L&hC!uC|D?`PPCbbDrNbQK zK%l90B716^g!)$|-%qNN-86Qw#VmXv&B1UfJpc(FH4m?7pi%Q;r78aEF3&zbsh_|4l5Ei;i=PMe$o?7)x5=u&fQMI__lL;RW}?OIE=3wR3o!IJgt9- z>@N~EL8K%KB7cI|zkU33dh4)v7?NK~0MeAWSfQN0z*Q3Rd_4#MD{-tF!>RtKL;cA9 ztcMWEd2=ki0#oVuXjYDpX%zzLR%+)wU~PU{>X>r{guO(>a-*~$&!ay8pv-(?hn5&o zZn62nR3uK3-35}yw10Zf5OATIkeEH}gaJ#qH@Jv~tIbZI>jS&d{$9yTRBH0~g^r}4 zE;!0LGtw;H%+0ZE>c)HITY4D{7bv9Ym^ufzJh_N*N&hJ2x@9JF8XvQ>*Gmd!UydU7 zU3jb|{p&=o@RAelV5WIt7P4fI1B|8HxzYqBSRYwgK@n5~g(R!VU%El2MZWEQz{%ieu2Yc=zX#5ELgd7$>Gix#Mu2 zy7WWCFJ4xlRSAm}fy{j-qkun{WC_FlUsl+Pq?j_(x+a2Xze;+S=iMLmvzT_Kb6+g? z@rPu&uf-lov!}CWT&u0Gc|}oz{JmnLWgIPm)Q0GY@-}%TF8ybJ%nvg6P1ZQwxz?DVS#G5RI1G;GrCm>T?=la2Dekmn8BG;_hpo^X}~TssBE|qLgCH zWl=FAT`+=kmS%$QJZTq1f5>{gr(9oSOjghz+J?A}DFdlk4O5j;$6*o{58M{1`y`01 zG^YP`KdxZhYGzpQm-%mA$;k4Sx}qFzS0k7{Khx%*JNayLJt-!0h4o7milJ#fG~7rV zcoFmKQu%3i_^Mr{*}xNHm%7wtQiLDhY5sogjL9%O00fUTskn?c$Pv~xcvFD7xicQ zw#qb=l6th#y_wKB>rO*rNfq($eKwuh^>Xa!K7_c*YJd@AW=vcb7fREhNL1#VWbY5k z?@0tlKN3cut2Gf)ULaS2-aom>gIR84SJKd9BN%AlU)ZK_h(*7F1gM{}s3-L?c}Y&6 z!1GQq21>bs)@s#IyW1&W6C%VK=LTS}f3QOCJ-$QxBMjEzpMS3lSy{U+)+HB#i3`A_ zg$)gB-E*)Ll8kJw& z523JfkBR^hL!_qaDWl1k4f%rtrZW_Nq@0R~6jjL0F~D`j5F*THrRtyB^Vp@(Uu;qj z{9!y`&7WAMqa$4?utjr;b2E#9rGZSFqI*XuSH&h8R5(3E$Hwh|vMT`a3O&3RX7pd& zc=;`Ekd*@-shoAy`3qfIW@xZ2WEh|_@Fa=0f^b>Uiuw@4AiYGpILN8$(d;H~)u?Ki zDp5s;-ts)lvZeWJl*lHe1BP5}VdYe?a_neZ(Y*$6sQtzv33r@M_(T7)MQKWY!v_w1 z`I%mIFy0Eq%%LuUlDW_K6KZ6 zj8k9FOeNU%SM+gCVa4ph$c-QUax%*0ceK7o693UFu@#QEH7#5dCZImHU>R*DiJ_#r z@6w$vifw&+O)Pys6sl0+?U|nw>Mu4T)#nd6!wPVp4(nY%Rp^AZ1%4DWtV z3Md0+px`rFmlc6}c9Z!Ig-ns)0ON5=SWP4RnA=GiaC9E>VuRN^f5>jVRU!M0qBi75 zbpM$##pM`A?gE*EyGp&FhEd|GLSxBIL6hZ)zh@3EY>~|LFTNHKPE14J(9+YJh&%69s@bO~ zcE|f^<^PJc!v1I!nixousmmA*1rnLw6sWDkT5UV=*w!(J+Pe>l(8TT2KtWyqP*u(`>*U4h~|fSAAm-{1wb3->eu2b*wQ}Hc}fW#N87E9wtN{$T)D&(X1g`2 zVqG$fK?T3iPQHCD$r&8Mdq#ZQe-KdlpG6KpAVLhZP-EW(XxZ*#u;<{7oF}#>J3mj2 zdM5z%jNh;AHBB-5JWK2~cCJF5_I&jDo)4G$C-2KlECKAlF`+Qfp)foK5#_ncm$_z| zLK`Y5i#2U43)f9D(vYvf^BsO!sjxfWKa*M;=Q6XHIMes4MhSlOgYyo8fw4WC@o%=w zbNy>+EA?OUe#;F4uiZ9-z2n5V} zu_iWD{RO)F()|CGHqQ(|i)HJHaW}aPVo0C8&nD(_CL*mVIQFjRoLxMZgt=EB#qgkj zf(>?exZFq~CI=Ap2It*6&L-SaFZC9mzyQOXudR}IG23;q6=t}>0(w69tVtlu7D#dha z7Xpv-Y`60cM`ebOb$+iIhI_5?ZL}Zn4co5k)$y#y*$Rzhx-XP3YX{d%T(E{@g!Q4u zHGA{vyvsbk6>OiJZ>JCSasd%MkJr3RShF>ngv&25R zs4;OH(w>~tM$gX7McVqq@6Nxwm)v`ONjFxT+%%r^bp^W`I&L7k>xU>slN%WV=Ju0S z=jWcw8yCp;w>s5~u00dCU0C+Ztw;D4;=ITf zN=RwdeysSgkVxnA$Pf+O?Y}XZ|;Wp&($jsqamd9PeAq=`5y;EvD-{up1xm zzo^`W*=aeI6kEQdmW6t=pgeR4WBC&xeJ;}eTpfm(@xI#I_|wCHOXuk>m{!kiXhx1i zx8tJw#I>(%0j*+;}ZRe70>$Cn_PAcr!&x}Vbq>w3Zb+^+IP(@jk zAfw#h&?#-qnW*b^Ss7yDpUC1$l1D(D?+T8BYSjO8xnoQOUF!x~=tBHYkQ0q1p# z#Sl;++<-PiZ@02xuG^oRCEt!J+w8C zUkg3blyX*XJG#006oyq~wewwW+X7d@;QuWl6FOg|>FrX}=8d_(|E9R7cHKi}X5PsOoEXYQ$62N%2sEv=twQ5<+baL-DRLb!J%=Nnu z8JlG}Hv8UdU$PAkp%?C+K%&@#82lWPZdBCzJh?9J4C;XD_^)jmx&Nk}Ee+9bn~yRu zb#1jHljiaAMk9R{ay8Oc+z?gMykaLdUpu@Gp}k_;hM1KX=vtTUTF$*Ddog>IoL-h1*A8r zlaJb}&~9glRmvo>{0F_o7`1*2nuIOVvc1YQrb$FxWe}eXGMdbv(#L#0K^B~Ux?phr z8!2X`Og^B5d}$DiBl$oPy1n;bTw^9eW~2MH)vC@{c4Ke_CuCxD%CwYwRVDSG9m3y} zsTQ(L*SXF)py8euPPtOkgpmdZPjb<jc9O3~l|w_W3yLe$Ft#+4$o5iFWp zPdk-!dMzi`8_sW>GNz6Gc!+PULcoS!;14d5d>0>)NhlTTEodXGHTy4jdmFb33NHX% z{av#3c=YNICDTe~)dgOeJ*kxqahVF-GK6@z+#P~L+894 zuKzHyqPnY6K4pEXS61P^MO&JNeo(NV;WlIh``}rZpuC<1I;$RO59f-@u+rO^F0h=h zM$V+P{&c_b@G@*n-Hu3~QWN(VtFagDY!VnM9m_5Zx!8YlQOPT=vB&^a8Hmi|E;~;`cQb@w3%2VdnPnx=I;~wr%IP&b^Ji~dht+xrRsT%7WyLu zo%ubLH3(s?j3EFD=To#aPmHGW$ZzMc?f6>feCtvF-K&S*?))@YI5OLwq_Ey8B7gz= zH!@E=aGIw6HEom#$FV0@Q;`9oYJOilXtl2SEUr{xKcz8=D7vp=bNvH!3QYQ^uevhW zh?YFyBEHlJa27;0lMP20BY^_i)|rtVi8{xNj2HQcOFNE)PSrP7yBHV!Wo~O`w*Qu1 zNm$1c!YDS6O}-qjzow;gKk=jO{)f2s-_C}mr38Bm#<_;ip%I`pu%vv~!Gev7_Qpm2 zdmiPS8|+vsW%bIaE)Hhs>RH3mp@AFS_d0nI^;MtRF0&N%55g>>}!FE3NT0p;H>k=Q{mK>+wc_duT7{L*6eA7+Em`Eo+rHP!MB zA{^ap?b^<2vx1JAd`Df)S{9~Ni;P^3DfJHaIU9uW(?~g90|&V1&H>`xd5ygjf$Mof zPDk|RL;!#K0d3gOib=!B58s9VCel)o!r= z6+5nm{agm(=kIJt*k(HrJZMc9_mZUVsBf;IZ>n%haur!++mHQ%=OtgdHfoitZPyp;{mh+L^RP3PtymX* zt~_8u31OW1>Q<1_EY+Cvyn;a#%Z)h#kwZDQZ}P*@=Kt}tMQchfl3#5S*uC&!3|nlO{bkg?A; z&A7dnkNyi)OJD&<2Xd`1cF0?i*z?}{d&{3C&$T00R5+f~7iE?I$KG3p#j$K{pb3!R z!6mp$aCdiim%)8-*AOf~fB?Y>1P`t=xCD1Xa2?#;eeUdizVm(O+~@wi|Ms8meyY2l zTJ`p-RqtA>x~f)8pdm%Z+aoq%&>6Ucu-0uZ-x^UdpUv?XlyhoL(ON%K`SfJ8SBgk zN6)-YMIVS-yBK31U}ClhijHrtiZPzpkYsy2s#Fc4vG=pQ=xC%r_0zftZKQ$TuWnUU zSCj0U;yH^Jcjfacw`sG~Gt`$3Q^l?!nKNa5hvn&siLdaSh09zwsg%LWEu2%W7Pma~ z9oL0hSu9_sz8mg25H+(R!^d_f95uUBu{*+q5;3~@lp{od#9rz4K47haYpJr#x~(cq z4>3OXG4CvtxF_ndJL+vW;-7UXk@ZRdno1f(uhq?VyEv~*g<41Niyqk4(a?jZvM470 zW6$Su`}(w#MuYe^HQ~B;-Lwe!s}W?;*6LnS?Of5ht{xIp+nVarYx{5@r^O>c_RRrle@A)l z93$woLT`pXx0(CB()SI5a^JkbDjbaeRf*#TAkY5(1ZybmA$(P0EqGSbS_w9%h?cl6 zm;qGn{)zYH-~z17Z?N!{W!U9J&= z)45?Idc(pW-Yhad--IL!rp?mkE`KGF|DK|dtG#DZ4@G3c@FIggfw8`|G|R%wcfBLe z9t@q=%*;oOOD&z1>dmXN%Lfp*wFxl-GL-daK*w`iqlw1}?TU*p1nfwL<`aIllkglk z6KOKgNUFag+L2G&Xk{5}f4Ik?cVu#1)!xPyJX1VcS}CMzaN9Km3{Zm}CTgv=2W>yJ zE;}$0JF9h8jaBlhBuyKM*?j+40lv2i8Dp-5X-?`G=iK7gdUA4Q@BmC_@S=}DEC4Nm zV2EWI6$HSSYRWPDm>=S=Y~5;^1^ z5ONoTH-yNha&yz^4uG5n?U4@Uw$Ug+mpJOx#MQDV{_0n)x?wplN7(ue&HBFtK`NF! zzy+JPBeM}ZBZzDdlD-t-K0*7TIM9n(E#6}j?{gNHyR>J0;OYI%O6ALDQ5jKA$;Uzd-WmC(n;E0cfDUy zE8ypnz6B%6I0Ok3G8Z{yqiaNx6yR;Yw|^N212MyZ^Kzfn07e;i@Ix7OiHYSG#g}j@ zz)qQsWisW*edGa3?oS(A#pSEM6RCjKZ85d`t72<5N9C7m6V#jQ&YJ;9z|cO=(4m^j zi}mH3kjvRAHTk65c8>Rl0Yhwp0Jrnzk0j=76`KD@pOs8|-(b?cM29`Kb4 zFhfo32L-&$5dd|!AkRxZjxSUzPvE8bWUDFAIz45@^YZsjNalkZhtrFMzW;*d$n1%j z{Vo#AO!jtJ=1h6rSyJh8D5(!~v-Zo#kA}0D;!Ub(`vA4-yr; zN7bhoN2hnoYLNRlQu1c+i4{uExCqo$zspk>`IS@*y;V%zijW%TmlBpY#ReT)1$njB4SBSOY&$o6o<8B3aWajI{5x)L z1K387bg=lQP1^rU(_S|&&c_uF6Yows7%6MbLYj5^-o9v6fIUQSb_(q^E)q`L);9IB zFV5pP4PUI*1+ItiI#Z5L+s?YW-iWn2T>Gph2VPthJ|`q!Ca9RU3NFmtKllIwU)&Vj zAwKaVMTfF}SY2wm=+_;tyR&+$A=l)bsy^d&TXzvd5YskKp9vZBwZ5XmUHt6b#$Wl< z5-@va3}(b_w9V`q_JVQ0i<#qlnXJ0lYLfD0&l>OcIFJZYch#q{WUE0ZAEbS`9%9j} zF66YAEgvC&XNf?hOZ$4JP>+I3=Zi}#eE$mh^Gf>&Taev#zuaul z`Z^%|j5v3D+qnmwxIeRI+|b>NC8EEiVR6|idFDphwy`?|4o1c=hh8!b46Q+>2BM8f zcg{4E4wj$CDtH43UKxEmD|U)+M@1!7a zlL_dCK)LN_kC3P1DLwjXepbKB`=RZSuTMMnL*;7n-o?4mo~<9X z(Zt3ikc~*Wedh)0zcP|WS29Cm%cc@+>E#a52@zhr{-oKWTO5uwN(Ylr&8~m%u#Kw5 zv$E3KaoNs;fOrWtjzvmo*12;pmi7w><7Iau07@k>jU9+l6991n35iaAl&m_JL(5pQjIUGKBDfU`zb?nV(!0| zAe!~=3hsy3E`dKzNim-HL_+Q#hm_K2F@QnO1CVD;*{P1l+P6#!Ed}>=xn56)@rY7QXP0fQz?xDo zD+OX*qqpUi9b>#S8R?Yvky*B(Kx@WwV2;w}5k27lT(Q3ff!BtW35|;%0)JG#)WH6{ zM|n=!+~3Za7Jzzc)U}A-&(cH9)*t|}voXlyRRF;KC3>h?DTy5LY?QTX>LnR;K~5gh z2R>~-wmfZj?d#rZRI?x+iVb!@KFwM9+IG{hwKxG?t%L;kJVKJPGiadat2n3aFB8E) z>x;>FD+n;;X+JeHO`GoY;c{zrbxs6O318&s{10+(4i@MO zY3FLZ&q9JImjP&}j}JL11Y+}T-g6O9*EujI_y~glyzFUnnCf^NK~9R27JLR43pq6b zEMt2|p0zJ2(YIf>k}EG6t(pdG1IHYFDx6n9=a&gbT@H`NKLJrQyvx&qy0GY$9n*}{ zR?(6^a8jlm7C9Mm$ddZRA@)|p`hPk6U&Fz&lft-71ziR2+rzN^Qvwmu$*0S}GT7CR1!*PUeE=RWvVtNYXH@>ZReGuw^b~etpfMFxR3X|bY zZI9I<0Ze1tA1?FURyuaTQp!oa4wl422j~I;!{IYKXVxJ5%Te2?e~~m&Kf^K2fb3IE zB>s27TXUL&5nq`i&Xv6x3W+7la#kqY1We2;?PlL|M8(}w`0(Ke5Gk#UWrwpGlREPn z-TBX6CWu%0oKH0e0<52+ahA_gt#)UISaMaJUkaO-#L}KNjD}tg%Q!_;U{Q2?v%c~2 zr0J;S)daew&VZ{PC|~ogrqhTdTp}4<+I#bX#Itb$%Wk6VQ9fWKebD! z9v?Wa2Z~zMUBZP0cx~cd1zgD4E(ud51Mg```>eBiMnv)AAG2yawW4EZ9OZPMb@(4G z*DDgjAJC34&Kxq&E7 zVw$VRtnNY(yT{FA9mIEt$nE zc_QQfiM0ob-lrcL;8qj(e~4*M$?Ghh)=N1wBz&v;?IDf8KW%4938j6^-0VFaVX*CaUh~%pwwnC;2N0brWrPQLUNNdETbD%=4%j*mBKl(tncZg6x4OZlSaGP9}HsQPV zR-Y&w){cZyiNsUGjakQc~;d; z8g!Q~bl(ujL#d-8)EhNlGdDk#5WH6SP4q}ICd0|tmeYtNIyT1(H}pN$-c2i62(uRp zibx8j&U-9c-g@{g_`5<(bw>C*VAi^-$PPi)c&Mv+UipWs z*`?an;wBI_LCv)0mv?$;f+GZDnVTr7M0zb{QXyLMbFK3e40yaWEc9?w)arXC`geh`_@WnLZYrku~8wc07KPi+ZcyApzPL34G#oQt&d6_w(jD5T*ZD8Uapqm-Pdkm48 z+4bK#8LjI-zuGKU7Q2RZy8S4>2;p?j50EiyLDE(OvZ#NV5vK6DN!MN&egA;$`&LgQ~?vZP&ptRCDoi@E)WCqlcu+QO2>h*SmX5a$GzzffT1W&eX` zGwU_ySKedOG!)&1h9tal_bs7X735%^_~1FYL%cX#M8TEISh3-#wnLZ@{3X)?f~z*6mv@zWRP zY~OtrmE(Xi-neORv^h|MdBx{8%1S13qQf^^ zDGLe(IaF|JNwvp{S&ygV_xU_uxQQie&v_abV@8v+*_U&`v?0AIp~9kiNWwr< zG0+ScXkHbf!D?b1`!VnoE1uA~A~PY`JH0XN&F)Hf11l_I=s@i9)@G8Vb9=v^PSOQW z%0>nsbf2k6E?OVTegq2S<0b0(#Z$yxjDPCMWqY$IF0z7}QHgrqQ%xcj5@uxkrHO;W zPB)9#IaVsf>pt*D@$Yu_IX`YX*zz!0n@zawyTqZeO!LkLNv{?^As@ie2Lwnp>v-lSgZTb-wG-{{K{_BfE(riTv zPUr%a`iyRuPNQX-$oLHK9e=Rl@+SkmihYLlrcadkV}hgH%>40zecnC#J<5*0^gbzP zVfT@FdLc6G@MBY&bEaKx<0(V2*j`w^-pDnG(-+{CUDL_OsX)TM!q2+IkwzSb!2329 zSJ)r3W4=K<7@+_Q&_cF>C=M5mN5+wSDDByEbani#$b9Qzn2`U+_mf@v1vv9dc)TKi zY~&Yjl3)=}DL7Fav}XT&)F2R{HSge(R_MDI>3L2Xgk#3RT9%+0}}$};ZF%D&|KBehcX%na~YMmtKyo`qoC`d}5w z-2=q?0?HWb_g6NiU$Fq?dHivBG)Icc@6YMSN@l?=y*A)JUkT`rPFra!1gdQpEB6%# zTFd?1>C>qU9aHd~bG20Ja)`wl^~4Qbpj6*|To+z97yGZ6$iVg>9P z&O9*76|2`N(Oi;cydBbm%!qZ!EmfU)ISjfjZcQ@@5`@~OiNiLom<2<#eQqEIXSKYB zhv`nRtgoo>ssj_>d`aHR_I0zu8d3!q8($Q!)c{x&TCmVG>YX1S@Zz&Hi=G^R^W_$v z%L}nQuCmMk9XG8LHeY~?^2{oL#WcF#kVGYR$EeNpz(iY~G8a{fJaUOj^{6d(+X=7v zq~I<(cA+Z#a*u1#anhXn~)`gf>pO;n-RpE}z2#NRlil4`+4z<@GAcRbS91LbiX z%gYXyWmY)~Nk{f{^lWo2TbdUva|S9xIhf{}iNrh!PUDk_~oeSJxhB(6Q%~h}HUynSEfCTL3Ga@ilX? zee+iv;9>*G6m0iNn@r3UIIMK!*Su`U(hGGOR-pE@nq1mcxmsJ7J@bJQni`K&@uUUa zYyF8>$(=_^VL{;YX)IOU8)C=SgOc^>SQq13Hy@nXutoTlHXUFn&X=Zxc#a$TQb+O( z)T}bbcb8FJ(<0D>t-wWU>P03^gdO(KGLZQg9`$Z#IrPSDDXtf-0d9Phi*HSTdWX)a zVX*>Hl^p9cf|GES{^;)Ig2h9F)9!g+PD-9jG;nOL&*t69yh2^n{a4Wwn@z_nWG=E@ zDR;1Kt6Dm29$B%%#|3al1CU5AoMn7cq^Q4b3^J ze{xM<1y~cJVcCv{sHxYfLGA@=KjEsn;dgcbA7+xeQX7Ie>P;o7D`8m)@a@o5wNN$-yXQPxLI$Mwq#WM z$0;tS=D4%Hngx%K@*GduNfYRTV0PTr-lQUjmHz&9Ks7?-Y9hJ8wa4915-fOz5(m zyj%Z1zkw9%wRiZ=W^udG72!2C0NtlOz-5=%8|XJpNf(~^cO6dY|SP28v!s~xFm%?eUQC5X{*$? z!B8kx*ny|ZYPVPtowOL;VObQqS zLOspr=oJG*HI|=;HmW9YeS$igE@SUa02_mT_Vj>G&Bb%rOgA$dgzlSa<%#1vi}{zn znoTA1$F!$A?Z&hauiS9x{M-?ioOiat2hTL5(XU-q6RF<8yhnF|_5*3|LY?u{BsfO{ z9oYeQOa)8OcK$%A!DZ}jOQ$tJc5snN*Q}*S-7-?ji+n$raY+No=mZ^bj1GVum7+qF zBC1P{2&)52*#@J#oUp~;`7L9SbuOnt-2vw?G%_$nln`>_yY$||lw_LP?xqGq56K{a z$B32S0*B4c!;%F&dwdOai(C2zZc*LE3I*7JC^?Rlx)GKz--Tnt^$i}wQ!bwlz_uC{ zCUC2W-KAfC2eV`{a2f}gV#c_A^yHh>Nopx$&1w{i_S%&Jf#PWJ#~L2RhWnqaovDdm zY-KOo(u$Vf2*nMTX){}M_DxFV*|9l~?8c6!F6V;A6kNlFbkR0XWEI!HvW0B=!G>Z! zWQy7;cMmSSn3+K8u1rvgXTbCJ;^s|0Z{(kgBg8?$t-6`Wx{}=S>C?k8kTOAq)fbfn5koqr{lgLzUJIO1R9 zms3)5^;Xn;^qMU~6nX9;Cfuc|!m(YJkd*`r3dh`J#{ZS%I_v!(SbMZl~5o`)Xmec_Igz(+_PBy@1B4y8*IGwv+sZ{#5{+!%BAvQ= zA-^NnZBjnj2RAMfI@gX)~@$Xr{|C$T@&+#7w{z2d$1pYzb9|ZnE;2#A3 zLEs+*{z2d$1pfa+Kp2Yr1RW8;eT`!6Y~|tUZfy?y>&nH#0fmd7f}P^83t?djHd%Wo zPiuGB*~#3~TH4yu#mbt3P1)Mn*3*uHlb4s5LR1vxe_r=}4azb~Tb9L(fLt?uXq13| zA6J-aSQ(A%Nc)a*Clo=DFbSDPnFMZL-02QVq5$eF)3q<&KB;;7U8n6;^>`$x^XF+z z)I+T45Cfoda+1O{5K?_|q-!ueb_LzHFw&I)w6+qQgta@Cgx+Y)d1*P7jhoDP&DlN@ zocMQEn{3}enxB@G8lkO^c47y<>T5a%->eNg z%ipjXF3ql(Ia$~7sqn=1D$Ig`T!gI#se~1krecmN^^Af_yE=_3%IKfeK1xk__j$A5 zOZ+-qpYhb0^nM#kE@wK`&{svA)KGrVLlU%q0WlR+0v=z)D(W?+wK#a4Cy(Uu8#}+6 zKGj=z8Tyco$l%Q9rEyX=giSD~!YglTz^7!56L?fUmX~l(tXD3BsFh`6D`3Z5TH1A8 z{MHX>@<2m#!HnFgmF-BS%DZ|)xf|`iCif+eIJqtnH)P+3;b`Pk*D2sSy{zpI_ZS%rGb{acGk~lJy;o>vGr)d zAL#MSAD<7dzgG;`F=hrcq%|iyepo_0ULUSfWEx24Hhwve`J;-Btr#GY-yHHK5<8T# zr&L_&9I_`ZG&OkNm-hs?(c$5pnEGqcgk+Ekw5zxmm4a5Ei_5zGCHlkY8|;xF}6 zn^dtBgP-CxIV61ZYD4Z@1EWE0WXbqEpR9DeqfqlDk}d}J!mQ2QbDZWVT%qy#1pNRr zkD!1NP#`@aMZ5H_Y&YC?j;!2Hu=npgJ)Oqd?OFfT;pN=K$P92@Z^Bt3V@CALc1GYg zMPrvE&1#O`_21G;FE~lkes@9!&LUlu7uV3oSQf>SQ<_rrR4WCn4;0Aid02aszxO3l z!(>H#dr7CK{UcQjl}uQ_$nd;fI4X5Hl7M@a>NK4Rw%2JltNGTHZ7)wVuOY;dG;)jM zNSyLns%SV^?dNk@JvzkM@-d3?ISSNi!*OHfj_`DC({UNp2KR)lArtHNVe&~#w=}xz z^F4Mb#wQ5rn-Bz2>(AU;S{!Z(`)^)-b*5j1Z(4KdGYlt8Xko@MR=)42_>SVAXS^jn zE%^w-3g9k85e*f zhwVxKpnOPhco4_=p?&j>aS*R#4hhNNS(idNZLYBG3*mt;S+Z<%HBiS{&W2O%9YHaV zpK+tgyr(y|k1O5ndW$I7FnU5}Y1gm?W;5eK_QF@x6$&-!!!sxeo1EsMb*`+Q-(ATfO=AH#+i2_2 zitq%5#u%$f?8bkPy1Q_IhTMA8w~#v%$%f|cPwyRDjO(KjFK8!Ph}5PLj1#y8Zg#^J z<7yW5+sVEqo9h^+DreUi;vD?O;V_)CZs?<@N(HmT<|~%3#Jra5Sj%SSLJ8T=&!O42#G%B->`rFINqc zbB+joEC_wYxvuggQq_<*d)7DJeLv*P^zuJyDv@AQ;kxxa~ib&C4*-%6y1x3KyAA z$x3R_2vCpro!64Mp#Z2HyY=El>ELD1ud(YQNpkSMroBmD!z_r`*m7%A$;xGxZd<%k zsRhj*lqpi>Kpl8isX|qB3{E>uuEXa-~QkZD1VocD?+A#Ug5p%47bB>Eyn)3P-=7=-NGNi+;j2eFEwyw{t zz;A;wGI-hZ%{V-S9ySUgT!8f%tk&q#i5mG=gx`g605=Z(d~OSO-@Db@7|Pgwk{wYp zHl!P`aRM3YKT=YDJ4M+R4m*&l%a%gac6=9E>@=*e?5k(cJL+d+oSE@VzbFIUUwg%! zpR-A}E^OmY?|DSULooiZi}-0Y2^y1UI%#`Pt^Fhs8M2Q~uYb9)r9V;-EmAFZxY!`} zNW?=Zxy5i8%Vy=ZY!)|Q4bY0<#0kyo#lx&iKta*I#szvum(zGqU%kg~*i1=vIxb)A zz&(gm6E6!(M+?f)A@X;96Tp%%70H<1#pRdb9+#t@B#NoziigI4SVzHFs>A6JTEksR z(>`5EhIdKSc#Fd4&)~6RDNDvrc{NGZQhsb%cDFVlspc2>4)re9?mj+x@l+I9)06*z zkvPOlpP0q|V*IRq0l$54Y>@Z5v5B(QYAr}c6jRffa$qw#J4(;X(gnU{^@sg=2C1u| zW;{@$t&7?P-n-QRngpqw|3uR-YwKLvd)*)T!XrDdEG;zvFOqoX?_y#jfG6Jfi3s}x z2L^kJM9(eh{*Q#g zX*>qj4}@f9pJdg41(x=^sS=$Oo-l9(e(T@ovv^&{Fs6aNSh)#GV@Ab#cu0Ng^q@Zd zTaID!i&XyW$~$k8+zunat5+uKYs8t{4Z;XzMbj!mR=Ih<-I%^IY2G5}QS)^)jlL7O z(67p`|cW1NZeji9f#b)7V8VZVL(+Z88PdEvZ zOQfNBZTm{~PcX;(j;2@IitI@F+-4}=#mZ5^iNdF~I?sC&nYi6TkZ8L17ac#yCQ z^rJU^7M2J~o&Y4ph}##|x8H>GaF5XAD^6$BICU*GQM+vUCAH+mWjyt;ki;otv~_Dm z%ckw~J5Fe%wf-EswCzTHD;3@=RvS$`r7=|6dNkhgQgyIOR51^>Pix;P+9`Wm4!+!c zPtblor$ty$d2~EnMO2|8W9U9^{zZCifmD|tP?+z zb{Bdz#RD1w2T|)s>GIWmqdoN#qUW6IvT5cM1ggStb^{CHuLTxrk(k8d_i2ADIeB$F;kKC1BvOds^U>|~yO1kOfUFMC0BE9j z-B*12cogC2vy{&=5)*LZ*EEN=NmPEaYwqlM8gM)PJmuAz4{2EkU!w!KSX^ia2UmvRBRx;Xy@EbP7i@dh|JIXOAlIsQLg23Yg{&r3LJx2-W5NZb{ut>wU} z7otw2TF>d@nrroF=bQM2Me!PQ)d&s&8GAKMS91icQ~rIiV)|lLsR6q*)xNQ|_0nAI zs8{xAJa92S?)!~Hboa}_R{KzQ^Q}l5;z!&;QF@dJVFLr`@Nk*14x7u0hfmdtD`a%o zj+yhmsA-CZ~W8` zGHnig*_h$l%@y{#VN7Nfb~_lxDXDff@jt~$gFJ5a*|GuJ{P+K)#HQsmd+rAjREzqp z4|$~Jh%OX_-~gg>E$+gUJuWV=;btD^w#U;_&xk-&24hs-dE!G zzMoEp-FCkY+O38Ou)aLwL7yuMoo{8!4u1I4M_-lhd5wIb)ZluZWIx>*hxjPo#-x6Iv>&m} z7R#Y0tr!?epBsq1LkmXJTi`SP6ns!xvhy2K_1Hg|U%BBCYq4d=)Gw!_=taTsY3D*) z8-ccv$^uN&u(qUJHs4(=X}h;RQrV@ccOKLY6X7)kuH(&LGWi}Fe!MpMW;^n$FMjXt zd=n9aEIT{<=>^^1-zVuheiBu&+Hb?Vs6SxGsJa|aus#d;y9Ph`M}(p z|M|jy!@KH^|NHq>=EUe|&96=WvtNi9B>XjAhqJEyfv4@a*qp=L?peG*6a=`<$+M6n zqimNMZ&LmmclW+B_wpP@9rq&R+HW7yl4jh?G{$Dj`Xp(Mly}R{0~Z)m>+Ur<02N)# z+m0!cwHl**N)a}t+Kg7QZ|DK4C9w+h8D+Z%amF1w@;o25EkGGn-;!r6K!z^X<=4jb zIk_Knlrn6D^^|Zw>}!^)f6&fWr2X@A>%)wHhv7KBQiddl*3YexF(jIvDS7MtmK$iSEeHwa-Y`4OMvxY*rBi}*ET{v#NT-<@eqvS&-zjw4=M z&z$&INzi}xnZ}kko(U3iRwccEFp`UMS#Zb+j~D6@EzURkYW2U&Yk-Xd2a*Cj#ty(D z0g51hQKNJQoC-#r*dmLf?8=m>6pJ#1R(%%j^6gB=Tz4U5=|ToT`OaYUN)5{pj@$=r zcRx)Qz|S#^M^lOyNf9{SK~ViSmwQ za@`mOK{+1DOn&alG&QVSM_bSwN>21!c-^8sQK%y zHr6-^(I+;Yudmf<@WPF-FavdDdz&KIq?l#8Z$19qq5m>6Ye2J5C*G0NkMV==BzW<* zmg@#Kdn7JaT78l|hLK)Y;FaX^^H^HF-D2p|SY{n7jU%N*w+*AwBcs>0l>826V`gN* zn&X(HnXJ1iW!rQ{8PPW2h0&Sv2>&A9U-mzgS<HW06 zm~qOuQ~Ul?BL`DA4qkHKLexa1DTFFD~kyG?D)5n+g`fYXmU**|rr{uHaBdzHI^OisCgw zGjcJ5n#=;6J>d8Icn0NnV?NdV7M?gN%c&pA(tnn5ynk~`sD6J*Q`myE#2adZxvrFs z1Q-9=>rw}?5376PzZIT4aYCNp3$8`DaRgEeika+czj||Ht}VRs)!EV<0)NF7sNB1! zo)#p!)6yHo*nX(>q)yHJOka$>AX}$7#H~oXC18wOJ(Dzp0+Seiyo z0dnWyf7)4JCPQ)FS9Vpz*b8V~wpjy+4s8uz$FN=ax3*>4ULIBhARx=B)FG!LgRObB zg^Zu?RIKyIteO*@QmC1xHkpzOZe<2^i{Z2ukZP$f@jp6nLl}11f2m z%ImI)swsyFK7o$*hDX<0=JPEs#B7RF`wl`~L3`XWeMAGFhjAD^Oc}<_i`=V>ho?vI zHncJ%yGs-Lb>AZDqM=ukkY&7o$0x_Rtq%H@GptccWY1$!>CmS0HtH*0RBUk_Prh1R z-o<}+CSB&P3swpEXm)w0&}Oe1xJUF3)78t0)Z0%$_t2%umZF1?;wt+Tyr~<}~|kBzCNfe>8S< z?Rvv)zR4)l*g6jGKK?IHfQ=$90;qd(k`)(D$4yqvwp?8YYCfLV^rj7VllhX(HRdbN zW5yA4ikCXo#s!#F1GdA_V~N`sZz6NQybW&Ded#XK$<+s41obV4`g*E-Fc>Kr>vRwV zDC~Stt#a~?%dn_7MIZeJU0M9oDc}wXfjY`PiiQMlZR%0kdUse(U9HR((Q=xHAl|y4E%dVxw4PrN|u+azCJn;2%IZx$E-9w9r*;-Dlis zb;_x7OYwanSf_Fuc(N+1M$yAB+kZ2l|Dhktb#J!jM7Fr&oq|7F?RLq+SD0cLp<&ji0nKsAVki(u>OMui;^|^>#J^XlsA#vK02>CS~amrud{e4Vs99D7L-pdKww(y2P4)|@9M@+skhFqy>sK9Lj2e7u+* zRQNdtPLfG~EfkTAq6A4QQHk&?_@omWyeOl8kNKpEQVCl&DKfC*KkfKgYW=I&){0Z+ z=Q{X2R9F4m1>PtfJ zT09^ilc=g=v4_ThckK-U6PBQZaGVJho}_EZ{7j__PRC%8N;^~2Ai(_zuqfnma^U4S zf@>n>7-qT z=8f+0eZK+-V?O-~OCdka^bJTd=QbrQi<}PCMcg|5%(aD?FYn7P2$?UUB_5K7zoE%v*Ek*XAKq zUiO(TUC2Lhf92uEADPdOp4F3v3$YqEiQ~${QB%B<=iiG3JZ+FaPm*gy?3m?0m54pt zTNtOYnmionbt(=ji5KFhyDI>sU%M~xl#YLkA(Ux=Be(M0#3usUzsn@yh%s~jCGi$m zwE1{@3SHh6yW#*^dRT(I+@y6rZ4ZzID1V^3IjWxs-Xwuuy(m=+iplu#9PuO7bFASQ@GrLgFAtz=X#|e>$_d^xxhsDn z)$;k_+6e3fBegsCzc?-huq85Z0a8N3qF2|7+t5|;_Tu{U+`E%@aKOOC&GEy66yi&@ zC1Qt<+0wbLXmWJ1(*BcGn4Xc)Hc96v-efi>*O##YwWrq3px}qjpsD5?_lL#ubH@q# z>UQ;)-L%H%8FJteO2-c=sFlUMBwF%Z!P@NclH&@uWg)@)VzN7@hEt2%d(kpHM>Id?IxH%<@qj&1!o% zg~VS1`!(j>UG(?2wYcLGm~SZ&NfcDUf$OLM3Sl@2iU?}%Bk`Xy4YtRNAnn&UReCJV)OL?kfQ#-*dm#VwM{3^L3+SY^Si0MU1%rErk&TeT2~a zd*2)xl!es?J$g$5OVn~B)yxj2OSRbFQ#^Fb@T1le00Pf%L!h@3INP)(VV=GJ?N&DC zzR|y0DE~UeGaG~iHg#&aIbJl#vb$)trNh)31uG8mH2+Tdy$5kxIA07EnY#h{0Vn!% zPlMNTZ=LV<^H@Tlzl%czJ2vZEXUDhvIJ~J=e&Vog@JMSFEtl!vU2TQj^5w<=9@n=( zyBlJUvv;603o+=;yyHYfRr{ZZ``fvYC-_QZk9o!@<MU^YJ53>cn&;RzF{bgTBBE zHlklp5a=ny8SR-3X9QY@|D?bIEqJ8s?6lliz-x9d)ZA{IE(_!z5NdSn<38QkdGy#v zf#h>#@%=Zq*>QP&-vf|jJwoIs_ShQ4l0+b3ru1~ZKG2CV!(OEv?6IfnW((&*vN%(@ z2}8udR`b1@l#5QrwActoGe@Bk$d%x;jd zb$%UAcW}|#`Pka4bLWnq_aXD;EJ{o{JLZGkCks27LvA^|jzl@an5tj*cLQSaFFz5O zz2Ol_Yv8#BY;c973JClCPMUX-@bl0LKI+t>xs?Sy-sI8P7VW*!r~od3LnG;?^Ksv> z6V#G6G3<>g}v ztl2uBIEy@SP+d)9UqAGSJxL)aPO2Evq>0dkhur@cKjA{H8LkIX%q2wK{fMJph`Kqh zQkkBL%hX~$Yqe~f^j8r)n^Zg}czg#Cs@b(|o$UnMK7*t%UY@#Ong@BR56TMe2sun3 z69UI2jJnH|Xz#)ctOB^T+;#f~Ue0{i7GonqUTm%wZ>Or;(}RyAj@V4cU!MA|AR#?| z$IUy?mzAiJxp0pZ*AC6$JSEyRJ6TCC>QLJO&JYvAARe)Yg8eRl@|WkINq2|38x!S| zY4jItKx1gF$u{0S8u|B>L+cI>+i`*-)Zn%~Ag|E#$-l!iU0HUo7mzW{DVii0J}PZ+ zg@=8faQz+e88Hh%5-~i1-#~gR+zx}g#2IPYRWj0plf;5@?d;{YGglnJ?X3mTN7o0L z4yQf=lJTKeeT`l3$VErb@g$|ft&!?6@7ImTT%KoLu=wGU?~u=9FoO1^UJL z?H#;IEW(e^EtvOtVNvf$^EL8ywEZRmR;7MNQf=^Nw@cW?*4MWk$Wr@oK%rwHKg7$IB>Xz zr+*H^%IQw}$gZ3oPeEwNk$IKIk8OwWoqw*^&VodPIIuWIS&eqJcj18Vzo=o`I{t5! zHvxos3q3U;{w5ziVA(piW2t6NezdX$(CI0*To16+0bT4^>6~v}U;Gu<8ygHhd~pom zHCbvsT#R3VE}c)cI+T~7R9g78=$GQhjC)dod3i2UN|HK#MFWp#uEazMT5rM@#Y6$n zw6sI9pysDog4nr^@6Qtu(S{%<^5{2rd0@?ye)q}f-+RL^zg-Zhpp01e<+?``jp2ar ziXEDYPe0P{Bq*OZQ-<_-oga=SyMt2fcyeKD{W(Rt)M%71Dq`Hcmn(nN&o{48s0c~E zJ-p=S2r})D&lVDwJRG>P=oQ0mjN{T+ z3HkE*-htN%6nJtqpATNi82uO;2qBD#!M@^xH((WeI_r^6MZ%mU;PsXN!;rd5h14(Z zk@?va6Um~DojD2Vm1Lj-oC-qIXCW-({BM^sW}npJ(~X1Mep(_!L;f#*a0agX$o$}m z{3-VMb#CB!^q)`>p{(RFr^?LDE7hXO;bI$X%Ut97huwg8(2X_Ij>wz(XX2{krMt`T zu+!qr;tMJC;&&B!j!3h)jdiKI>IHtDphUJOHF?hGn~(#CBaohDr!UWaBLw~FN@f>C zfC9aed^j~#ei>1kah#~W6U+I3sQRj~IKJS^U_UGb8z2N3n8DqGI}AG5KnU*c?gYu; z1a}Q?f#4q8-QAtw?qvDzKJ4yWzx3B%SJyp#>QvoxMH)^6v}oQ`O|1uzNUwU>*X;mx zikD6COV;7A_LT6~hnG#DQor9+XscFaTiW>Rj_`issJ4jjueN$(MuMrtLGiHP`KebB z8~a0<9A1Qd+s`uJ%>S>F+(BZ4aQkiwu@j3MNvE|-%ZLaL4(-Nq-Y7<=RpL$VI{egw zc8OE5Numc=;4QxD2EN9;AYFjqVc-DK4)_Er0+u*2oF=pwM-d_99CP0-R2=6IWv%!| zXz_;&;(JLaUfOPU%0Q}G$WF-K{Tx9RxQo8WN|fd=Vo1DT4^Jou?i;#@X-Ksh_u|sr zQ=CJX`61JRtOzX4qCR0@i5~5D0kX~+I-pN|Ey1CK%5pOBvyuR)WT*k=CI?&v`wRLP zT+^*kz>h2e_oyg*aWTeb8ZBH6V<2Q8XaJk62aV3(aB$Pv3?0*7X&@B*1#kEbW|c|l zKnXp|?FjkkA3hoCwH5sbG!4ac#PyUAV(8l3!6u|YmQ=Eg5Y2!`ih>KJBL=2@MF+yR zC+WNbrP@CVgpE1AixkB%6pb8FHlmvdB{LMg&v-JbR7T%zqQXP_uwn5bbc|T!Enfex z;MuCn+!4+SB&Y%!q<4OcKFh27q_9S#%Q#1aaT8|a#ex4#pZyN|Df&F{$ZzEz#kyFF zo5NF`Z%f6=>eF3F{l9tXdY{{#*OJ+CHF}a!)2lk0y3?7fO*5k%B<%I4=-=>vw-1xq zfAC(C_rddeLv6QCTR{CEFAZmE-(I)sfqt((b+dGU^qb2xqqZ+BpFLt#TH~U0Moimy zh#&Nvk7vz}e;0Q9@!>wnf^YJ)ww@R>lN)}$4phuR1=2FxBs8cWJFGBIxHED)H7Ohr8VBAWr=f=0t{_kXx;~vQpo#RhR)?QP2gK2^-d^bI^$}_#jEv< zRuTy1Le_+Waze!dq#{Gf9k)V@0eMWi6!6}67heR}sHadUnd6@RKl%6kw&q<6?gLy# zm;sdRG1>V&r0j>;KZ^9VrQ6%j%i)go*7jerkhb49 zgZ_V>&mGtm!jC%@H$iXbqm2@2kJ_ZpE15GULTf%QPdzsHy$(M9yZhVR{-T!{5BV(w zd|kv`%>Kjn@b8=X^19F2WsUh9btzvFY)suc)h8#zRB3huASZz>MI-zt=V7XOCVLhv zVuk##HSxLT@DY2izOCsn;J5IMpl`OS%jK?B37c$dC>w5joI1jcZtN~J%HNbsEs9lxgHPt|- zUytxMxaW^E)O>^Ob3>y4Z-uB`*_t~y%%ei%{zvrloc#K~wW!q=#SGz_%>C@ATj%wc z%lWp)AXdM_7FNM_!|CtQf^N?b$$Em11ME~Hmjb|-S8TnPsjuzg7J(BOA%>v^=X<1x zxNzR$r^9hyx0|J>gRT(2m-*1;4unl4;Ohh?YkTdttM7}j&1wDnx5wWm!v1)zzZ_W{ z+zH>Jrux{8X9-E#gl6NEgZ8?^J}II)8il0%M+vwNDMZgzl9cBylXx%rX)9Te?@y%B z9<9Fhtdj37r_0Wj{^Qn2Y2tZz)q(f=zc!-wyUW6IZHAjqtNGjd&qK-Wx1;txdso@Z zjh^@l`psS_tHlQ4WonT z$bZXe6yi&N@GIk_BGwVr*A@iW*Cw*R)joL`5%lI;LX&Tf1xKl|4I z@hW}2L)m;R8wpt`VAtKoa_jEjxiMh1-O#s9Eguc*kcLm$B5usI;baBjQ|9B2x$vmL zpR?~kQUA7olmD)1-vz$M$EigO2>5C30`Dx)2R_eYN9?`hAk_ai$Mf&axv4*x4S{kJ zjyK_4^e|##ViVJpJb;eV`38E{d1K$IiH6gSl!LZ+CuZG$y@OZ z7EygvzRm)T!yDH4bhsj_QJc}=R0m@Q@gvDA8ZGPmh5k-!P`tNomTePTJ>{s)3N z@R6CWK|6sm-CKC!@~X(5mv|3*R`qhU-<*>|072buEFOoI-{*Ru;*WPIB@QWtP@^fQ z7-ir`WWo=^E-4+oV?r&mZ0N!n!tP0QL$Su#_!=5jUb7eY(b_XkzUc5SzlWDHj=yCpne4L|SD~jv>wtY^ow-@^Mx2I=_IEom^`#A9m4k^PQeKa|m z=$8IKDhyA&4@~qieUI~Dr!v6su8Ww`fR9Roo~z%97qLgclb77sKU!od#R7NYC-Y!f zEe;XC>+ML}chn95jjs3gML$hp(S(&%@B2~Q0!kK1W%({vI%tB;@U86v0z&vL`GQhM z2=c(5tv0Jpn`Azk2~Ozd@nSpnG$lO(2$3mNHWEdADX~x`k{3_Gm<0q;lQt~PVp zbsGKKuat?L+J^sxm{i|k9!k7YwEn`hjri-lM7$RqO}sy`cQgY7 z2oZ9KO#Dhf8*XO+g$v)Uv8oQAK6z;eu`98d{Q>()G-nF=$z^Q)<8{vL@*1P?rWah| zlD3~0ndOk|e^T0S>q*|Mi?pd!DE+-Rvs*BXfy+Ff&)dghJYaARAd)cjJUDl+#-z_w zP~;TmdNI+YzKy@!;CpvJnVli>V4fW1cerUge!Sq|SN3I`ug+(wC*snKR<$BM+u3%u zbQWsB&vSoXxInw!zA56nJ^AnPW&7Vlle5U<%;8=3Dz9oZZ>p$W^)Sn;3A3W?5x zT4BZ#_!m}&HvDAk+4jB`kDcQuOXoL20&NZ!+xE7lpry0aP+@?Mt zrjar-Bn%-(EJ%*c8MCe@0h~uSBegWC>MHp2a6o&p0iO8x7+d%}wg_Z(L3o&-etQOD z7AgjlxXDqUkv@A`8AVKvdg}4m0?TD28dib(C9UDB4jR4zJpG6qAm?#ZuFbR}VFvmE zo)Hvv>(xqv#8%2`v=u!cK6S}4NNdm^1jqLvyf+~LXOhqnNt_f}2$sslhk(k9=I~$e z0%pJQJCc12`$UtUEJ-_)0}_i(D#b zmy&&yIAXbcaW1LN2XDG!A;d_>V2TjqDu}gBU+Tjs3jUG>i~$clM_?zHoKII&DJ3Bn z8?rJbb_n3&0EA_s{Y2ub!|{(6WlG&3q#>;egZtyq1TbAvSht3T4|LEHiSue`Xdx>v zAu8JhzC&)H3U4gnZ|V?Nrp}U!+sVf-YUTah69!hK7IXHoIEp%n#9hJwEahTz`R7um zO*Eem#=<4Etyp#}QH0abM$2z8=^X4*Opy0)rDG|HYCTW;Yv)$r1`PK;fH?+dusnSi zkK<^25(Bsg%Q<0^;Y#Jb;h+31!4vxij=THt{Oomf!kDTo?^ZiIVTzic*ey$U9t5#obeakrOOlg2%rnSM^|rKRs*XFE*Kf$-bD4{=-3(oG8u_%>)k=TU6EYkI#+R6c|FHS-RVO_j0uip~>;$oJGd=&u z)^t6;O|#lyMHs$==X^6lplVGY@^@A-PQBR_K8>%L624b*w7%Ai(j4*{Ols*Ow*6TN z8WWqbZz{jWcYmd}2ELU#VjY!bY?uVv7uQR7Ok4lEO|}j|84V#R#Yof3ay)CRqfX39 zzc1K!#s~%eplJP012?7Gc`K~L?2DY`4NwD}2WUdo%9^SQFg8DZlZm*Kv0rTsdiMd^ zEc+`MODaztwK8S&bJ^z_iDCy(f9qo~CNUh#W{u0l$`!;-T2E=!$t)YlAWG?Pgy)5b zifCe_ykiiT&um92(=kQHFa(LfQ$PlRzOn>>!sg=9h&InNoc8=a>tqi@ zTq4%2I3C=b_Zk+|Zzi^1O62wF5P_mz(zwVC9CHB5|KgK5WY@!H5DmG%Ryx{lEw^Up7)+`F1v zu6dx^3|9Vn>-liARhwRhAn2dtnX*AEzHaWAWP=(%PT;aB`mssGp-!rTZn<7+34lcM z+r#;fc|roY67k6rHB%CaZ8LK*4f^zG^Q%oA>dc}2c%M>@vMUsy+potaXqN-0-$yBb zFS4kW`ut`dw$CDnP-Ks17AUa+r8}nWKB~Fqs{BeTCE|_X0%u?T^SQ<6GGTG@LIaG_iOqeE>E5)c-5(DwZ0T56l+_k zUTaPNKesO_3t2)c|If9Xu{wHlrG@i($U9uUEj>7z0Un5g!{9(M)IW$MY6p)?bj1f! zf=?g!x5w5$h;=_gl$$b7u{hwb4o%mz#k(#P%6&a5SPvzk0~Mj6WDOrWPS~Xym24$i zAZQb8#zhaXOvBW;((kp=ZKP5IrCiI%Q`UYDoy3g|C^SVc{b;+2h1D<-XvxjiN-+2X zi~vd==$8CXmc`^}iCuyNt1V)n{6w)LWtR@l6iz`g^DOQ=g&rG2lMPPT0T`K-nD^(7 z&@zh^38Be(C!C(I4o8^FHB>QqYLJ_EfuEaZ->~yP9O8TLs!eIO4gaU+T@as~+pSrC9U! zyFS|6lTb2wvnV{@U~EsXq_!>2s#S0JKXJV6sZ9+xn1`7ubtTol6;499ghLtF)#U{D zn3s1!f47I%n^ElSTD``Q(>*16O}GC2~ zBCDi3B->e9vjfQL&0864o_ACgy;ho{`%*u>w1O3D9~KjB5;~g_g^^q~=icfc!8y*XsmO z3YA5ePHY4l>122Yl`XpT5*}A1McfV|gdV*u!zH(9C0q_ol<}9k3bJJcX;iIDR9#bn zG$P$5tHmLvze6!%BNqeNPLh^pTT9ZY7*|ol%q^Nl zNyxgdfZyP0v+%x~ron3-TYCOwP@``618+kwB0oQmWV!FEv#mu&TBX`sSw>feYi=+5 z(+A8$*E5UeYZ)kZj!cAFe~RKTQBoyd75iv~!3d;b4+8;&-2b&AhLWpbP_kp7v&P^j zu;HTLp-9TWaMLp1N$XJXPJv7@lw+G=jSd7TrN@v3;7Ycx@$sW-hmj#cx}9fH&DYDjWv+N^^HC4pae;}TB1I=q@dpy)<%`Th~f0r;k_x=qu}z1CERl^GkQUrO#iX?Pl{5qeM@BhDZYIhirtgN z7%-+z@76#KS8EIMba!H@$jxcW^PyXI&!{PtnS0fE>zH$7Jodu0POc)(ord#JYLfJz zq@|X!>!6Emo+^V?P^7xR%#eTwBNhG&9LmMooO5s^A>ifh-c%$ zOdFq{Z9BQYT0C+aWRm$;UwPeJ1TGdkh2|EG3196oo%dm1kQ}kj=Zv2{4KMBTJa`%j zf7}}0FkM4aU@IcSi;0Q24pg!V6a>ag5nOfY>1PxTyU!6(_du;)riH$fprL7ZmG+_)BGP)LW1?cYz z(1k<9JCNhU;a&^y^N*(4UF?)Kn+8RQAxbTOXaDmNKExx&#rY&F_psN3mSP+3jj6x0 z>&$hPM9rf@6xf^q>-p{E5WzNR_LfZpbcoQBiZ8W|#$n0Ir<>GUGyVTHxQ zx9P(7nvR*}%KMGe<3GUBGa^ z$GRjF{TpGqBsA1MEM6Tt_L!g znLpf&O5JFgXMs*gmT|Ls#`_DU{)`?%s*dZ-EA zgE6kjCQh#yd0O_Cc%-(lJ)WnSmHJY>YtEadjL!Nmq9Bh9di@jQ$8^5yAOhj4(bkfI%vk5ZD=~~c>|EKjA zBSa?${{7u!s2q&p%Z8|fE72rr+II=uFOvS+Dxy~CywFK3&)5XmJ8=;@yN8NITxt*#mhzgQ=a)&amhMYSDwG$)0<*PBSm~uJBRh+7}YjFE{Y7d%Vy&P^)QA_jq22=j()CwK3)X;?yMlFxzVc7+bnzXIUDiO z`@+mK{6!DSWw~ZHV?|Iz5_ITgi1M2clsKfiS1$d`fDw{M@)O^VLuBOdsp11*>X^C- z+&IHjrxir}E}~qrB=y%EXPs7sCOx-&P?!jSu=H1GwPnilo+jO~t z{7lD|{&d0ugQC$>H#jEnp-!rO~A6*7oLJE@}hkc$`Z$D-1*5Bs|Gaf|zh#p?PUlO|jH=LO* z!d`@4L;ddsM0_!-)!nl{?s*2jZtVd|h_NO$WtS_=nWOlT8IW?eEq+Je@|ISPpbjRY zvyKEs`bKkqm zrANR&>y91aB}N>;y<6$js-5OQx=z@^rZeVr3yVg&(01IFo}a7ma(pU{4y!{ln>&sB z6K0LpBg<e?Q~38EF0nLcBbE+Y)MG9NWOG|e>U&{aAdWi zmXvCu?A~};T5h^K-br1@=%3Sl8Y;1l=<6bW+Ve)ewPc9eYeHQL%M|Tzq=l6!I?Yd+ z2Y{;&ZmUa__!``0)!z^p<)eRbY?O(Fzy6J`E&vp!h(AwOto^{2MuFl-YWEwPeqj8z z%wGOd|ASSr=zc5Ch>-+{&?zl3tN*NWv8nyoaM#_XB24kPf?rtTYW-yR)HJ$Nr47$A zuJ#OXtUHn`3CTP9ExiCXnu3qhZr#-o^Y-j~9ii-b*0}5qhc89?46= z;y~p!61u>0ru54mYBjQQ)!%UFq&0zmeAwC9$&m;tR4@OCg_89C!-x0SShv`b*Vs|4 zB;+R~I%_-~buJbLha1(VNW;O8Nk3SEkG1*PYF!K*4h`Bju~{_vD;t0R)8k=2J)ZL!~CT!3&KAa(5h z`)h10Snq75Ztsi}A0YPeKhz~<7H8RY4sDI|!2n$!Az=a(u~O$USzbh8o;I1d2)Q_C zMrH1A4Uuzo=(A$Wv*GnA6K;7+E)5F`4mKu-L3IBm5W03-#o`SV)59(2@uIfmW7&kZ zi|gnTL1>17tY|P5YD#!FzyuT~WE#jmEn~+0smNlSF*Qm4DVc?w%W|*-wk_y^q-s;S z4&81mNZ8UmU%v93aLCWCW%QT#C;PPKBhUqXA|I7lGzlU8_x zTe#f4C-O|bYfxvOkdw)EwE!p|ldo%8k(W|c^cS1=7S~xN8#GV$qoh~6&KiIo=;%5R zERgAO;4g_v*#fhLh=ezT)+=T&+{dX*Xjb|>jT(w;p(KB7)2F;s8XP#sA2rN-@_0X(E z=BINY7>iD!{6F7pgnFkSH*@(Bt-N66FO`~4%i(D==B|Y{_a?$cEggepv|yLhGX4*i z(9Dtu4JBeoo*EFPOHFm5q5f02ea9;873r(R%A4CT)YvR7)#ke|lrwHL0kpaBN_T&s z_p6@_kiT>Ru$`>7zv!I?rx&E=iNQuM2IRW@rH=0lpvLh}d?~pvBV8 zkBGV#@m-wPBN%aY9N$y#rTVrz%hTEn(!YLU2_E5_)5oPi6{Dq$FSnItZ%D^9uh;n- zSLRP~RF1cli>HM=sar;}nDlk&dtbJ0{qVKq+iA9r+BrGr`xnxCMJ%L^ zRIf5dH1X#ExgYXl_9Bt<8v-;<+G2%5Stx-O(HkFY^_~pFB}ZJfx7lqmwU4$}Ug_iz zEABCGq+8?m6Fp6I+ku3I2NEnVxz>VrjV^293naC`LS66b5)L_;k{veFy@4@&=()shBi1c5)$jgEAoE=zjdLk9e|Iehj#yG$52X{M~}ZAQPtKNP$8+ z+`K~#2Jt|}p5lEcg;7Z=Vr*I?Dl{0EVVn+#p0t7Z=g2HeVtW05xgmqgiQ5bPD{`(* zO^L0lvy4ACFc5RlY!!^`P*+&46B>@hY2yd&*i}TSjLAgpzQB;L)lJ~&KMkx()UMTV z9h6u&$O~88jJq1r4>X7E0Mt#$((oYTuWFu@g4;&Xv1z&~S=!^grCB%_;sh+I5S&1Y zX{d9`fV?YJUYJEsSZpqR{79=p-$?#vI+dnGkV#hw-Q~y|no^M?l?(m2_)m6z+=G(9kM~&y1lgy~VD(C)7+tm(7(;nU(TOXAzsn_BG4lWGD$x|s* zY5V<-WYC}(+qSJP;s*&denvQR2`TlAKC9dt7QEiHI1bHsU7%LYjOUXIrJHAHXlC=x;PshNk8hM=j{S z5Nm$D7ub8K=Z-NC+*J>k#LBQ1dqoRWtG%#Xs3qh15L)JyMZ0>xrM&a^j3Y`0_UFkH zw6T-0bZ;T9&EI3>_dYPEN1Y#;e{KlZ(71MN0!@JhlIC6NVfO`!ZYe(r(7(S{<7c$u z98b*qqPCm`M^(1ExhAsg0-trxNC_FO`e@tI6VSEfN=qTz?AdrNX)SJKIjU_h!!`8y zN}HlWrTw*MHO+pFFgpFGAFnB=^Lr8o$11wwN+dLOq|6=#nqRqRIhb**Up}HC%FejC zhnkrt^u!@bhvzd-muSvOF9Vms)+a#0*Hhsvg_inPGZKHA3g61g6kTR;FkT+LFx=sd z(O2j)@Q{(>QY6EiHV+!h-obr6C+J}CEVz)aJ>7dm)g>@Z`I}9HZ0w}ArCQ26jKURN; z&}8@sYJ#CzpvW7BHgcV4wwo~>m<5D2!O$1+U%h+2)#_EB$*AW#>ejoZ*+kKj>pXw}R?v{r}$APXZvvx-O zC;<~;lyJh-dVzS1w`H-v3JLt_dcyZ>wvK>$1{EUp5Y8>FOK__BRgOSEh%)Bu4M0EC zu1(jGdkG1o;F01~hIU)t82z5G$u~@plsPeM$ys%Pc@ArA{BA_ zJQooUbx#}XnEuTHv zgVU2X|Ab5xtE+TLsrMGs4YGXE`U|qzW;EcTB*3kY0AL}~$=0ARbWN0!T)IIvm!Ycc z!*Gu2Ztm*HyiY3<3k4L#>bb$4XH>+$=4oN(S@{>~q^gxdFZm$nI7x!5?9`uTiWq@h zl()!&sfuZE)!k7aMw2P2mDwKXWG%0JDG5+^2S1ex{Y?S6F5sj@S*MFJT`TIK4KUl5 zpXYyFs7e=zhggf!5wOqvr*khQK@^9pf=?Ot?w-n47a)oXg?p`h^6W4EPAx_#nPnsz7BN3Lx~vmn}7MwI%6DaQ8}1#XJUldR@UJnN3w zd@OW*HN3*iveu%cfo?U!O^;^)wbgwL#aZ>xY?wXb+Q=c-K zZzLtcM{L^Z{d#y|xX5uD?=)2O&UZE6JfBcV<(^|f^aXOuIsD(4zt7go&G~BVsx&u< zwCVlXj$W$WO4rjKJQt9{L4sizTJY4l9<5mEjzg8(aI#Ai>f$Vt(o7e5#iG@Lu{Qmfm*8E&k2o-I4kk zMRtd%S@^OMr$(kdUw70nm$P!_8N!6vK4> z+-)x9B-s@uBDXqz2t+kVbhD7iJ+rI+#oO-c7E$~gX&hxdfrkEEV-vBMZ3qc}LS6&t~Iy1$)rTebq zRC!nU35-OwPv!FrXjYDI75;<%(g7I<(X&OjoF&f78vmAeNW%gjWOgnfi#!9w^_Pev zo^|%+qNve%K42yadWJCPP_`x3d*7W3wYXh%m+;Y!vUb1yr)t8)^K&<|hJDOK}SUY0>x*)Yw{Q+@DDtw#d7f_=XOGqm~eCN@iFu z5^ujPPn!Xv>3lT_UYi3viQIL#<7=J@!(Z94@)^(_S3YSAI+--_=hBZ3-^lsnV~K+* zqX5VaBOqKH(Gr;t06w&VT62I16&&A1oEm1e9Wl0b2?}oA;53(1`ZP;}+(~yhW^N`- zs+qN;nNyzU|2O)*BDQc`t!b;MP9gq6DiYAv^a1BHKqOlZp^JHN!<}5g2-r#Vf}(TG z^dFoR(IQaZ{8F@bTjoRzTA-}=jDjNR=Xnrda9{DddN1?V3_AFz0*P0{-KJ}MpK&0| z(#;?QX~POlBh%uOiQDitqdJw1^#UhNa$ZAU|DJ7x%1!Y%ZC!CG z`z7DRwk_Y{GRDdi`~~@o1hy;t<>yk_lHtUC#Gp9|_h&b*ADxGRH-vxX0}y7h5ZQTi zJ+;5wr6Q@u6bx`VzEI_>ng5je8y8S1D$7F9l3rf(QWNl)FzF2w$tZA9% ztI-h*cj1FjRjW^~Up3@VNP(1ta52$&=}w}yjcGXBGUw2ZG-&|5U-k$MP53ob%p$OP zi&ZKTxOei46|tZhopR*X$L%Khq`8<9L;h&zEk`X8Wwq3NnCsHdH>Sap`g86jMp;xP zfIl$-Y;ApoYcCTR#R9e>(C8&0R|$9V?ppKMA?2l$A|rf(6A=!!7b8m|HYoPPIyDl&m zU<_lB#XY`Jd6}$_=B9++xL+dxS4BmoE-s`^0G;2mRwjUxa_0(4&YIth5#6Ock0;27 zDqh$WNQl3V2%_4pe@kJJSvU0=Ox2xYt;(8U`>`nC7b!771!yZSznWkPA|zFEC6Tiz zx0A;ul1sJ%LTKV-J+jyiJ;6<_fLn>W7<6Y7?I(bJ z{Uf3`H;9IOG=Wf-j2?}5i`7iM@xRGtQ8CQ6M@)_yc!ZugJ^*wt&T^5PDd2udqo~L; zkr5WPm*KG{yMuOiUgTSvA(s?~4r3vcHyuTwbiVC>!5^8Od)Bmt@zaMPNoxcv$7yDB z1|f?4NvBwe9}-}X`e<5HWwUoPAeiAp0~?SGKa`;-U`*}XK}6bXzk}uT*OSMzFIHCF&3bCdeTY+I9=b*N_v@% zx&X2zv&?g&Rn&E^2niraaEXYV-sB(5_ql>*G- z>dLkJg9Dj3i`h($f&zbVU|_~c9yi95`W~8S1d5`9?j0Vb3%M7WuXJW~$yX13T#t>3 zU<__WZC|Z$WOO%*(1f9%%lc@}^bwgeReK>a+BPW>Jfo1w{6ud{jjwop;{a^*1pP%S zC3MkbI$1O(?Mq`ftQPJsT_18&PMF;ASMLR3ymTqUpTL|jDT>6O&4U830}|b&G$T#q z%oWX|ev+uYclX9E+nJ6wJWGxenJOF+OH$4Rs)XFaw-?vEW08F(Yis#N zoNRKsnjuonltvcB)W*{0=*bhHRMN=oyq58-&`5~$y)ha$ujxtD8oPN~b2k&-6Ecb8 zQ-hjBE4%LrAsTtK+br{>jI7&bpB-N9$*b{5dYWN2%Y@AtHe&tr@@vqA1%Ipe%$*kP z;hNV(&Vi!E-tB;XDh!l^iXC{O1{U~>&q?7we!K3+6b(#c;=s|@RaFwN&v(`3QN+YL zCQmUb;}|A%b#ZzS^c(z!Cc-I}D~nXiuXIPruLQyG@v)J0 zfe?hk@C}LUYw3q4`Mnz6P^KuM7nGQw$2?&r2MjKomYth1i>HWk5#7ogp4#;0d3~H6 zPekD~d7>Vjt+U+!3UPcKr8pCkL_SH#;@fY1TezN-UAU6ubz3`iHAkX=WTBU!fqu;{ z3;j(|w10zv@Lm^fjLkE z5OQ^QxgYY5zbaVdUZH-jA-g$#uu(Ij(D4g7zXuQFVEd&OuO4lS-*r!ge+-}vD;A5` zsJV50ig;|P(3dG~zt&mbKbL;;ochx?{fPB~dv50w%oML!xth3^I_dJSIpIcyJf*KR zgJZ1rZe)-Bh~+1FGHSrz1! zNhy#zH)@P>^tSXvt145k{H{qwoSb?FAnbSQZam8C{WcifR-QBnzgkqLC;641S4ZW% z?Bo1n0YHBy>FKJn7&epX0LCw+?w>5mz`z&Sirsh@&wTaLXa!PHr0Lja)zRtxm>Pn| z-?$fuw4OkNFJm-PPb^RXqVOXtQ>yFly{UtN6m{cQXl8^;Wa1_*G2g8{fal3IW7!pk zMTdFaoca{A{zH^uF_NpbcFjUJjnc^f?Hy?WK?^^Ik?2GqYg$=q!!R0u{4UUf^yH%> zBl81!S*q?M?9Z&X}wQX>kLwX$EFpf=z^%9J&Q+qars{ zQJ}z8IL)>0>$%S#bj8;J6=a?@NFE}KpIIQyEjwZ38ZaPN?VP^un#VeuDKjB15`l~} z$|Xq>Lhf>6n(*?B_@a_E%Vi62*oW~57sN#(+Wj2oRC?P{Ni{9y{LWP?{4#3=Dl@EY zDwnP~pE^5`E=)6uAWu*)wr1g1yBw(g*^41eq-#F+ZE(&XZ9+f^4*@|%AoM-7rCAr3 zjvlXYVg%p!cIYSF&y8W;w8aDA?jOLWD6=PUwrb2<*&(+g_|H^0{nUk=2u~@Gk2911 zDpfmLq#6+3zE0=|@JUmC**|ypA!J;9bhd6C)CKnLLi}#rk$Z$M`%46W4*Ae#gna3O zH}3xSaP&MEySfLX8T{o9pD%u)hv|P8P07zPmDBY@o%1L|W10Y>)CeR$Q22PW3?>xn zmV>MY$|us0E~TD~dD;$W__T6b53o^vsbotC7kwwAR2hzbI~3=ld*%oc#HvN%Xcf>J zu9U~`ZAVMtqdRHEYF|j3WkN*+5WCeTZ-|zPS3O074Zk4^dfhg@sgK2pvr;h{f z5~(9wtPR$_3C@^wzmLH3R7)6bo<@~@O{9*p7t&rPzuP}*X4AHAcM3vDLuk>5?yjXv z$Ln9ib8tHBwxVS?q^v~IpJF5Vx|%-k!k`c-=pVjfC-Vt3Tb zEb?U3t4aAdNoZ4GxZ-w$z2Jcy6wS^8v^ES(%GmiO_^xeF#^)%=_MHn0LvT(wG5agv!egjNuwt-if|_$$W?A5|dem{UOy?q&RfIBrL^=$E(6S#9wg9Y9Z9fHRjGxC*luME6|Vg_Z(O$ z+$Z6gqj+(BL@OR>ZILOHHJmG3tQ5uV;K4L;rsDkq)JVENuRfD@-w(iP5_e`|4KeXf;1moNbb!K3?2`IKr7>lRPbJkVfo#1D$yReC^KNqIf znN?0vc23Bp`~<`TAGNPN91atAUx@mWvdKwS2{57NfwMMr@t6wvh$P?uq|V(Usi$#d z!ffn6N0avlQ5rU%V~cfovp*1KY%~uHOjhMggNL)oG`(nQca(iD{xfe(#7ur5nWI;P zbZdjb*eIyuKW;OD+HT)$26GN3yv$8F@M&_tDD`}mj$fAOG&b%oLX2SjZ{3l<`re}W zUuVyy6}JrO$YAf+KCt)qoOtl?I_H$Tsn229`Ja~Um$E}Gnjy^^IR@^N6dH08pdhZ6 z8%OoQ=0UY@Rp(8K0X;4yM_=m5m%;PbjRWJ(Hu>!{L6YYEi;Y~N$xhb`QBLCBA4)fB zMi5Z75XZBI#l>NVP;%d?7gejvSD%McH8{S-$ha0q8w-CMkD&iMw4(2Kph_Wj;nYxA zvPudR&eJ3H0VO$;?9b82{c8UA$=92UixMj7_9->#jn0XVyqw;m4xk@xPusynvs$rL z+k1;K!-^u)-#E5FI}kT$*(bxYzYH$n-% zhS1e}L5(fl&)u7=YI7BuRnS#_Kd^URy}f;xg}&xZ?{OA(-m&RmpbFwobt{$Rsfjf+ z^6;(xXW((zG}&w3_oVb+Ft#KT3I1dveNj&`xoVZVmy2=kndo&EekVjJiiwZplkg{u zUrLfGgM73x?tSY0Qnzp^Al8j8`ieJ8B>?_s@}dqMf6(PJHXL7L7k&r-ZZ6fw63Nuw z>Vq>VRMlIS@iXj~*;XR-{B`G`?fg9KBBv-AbqqB)IwZ+nE-K+FuW3YspQJ~Qq-*dc zCqT8+J%hM?zw4k{IrsXCX~?!@2jPL@u}#9HwNU5=HPhz@Q7 zfQCB*CQdfKGxys~u@Lh)KlTCh zF6l)a6YC~pQZ2W?dz5uzul)fN+t5Tra&Z3=$YYE{Y5~bB{b1%77}H?oBPH{|F{4o% zNjm~;(CJrvD5S}l@&nx05O{GEaUo_}RWQvelP5mH(jUqVw zpZPD3FTeF&Xt)g4&ul==YGe0$A5+x@Z$$;GX*q5!91f_++1u_NY!3HkI-q751Kg9x zT1#RE`X0v@qU*C&Ev)|$Wxr=xBp}f-%w05m1yLBZvGhSd@)KydFnHV@P6%N4CfUjU z*ovNYsmPN1tU8D_*|9l6@#?|tK!gpK1`oSYA&pvuawZ98n8(GI$Er;CSGixRnREdo z-)}`rZeP$mJMxpSl78wNjueSn4H7y1LF{Kz#p#VrTSp_@Cctqn<1pDf`BtHbBu18q zTuv+#9SeN^Ms!cqcgFvTe1Q;{?P&B1)8}n&9CJHbkXkYLv{xI5&Dt59j<=Z4(LIVIVL-H>6Wr{2z7 zwoP|lAjKYh>i0=bbsQ1MvsR%n$g zjO>fZbG!e-=-|Vlp`EeeRlL+ERbUydWrO#p2F)WSu=uIvOYp}>L*ttgEF2Nm1;%o+*p|kY>6*_I6QD^bjgMBrA&C9{HxN#_4F9t#1?TPR@fR`m_Ke$25Twfk9c$| zIl4ABurIXq?8qXVktZ9^?FW*>lg@a-tiMUV(Y-M|#542!_`O$_FFQTH{Ae(|F%hd} zlO?`%o{g_egmwkTkBtwWA6bgO^W-@c9eyzCOz}BR4u2dgWQKX9AYlA)`QWJ_?l!XC z8L#If1vU$r%v5Y-cXZLQz|u>@13dT6kBsl*k(G`#auJ@24VG7y_|WL%V}pz%PtFsu zp?#6@bv(7QL7uBQC$u&aI6OXja;*QU(WR%ttiOvkr3NOmx6D>J;woI*5Vsmu-XmId&c*)7=UB@H$KJ2cKtV*RslpsFK z>(21l(a^FpoG$oj?lxGBs7-}ocmgyZavEnl08m~-Rlwm@NyUY`iD zI5Nt7(v3fEj|@H>T#Uc70^$_A6Jx7VG4@fc?>rUni;nFK^&KC-=XBui%YnO&hx_qI zyov9O6f=oZD!L*(v^P4y5=?cTy2nGq?DTkKHQm$T^>lERgZnIbEO^(2vBmFRzU)jW zurC~0%{(b2+2>T!qs)_|%5! zwEuWu*%Qkb_{aOU^mMjn=7Na?F(EV@y80!6JFfM9>W=18y^&Z#2LjO z?@tc5(&M>Yl=YGMyfHNVcz{v9=Mw90aQILpz+=-KCNV2`YE3M(m&FTz99_gfJRZ86 zVY)AxZzY|4CdS9L&Ghi5SRd|odVDeS`O$Fy?&Q!~Cs5p*4(Amc@lFahR>zLt|{1 zmpwhYm<9SkV$lX?a3U9EvsXx!ry{Yf;o#xm$m!7`Gme2J2jYDQ;E&X;CnGE4iLK%A zk@1lefxe4@d(QD>9$&^|kcVC_!;jk}*mmv+M;;kp{`6Si`OxCWBk$UsShhC3oN=r; zS$5PblJPCk(POSZo`~LkEV}ri$g<6e@kTVlA3MA*V`VbBJ3Pkzs^@-~^$~~N79PS2 z?ENr%e)hwR6c66Dv2py7b+fY{Uc5aqiW{;%vg4gdh98KH9SAKGf1GE9hS`{8UMk1tF{qwB|UMwZ1z zC&PEKA3hcy-j)bVrxPHQQyIo_P0IM=@enKcy-$oSI}r)&ipEy(2FQF0J6BU9X2(9d zVqaA6}6P?Fbov zJUhDl^61e2PuY9FOLA8CzUR5W7$atO=v>tmy1J?>bX9eASL(FWVaEy(Q;am*H*?=Pk+aw_o6i@<#!S=l;JvaOp_p@q?xw3uE4`-{Ntv%h< zZ@uqY>$}!>tvA#Iu6pyZb&Loevx*>^PrQrb-U(kNuX)mJopcl~xH>kLnVC=e#NX{O zywpo?a?Sr4ALba7V}W~H-#O2RAMo~GD>O{vJ7Xk2J@#+#_|EvqmEiGzi4UI$2M31* z(<^ukoZh~qdpuAcuv-Ksa^!p5?sbuQ;nn__k)mQ&*e#+w9{lNgw ze}~gO+3Ru*FG9m5<39N*d>A|)9S*N^CB&m>JpaRfo8WTU$P}kHc9L;$Xy}ojK46*8 zkl_y6_XhRjBlSos`6;o3%!nv(d?K)14B6DwC@R>|5<)2EXeEP`7e)yZL-%CpXP7G z29=ZBy!NS|=chLZ&Sj$j$P>KgiMwxXUL7iTxOFnSXAI>r$G+7IF6P-|6(7#V)5Yh z`R)1ow`aZoBk|vehc8Xi&m5TFypPbVjOWf#uLD#4?0E2M>AyPDUY@S}^>+B%2M?bZ zdy}kJYJWZt-pt%Lv;Lc@ z{>6R4vlk`DCI&|^Z4cb5&EW?<@2@7oOAF)g=NEi`(f-zU^vu#ZFg3@i>7?FOuKfu= z{(d_Ce_j2@N&9=t*5?j8_a7J>=IL-rO3mkDPycA@zE}=loSENUG{1Jh{=MzN$;EIn zv?)osllVHn|JzCU!p#23pvdv zd49k1pZ1MzDL9urqiVPGynEyRXQ%xaH;jMES6?oge>*e&L+g`P$O>S+V}|wDqlx-lvZgx9u#T;#72w_|DD!_9sW}SLYr2|3SS$uTI-PE}GBJoIl@Le0cx%B}ic8 zjHb?^Xzjky-Y;zT-^%q@a{IeQ^hZ0>=MHX>94&{-rE49HYmXPTKi;mtvZ4LgSbZt; z{$_jY>{gklPMP&*6a5-M<#v0u(l^A0s1$S(OaYG z598<`V)xrS{$~zqcWwq~8L~PLJMZ`Fzg^njEBycBT5qP_-%W=fyLfW(5hu&rNnu_H zi!(>RKlfhQxBC6O_C{hpzm6+7HLwFCPg0{e`2OH&`F&FwLusD5WesE-s%i)e|-e_4L3!QId z{ws6i&FS737sgjM$LBVKa@FLEiqWL(V6T4Nq*^VQLkewC0B}tIrnkcjnGNMtk1Mn%|%6 zpV>EjU+!!K7Du=3hX8oa?{0)RobMHDFVFXU`NF}+4#g+N{>;y|hsloXor>Kr76bbB zR=N7!dF!h){S*5#$Pf9WKb{;L^qvlSe>v^_G+%!`TYa^teQE#jsm;kH5iFvFM_ue# z&yB5bF3p$ltLe(Ow|c+3FM4>HY~@)o3}(aOiGlKoarc``{ioR~c>Km@?^B1%o0qe# zm=pNZi-&{T?DqdYQQlg#Y5(uD)xX;bKDlptVwMJzbQ*Zayuri9+F$4Di)H<-V&ywa z^UK?#Up}zBYPp;TQ5l!8*~h)w7Z;r$ZPs31G@dWpe{>{&>d5{}c91m7Mw{YJWJ8z8#KT6!c*^EDZc=En9$s+I)ZAGm+qdmW~(RgX0 z{nw!VR_^`XEdA)A+2PG7O|-1&UruIf^}n}jeF;@*{hBMyj*I3a8Yp2 zL3974nPDyd@G^Vjqhpt-2iATZcV3)@#K%Wx`R*haki0Dzd?pTd<0IF6d%pTx7cQ^f zxD>1vnR8)Szs3E<-zgL#?^~(%=A`@Q2mR+RimqD{7c4AcU$DI2-22V>FM#)-MZH(c z^lumYp4;9&x}?}c`P9A2Qh&)ZznTw!TDY&|^%rOF`m00v$2Km$k|*P&8h)uvS5IXM z+IeH*{`bK7PUil}{^Y5H$$_Fz3oP-yY_R^($-BQ=8vmSzKN`hvM8zNN+j(IBl*Bfg z4|ay#n_T_Z66g8M`$4Y%Xj1#;Vu0g)c)={BmQQ+k*PHt4?+%04X3_sSY`?Tn|KdpZ zS1xpK*cp(%&Aizq-Vhe_x#i@=GJ2(O-^lboJK+7wC8Mk7J@B}l4i63d`|bXpl#}l* z{J$Tqytz<;)vq56FPqxq(BN3bO9t)}mj8EU@}DQhYm>F_F5dGe7xte%I=m_kilEpD z#|K^a$;A8GM*NMr`u)w7=QrDbvot@x5nVd4$zFLV$fdUV@g(?iY5s7!_Qs;|QrY~{ z;pFkTWcRF~UIbKo><{PtZ!C;gX6>J(E8p7gfBxY3-Z>|SWK5ca$M=Wkr>DJdZyH2! zV(9am=BEzlH%z5E&CbQ61M?nN`Fx?hp4Z+g8b8YFf4SxT>Y@2@Cdi{?YZx5!`xKG> zmhR=XpHB9CXVd)R!Q`0(^JB9`8iqu9*z7Z2<0~`upQrVgv)VTcOy;C-g&XqzdrRp zb7+3=&WxHEyZ*Pr?(xye$BWvFv-N+NDF4qudnudz@%F(x=2U9JajGxJ&3l~p{GnHS zZQ1|vxbf0#@U_kIH+Pn|m-&Iv9FIB|g{yZAFZlfp>(#9HNi_w(*6 zdH5ImmLFNpFCW>%thb$8hu!usC*Jpy^sQ0+vvBa;rTa$*^pgiz=5v6>^RuXTW6=0m z+Wcl|{Fjjm9$%RDK65O&>97OO9B1}EFF0Y(em(bzdT`O7j=SGo#Kgyk3f3UW#5(cu z&dC3rN&Lce__K+&8y~^rvHUPqbc(Boyw!V>b@=e>$=i_p(!RkjT^zp`Dp>Jh@JN9L zKKyFY_{kVUjlQ(CIJ~4$ zu@_m-%2EnRmGQ7nAU{ z+(irDo45Y#!tO^d_O9F*EW-#*U2Y9e_Vh1I$1i8YmkaxqLi^%@!G|vnuE-R8&i>H3 z-11Hj27eA7mo9wr2L!=||IrQiNTDYagADMZLH`-Ydts6P=TLh+ZM?Wy``wG2M-RD| zPMk8B917!$`qqcD;OmRwx0c%Ti#=c8r~cW7_3R=#;`vz=IcY{&;}awA8}t4@7JFaG zRR;S+a2IcujUUchf4pITubzMKWoF~@sAuYGaU{`$Q6(#9Ho>2DXo zCyy*|-nY5s2b<&BK~KFgTKVKg>pRYKb*eri_-^Mk;cpmM{ zeKwUe9?jN%f3rq>{BI-k)hzz{*8VfIa#2!>>E~npnnCNML+fug2e0RAFBRH%rXh~~ ziA8>FEO^BKU+SqJ8wW3qv)7a8$MN8WE$?^tcOTvy=kX>rv02!?$*+B~RLR}`bEx9j zzd7&!`mxa!NBU*fndJ5ndvLE_e6H|b+TQ!UZ2k3-vCD^V$-)tH{TyQw4ekqrKaMl_ z@IQ?mbPXT=jUxs5DY@q^9`Bpf|9I0PIFg_8`%m|~A2{S)o~nEbXWsVa=OW`@<)`O% zHpovWLn%%&dHS1fA3prgFzT{J{Qcaa<$a5*4#X_4ur`v$#iMuqa#4S2*@F-NL)iZM zru*rG;eA`dR^iLajd*c`)BeLnw9|vSB=)ut8~i;5`^SzdN;GTz<&d-fgu9pg^!2j+(-gvN|LM;B+5KBbvos}sP3?o>>ch$EUu@Ywp6IV- z_V@DW5B5!;Ikb6E=#`UV8FY`utIrh8uPi!m73Tl#_g~4#sWHivTxbw zk4o?0(78eHL;IIJaXvAF<$y!ui+EX#$`Xb%%=QJyA}KbqYi_*y+7rj;8%tI}$k9q+ zc+~6P?8x$x%~41!zNfGs%l&i7@a)7onKW;mCtD*=JA>DScdtPp>wjZ&Q5wyj?Bk0@7{8B!`uaVV6}0_S4SyL}vceHmDNQ~l z@khtWlgZ$@NPBFo+_!06zZGm`E^F`0(Z-JNUlr&Nm%}GU&Jz>o?8LsK^sm{;*geNw zz%)z_xZ~@>=;873RMtD4u0NI-r;Fmfd6Ji5REF*>+>G6uLZlae#B-jE8LV^bMtsqd zmEmzT$|&eD6^?&+3JH$~rzU;wb!QP>UXGcN;^aA)Ro>ko{(rzhq^ z>EPyhx}T%);!%-JH+=7k*dyRRF;br#8)sAFfkk}7BBR>F!KKVAL5W$%@>t;@!zUBv z(cHdk7F{_@7df*Hvg?qg5!a6fkCyJ!6P@-SE8O=lCdXz|mXyP!m=l4r-aK~BP6ubl z`UghJDaJU+c>!E^`HMB4-L+^0XyEX5h zDYd7@#s`PSqiJ;ed`W4Vj3CFXN6uBqcH+{*bE*397%`?d&SqPzEs7$R08Zon#iQPX zvk*glI`N+vhxZi8bsObon9RmIWt1#N_LZ4+&&)iXTh9))Q<42hkzG5>DcM0Xc5p)hkBfL!_=zOO`D@b@H`H@=cKi9d0}YXovUXi_Or47R2-d6 z@>{3nq1l+ZjJR+Yk;Tm2ofGd|7I4k!vBr3BUCj26m~HWjf{myiRmw*uF~k2z+;%FZw)MBU)Z~~h)<{C zlcRuJJXj3hw>jBQ)A=xC#bFe)3hTZ+Ia~P8#NDS;`*iBRe=*+AGPs0dio};=zW-1e zKRxQ5Nwmjv_1;Br%_83B;W%+AJ9C5Kd(mSOoXYGonMMa5%-x%&<1GsKX*NtVGDPNl z(ZYvP{mF@TCN=I|MAuAHV8YS(WS~@luTO)Mr3coYOuFFi_E~(195=_tKDIrM4+Qp! z#NmBDJvlKRn|klxNRLiS7E23SM=>Gt_KEX>ne)WB`&5O;JEqyuJOht>ozmiEUhlz) zb20^wI{kbki{3XY4iwZGm^Pa&LZ8KQcV+gIg^s&8J2vl|#n&(AOCIyb3Z;xq$^&Nl zaO`KZ{*#&UaB4p=&#qri*-63n`EeO1Lm1-T(Wrg*R6AD~&jt$q|B-ZjC)SyXcmI5Jd^*}n-7s^Q{#%63^;me6J{?8i9rt_hOuu@W;8B^# zrV$oBUYFP>vmt3LcsVof-?bed+H~`b+GYe(I_T!_8%N;rTxvZL8^p)^XJhn8a0HM1 zW@_)Y#N++*c)WF^I9zVy)6z0tO!@~xrR6wQ?aF!Y3G4i^#0k#zR?go5`W>xxqhNQlDZ!r4e@&)7>4)HvSSO*Zt{3oY7u!y zg5Z{M1e(sI&;SMhc~?2T3_~9eF(zKjCfpN;Pox1}_wlTE|FVB#GdwtBTWFFF7h4g= z+`Frc&m=xoou}i$y}5s4JKf1bC=ExEZ+N3iSuQvcJf0i1kmRYflHce<|UzqUq6+ z2yQ%;bj}q11Jmr%DTn*#%p~G94lu(z@z4$==k&-vI}Yw#rWY;792!YgFpE9b-`FGcY%z{*8$+z^7wu$$dN>+%t8qobt$)O(sd1a5)$o zH%^Q*`QTS#8$6y){5!T&YE{JFqzD($@TfPsEdwLwdA@qzG`X1h--@jAn>8wTOakzD zp0B=tneX7Q0BjzXv2o$VytgDS*pOj`t3n5YLG1oOY+|VQm8190 zvT0Gu`M%7g51pF=>ygRe0~5MuJdzssOw$|6Ej%{y7oSrm=Cu>&Tmc^K4~6FGsRtjv zY!*y2l1Gjj+h8^OZ4;y7!~QNGzH^=)ov~+}GJ7;1dKY`aJNfWKg?IO2MvYz8FY% zY!;(23E+(*2s4b@ez@p9Jaz6Xf@||JA5j_|6ve(cx;+ZdW!{G;Diq?8!oGVmg~q&- z4@(5k9I)`zsJqLD4`wXI%PG%NZ(v^jw$y{iK0WE;b71ih?BWRl zJI?>f!UCH&ZI-Nk<;i2q$(XVdaQjz$_^NpZ9|o}Cg(@oxBp%A_52mK%HDmks`Q%ED ziyaADW>$y*edE}EeCnJ|yH6mc(!a0Fk4_73%3gm0{rECgt`d^6{>f55nG!pK+h^I4 zGM7z=NeLg`8TC$-_Q`4g$#L&Pfq8Nq-o04tOd=|BV;&Hc*q2An<8eenaVqQ3&ZA{^ zYcV?-7W1L3$)88g(ZqsRpy+cGP!rsnMNsYo!x8gNqzq&wmu1EsbNGqzbflevj!v_y zi}4hik;o6DAR57kpN(Be2z(gNPkss>Ck4wU&5JYZ{ux}+=0$uYcwMs<5jR0AIqb}zym#dN ztNio|=BvsQGE4}@=a8Sm#GXlQd;*@~o_X=!Vn0jN;w)g&hgpy7QtQbgsPfa^>D;@0 zF+5fVtkz?5D<>1PD)O$(+Rab#OL(W-X33!$(*#bOhx5o~Jv?|sdbEFb(s^j=-@YiT z_4Y%YULFUmLV0BJuk%w@M^ii9%}=ikjfbZpg!!ql`_$OErwp#$VqFj!ZaND_2c6{l zD1JB%PZ#|&xp?MNSq2}L3|dZJh_(Xf);Kj1e0*f;k)Q4-|0O>ijhTYHVl=!v3m(rIf(jlVDBK(8vT=r5zpRJ|A=|e(y z^)nNls^hh#ghiq!yd6`yZsMJqy2M8!EWji`#nNUe*`-jaZPwe5B|qiv#15GAt;_V- zY)0(f%}OosaYZ^qKK?|OyYEC6!RtfG5GweAq5a4-ylEMdyJ5+f+TC+~giSixgu(Bd6T$5%mOgdW*7sXKa zcXI}Im`rd)+I$ccLPX&hxD3u1;vgdyrIRY*geA4-rzEYSn1a`2ArlWmi#O2F`6hxRVS&Wv(B2r|^K)l?he3EmX zQ!;n+sW;7?S?uRQJPB~otksFg>Y2bVs0uD=fxS?8|6%E~Ux~s+5vQ@7by3K15$QZ8 zB`6Eof)Ypa>6pi+hy0TnmLYKismp4y97(WXY?h1YC%{W0z6|b%w{}Sj)&Wk z9`M6QD584tC60V8D6W?IOtvC&s8mjcOh`D27#9?Z3baT2JeH1%3!D-eh7&f(kxTGB zSSCqPF6&<>GgiFGG3a^D1(7_O2c}DjfC$ZRdBh$A2YOThS>M1uO^k{WQeJjacI9P^ z6lTrcP#gMVPLyN{GsCzToIja)+0@P1B+24#NNHbssNag)J zM9U!<8Rtv*@`wX-CqbFA$AhNC;G+@6QoKDsXq@5G2aFsOr3lN})Y981UW8-RB$R)` z3f+ua`JfzAiWU5(vIV#T7h48~pd;fv3C?Cn3M>a%v8D~UhCJpJyyKoog{cJNKPx=$A{x&Ff^fTBfCcl<5&e-e8GYdEIUjKWE$|0T zi8zZa9AhZbPx>PciboTO#fonMdSQ{HGWv-$@OP{v`}u4akBD9Bgk;tsr8p{^ zLQ}$-=x7&@(hZSFF;Mhj$Vg_%_#|FUlMOSTRU>A6GM3M!0DCXIQ58bW9@@O2m)(JZ2QM5TSS!gv3We zA&_8<^i!;&3M)jG^YM}CZ)Cz?DVbpy0l3dtLW!zIyfAy3;(gG{MrOHkLMkXh5g(7E zKo$6U{-9;Az?CH~R3^vIR1ju4$~dGpj+!bwiX{l{SbZ=1=!fIj!F^${#7FF$rJal( zFNfQa&GPK5VGlL_GlL3(F5G^O9`SN`49Zii4dX@xM?xo1rEwfCu1w0^yiEyfJfy>7 zndCgI!e;vgnL~9)qCc*08l};Yn6`+=#sz z5K}@hyZik5DmD=x{V|1E@VKmOi98XzA-)a=xc70w4In%OHNPMw$g%28oD2E*C?bBb z(4Qeo)Rhn@&Pu`@5<;?7h-3l)Zi8Awf>`yG5{!dEiE41F;;95vL`aenF-5#J|0?7H zS)Bk%upAFZ~Pobca+5-Xn1IEmwZ}F>@Ql^+D9C(AtL=ac{*opYFw7`AATf!WB7rG^QnFO#w zdp0B}(DEo-=J7WEcEHjvHZw}xotBZ{(H}4Uaz5bD${9rg5GU*2@d-IkP-5i|y@w`1 zo3R{-7@>#Qgd}7$9X^qBGG(O}4PtdH>W(Hh6c;hmc&B{JXD74^(y?~H0UevG&DD0DE<_EhKGDCRq&*L$a3xq}zDulsSctnq= zm|GC(@TTAqPs^L4u(;|rwnCS)2|@;d@L{g3VvUq*i9VPidqw~w4rlizED^>!@xej` zRCWQ7xJl(xK%M12BOT?_5rR!*1_J>gkctmujAZlhBL<6cAc6DJfXrYq=uwU(g$Uug z1n+*#5`rqRh3a6byogQ697YQg@j1cRLmlz~rX5Q_WC-KQuz>VMuyHvD)k|1(yY!d_ z8FP}5;E~|UW1fhL77G{%UT~sf6Nbiec_x6#fmuuio0ZHW;V4qJ>P;~Zs6Krou5mB$ zxD2Vhut83EBRvPFoL0(}&a?zg#0z$^uswX3!~-m!tW;P#k7O={R^gRMv@N6hM&Cno{ zlbDdrr89zem@WKF%mBzhrTE%A`7msOpa#p6oR`Qko>)Z=ly)BpE&56`NUv;R3rQ7V zebp%(Nr};tU%1RN%6;V^S)q6-!FM<)NB*p!k!Ug}8scyUr4!0ldZtA4gtn?V&q7^KNn~^R9Ri4kE$R7in6^>Im@+qO7;` zQ%O-PJ}kkv;=_O)OD1^j;$3u6DWc-Txh?2Mr&5H3T|;u97oe3W2Gyc*p#=zvBPsA4 zaWE4iBqtOhKir<5my#z|ej7PZWMk1ULW@U%Bguvnz;bS;_;LI@#?DS-<5mtB}kAzXIUEFX;=>c5{ z>#RZ~`7n@#Im|F2%pIv>Rw5I~AqjlON`H}?P>d?Virb{p0B=bmOd9?Vl0X%oB4lh; zZUvj2BrqbhDV&8S@q##AU;+`MAW&T(5tgtZ&kCb&TtuCM+z>X!p59bQCJGvjh;u|( z$?W9e?3lD3;OHRvS zl?^auMEsqUgzTvsk#I?Ed^F^N@n|%e?2IHWno7i%)Q^*;1FS^EZsff4t-{bH3A|6U2^W zaFxt~4^FH~CE{#jdi9ORue<)eQ+iZ<~}RZEhmryM_neIomDfzqWKkWpM>4K^mjW-Ip5_;9|UJY8_tczSI`xr zA|oXPRQ=((ZeohK0-_Zu21*szAqlQL#Er%)vFAgXKzO^{0pEt}aR3oJ)9K-06d-O{ z^8|sCDvAVU`Wccbm2CWz6j(_1goP_Ed8{I0wZwkM97d~uA!l0p+oj0lw( zkFbf+fke^jm`^cdI56&x5mwIx0d5p4$UO-YLSU%-apob%`&4BF+%?r65GR~duqNS8 zZb8z7vl4bH#*A|V7reMYQj0B(#r^Va zkp|=oe_vsr)L80Q*cEZSdSo81Ly{Wq1=SMnES>>7qy@x2OsLU?;xpL($#IA|EFzbx zBR%qQ6DUs{>?rq{bi){=&C0o958Q%Acr)O?66aqrx+*x5A3@!yhln9z*xZX`fr1l6 zK!}*Qbg4-upp~495}P;y)PXBwAOZp^f+QVLgvE+sNBCsPUeN`%G%P&2ErKRg<;3EI zoGzvf+!f25CSn;V8drcQ=m2JbE--0{m)rq$^B0p#2zXME6CrTwX{Z~>V{HJOrX}mD z@JOFQ-+4R&DDVgsm-or|xQ4^h;9%7e!3>j30)|7`gqHCFQt`s6lBScqU}$+I8PPs< z0Xa?|9SLbqB;CeCfDx7?`fOY;Mp944O-sL-cJ%m^-a}9*Ac$C?9`F}<7EzLgLln0} z(J7u^LL)i)7*|X&n0^k1lRjdfP<%y?3{spw4g$h2zJidE`qPq!vNG_A6m{V?tnKh7 zoP13=$jk-NmlgcYEd=ZEfQh_U={w*#d@gs^+0(Ra^DI{S|NU`#SR3PXl z_9SkO3_g_t2v>qERDfQ%Tb1{b;tC$&UlO7Co8TtgPYN|vmxLMOAH=koYQifvfFh)t0V=_Oq`YM7jGLgwSSWpxV`D{(5hqEW800RUq5mKP z9qqa)1jN@PiZy@{iirEg?_mb=KVg01@hJFA1|g@EK*>vSO45x~MkmgM2#93pM)l-* z2|M_Q$q;XYoP|d*oGK&32}`{Wg2yG27<;6-)C#I89y|y|z1eg;lYbHc5t3*ULm>Q# z@z5oDD}066B+u_)8i_M*BHSs`5I+z38wuX=6;h3jSxwgqaAU}GgM6ii7kx>YVpkV@X$3)v9;>p0#O~^PP%F`&8;Sds;mX(fNNy+I0}t~yH>f%T z9tRUPa-`J6Fj_<|Q$u(r=_OBXuWIHM{lLjGUqdA!C|P(T=f{e&q`*tClpI!opGDQo z0+S0q#);TrKIEqoAE!Z(QQ^cnR|VM0X+tB&B-)Gu8Z2fR`y=cmz)=!|s7Q$a7oIW& z4wQ{h5iSv_h}a~iVCj%0Nl(b##E2z=vkYA_1%`kXB~wh-kvY4{MG$#d@*`7R0@^i+6q_2LvLeW27haMP_z<@F*c(_;5a25F)d1h607COrV{V z*JRQMhd}7SE0&VeQIM3WSif-m41us`0i}t%+r=ZzB1s4{k`!aEWQai`ZHxzP!iVFr z=z`u>E)kk6N8TsU@X|wNfgJ6Hg3DmYgU?w&EM<1)9L0FW%|aSNcT9nf@;B9^85e_b zx`Ag9&x8LVLWyUP$qRA3WN`8$j8}?XM87J_t0JR(D!hW((UL#p@v>sY5J(bib~M7o zDu)T%SM4s+QBxEmsD9rp^~nNFcS*@pD<5`b9OB0V5@1w*(G`j{vX=`h`>S zrlHJfN|wOQBy5346dlioI1nrlM|UkB=wb*hairaC5y-71yg&hHY_AL z;ykaRSIU7`|B4Sw4Wr`2L^0d|a6-D`_Js~rzOhO}g#a*JOOF6x1xDmTtmGZ>vCOLF zP-xlAD|7Te$K(0@lu;mONp(qotNfH}xKeUPW=%%|~hDzTy zd#a;#dzzu?J)>_Ko@NE@{!noue(U`q@9@5<8=9qe2fER-`&wWcj$!e(*0WT*r@C5q z&{Z8(;cv62XgyW$nO4trjF69OUQ2g$u5~(2q{NOEX+})@HP>soPTT2e{hnp^=!vac zZf6j+>0Y4r?WU)#4%;=q(HyKRR>L$pJ(EsanqhT&j^=p06uaNC&8}lg_j-nI_4%k{ zdZwKi=ET(Eem6D^S2KGZM`?JCwo}*pt&ZKT_09IcRqdg!^}Vj;>dK&3?>g)C;ac5q z*Id2Rvn_RK>GE<-FVL-l*6C|CzOK4zdtkKffnf)IBkXqv1J!bL-8MR!)$9x!T3@HVH= z+eY8+_4<9ov^5POyWLJ-S54E@`hCT=c_Ay*;UIHO@eI{Ax_v|E>s_;FIF8o0EyuP^ zgKsfRTkCK^uVf0A^N5$%! zwqscq*So03RCG&`Rt?NWr$>Cf%hxT-HBH-4ETi2w6^3T(I%Ad_8}z*2bu44h>tczv zPX8IB*VP@PN0{X+L~SK_ZmZ82|7m9@m$sKsh)}UY^!Uvb$h*QujuZ2 zuaAC=fo{8MK*zg1A3JHes_J&S{dLo7RoyU9O&_r_#=eall)j~k2_YQxSl8_J&Y;$G z8!bms?LOV`mB`TTmeuX{b;B}{fZ4}p2b$>{M%33QmKqJZ(V*uU2IkSJ2Ti4q<-1&i znlSa&z))<(=(T%#%hp92rm3T4G^kjPV!8CQJrF!vx?yX5r;A*D)f%dUxHSmdcA!~| z*Fn67fnp7;3_SMC0Bk^$zk%6D-XcrO=wN9;($h8mHp~tqqN`jZSAykU*Rr^+(bX|9 zzvB!Wb^soAC+-;mcXV{yL5r5&v{j5`pbx=2suUp)bhY2^TFtHvh?=cIr{!v$fkppm zf1m}1ZPf>D-4pvURm)cVem4Y$rZv)fL$e>~rh{G4Tg^7wSWB-zQ0OU^+;4k&({Hy1 z4b@&Z1})tb9CiEM4#VhKx@F^1Fc4o0UBeLwSdFf;+8nI4f=0*fq9ZP#54LI#RQ!ns zR9n`1%dK^KO~#8ogz7Nt`hntNeto@TS#27@9`Iw*VZ%YT@-lH>28iGq*X-i&`dx+Nub+sK`aSU-jO{~bqBy2te@_mg_iV7Ja4gtt(0|!gPp85Kqr|%+; z3rs^p)F=i?3gj^@L$fs%pWxuw_^xTlr;fugxf1;WN%|&E37uFbR)mzgK**(s;%)dM zcgI@k3H`x!(|F4n&`)|hFjNm?)H*l~?!_Ik9&zuwg>XEbNI=iKn5b?jV(ms{Y>sF2 zUHWhIRZ!OJHTot-jYl*>#T$0qVaG>1cnrmAHQaS|&{WMjlJu}v6<6h9Cv>tsP(^Eg zUA0$G0sXYQ7MjKLn?0YAc5EGwtvD@=&FD2T5R?Ie>bBLvn=(wji;NCI*Gp>Omz?wi%o5SB_dDosMuXRwqbe(v4Ze~TQ&?_y5AKe zw6qqtLrO9(z+wzMq;Ba1P}S|CJ|O36v8|0vb=2#P^j<)KLg|1J{bH%eoG-g=3HrM_ z!u#O^@q~K6VHhnuN!KzvmFLH2T4LvYyr{(Po{F0AuF9Y-o)!fOc?j^p;0|vL%Fwm= zXM0t*+j!bu-*fbMp!iWI2-SYjB{Vb)yKXog)#?yVaHNca5a4#Lk#Nix3>61uAu=6LJ<1`I4;kqgX+;T53=fhgtUN+cJU;3s8tGyga*LnyVZhk30`Q1QgGWLD&?823CGF zB{b+Nbck@TI2w$qYr94-Y!cqCCOrmLt}FdD!)U;`=qK@%ZtRM&)9=Gei82fULPZC#V-@SRMrfh0=eClX zT^~^^17+P`X%1E(y^7swS@00oGGj~eJjDlb@Iax;P#~uX1p@fEQydg7x?)xaK)~Ki zr$bX6S8qC%+cb&z&>ho77`g(_(an}b1Mn^p7FR~}A;{^Nv15wZWE6O4Kqj$|_~>Fh zFc6_W-S#{Au<7(6w1|ZejL*T0>7+!!3Xi)i4!hdrHy{GE3gfN#Fe+wDJy!ye_!dhL z$9KUjf9&$%x8tw0|2E>dK=K-$yyI;-SAGw=uJO?>9~R#ZT(M;Fr8XghK{{x!r}DzU z&<_EKLE$Ly@idO#X6%m9;YAOTl?!9hB>zGJZP&&^8g|PZU=HGN0@d_1d`&Pg1B^k& z(pQLC!iUWkoP4NQVcW;q_LKl?hlUY1@wCcdz3nzZ9N%)Zq1zevm66$vdZb7YbKDyo z%)_HS`A^n2t^So#?uRV|0OSz;>E`6LyW=(oTaoJFsyG;FkvQiiFp;-CXxubzg;Y z(HD5Ek507^z)K7>i2ikVL5=0;Y}7q+ar~!ope3)1O3&-9B%Z3k6fWJxX z(}|u9Kn*BxL3MH#dmtuZn8Zr(7-${vxEmjlhWMy=@?AdMckq@lcG?HO(z4c;EcNI4>A+-clAmJju)cE6(WK}Xsnjpa?H)8Zdo)9&gWQ*D|J)#&JL#b|Zyj!E*N zDBYIcX_)O+uSF`S=uN(*D{2ptND2a-Q7uK&n_7F_Y~VKQ{bpTnwrCH(s~FNv)ldzy zX>^y4}(nEn`*D8(p=<&040>)Qz@A zc}q7`MOEruz1A>SSNp4SQ?tu0?54v2T54C*GyntzHKb*_p|n+n_dA+SF467kNU4%W zThZHXL~6)*6s66ZqyYpA{uVKkzqUI)txJd7hSKcOtGDIN zL7NO*6w%r3hNuIr$td&|Ezp!=pg3JsRcWUy9p(!it<~-}>5rsKs)};?RB3nklnzua zpcUzDWdqfB#TFEDG5*(58?-=AkQn61RFoc#v=uJUH2%UET5Y4riylG%rFE2{q9dI? zU^m`jV%yy=*20VawsoY**Huvva$s}{)+3-}sOyH>GEqNL>}ZuG^tcc+>k1ef z2wd;dh-g!3gE9;WBa=I$ZQxhEXqNv2NnOlNt?t~W!3wSh*NL|IKxqRLy4o?c-Imc8 z_mZ(N3MKU4rPUFy09J1_46$(9VK^pzZEKon6X3L3y=Jq&4rW`% zI<3*FKmhq`f_L8O7y_SN6ztxXag&P~9YHG=A!s$4TvJi|CNB zh6|*ai@^f}jH2D{*4pNp+=YSizUq(#(nw{Bs=&~w^J!CSigpbXNl;Z0c}T#*$)Lg( zoxzybt#+-~u3NZlhMvKTZQrKe2vC;Lon^|6}c~ct#njH4XPocblwwz zi%g|GF~KgaNgw#ZGjQv!M!jxb?MYaau88jdM21uWD<6vo!;dK@F%e|}G`viYYos-d zL8~i9O*865A~99Hi?eMZ1RcL1aZ?~Gv8vHDoA~FNRYPlyF1R)bow!6iu%=1)ZYW;^Qdwij+%8l6%*wH7hlxMVKq!mMc5P<06t&*&GC(nY zQ4e8L#Ly>Xr~dV4{=w7^R5=6F65MjJN1azbPIYwpQyk z*DX}jKrGU*TtyJJ;ZeKsSJNc^;*;xojX{Z}wff8oQ2Z6YErg`eHXBeXMomY#dtH$s z5EBJ)6g7!F1SV|NY_6GW^?sdV1=ov$R0i?ZqWdooW z5<+7VF%dXgW-QVfO#(S@av3kaj=^KJYyAe^hHk)69Of&i*5g_b4u*uf%_?T$jYS1g zs+UoV+r;_SVJ{84fmmvY8uCk&Loi%Q{57;D#0dMt#wung#LU8a8;qKEj3&vdlqgUG z7a+QtxzaJ$y4`gw4f4c5NH__vkZ_y>Z6IOpSg-Jitn3!j5oaVqXbT(UC2EDu5?KIC zMHqNz*9gVCf?o`tzj~;!iXgf~A7ZFjY!x-IXTFZ6Km;w&ny}?v$14pBbH?O^l0k`y z*SIY13s*stpjM(VrZ40~WJqMG0L7c~ky5!(@!JAeUJ^zH?*c{|;Q~<->f7ZcKmR%x z@Tow&^1zH)EUGJP7JBmzJmLezB)FOjWQ>)%X^p0FAxMLFD&9QWBxKJ>f-Mi(w*M(8_!jp$%R~-|AMYW;O7NG{O}al32Hxr9luP#(_#9 z#z?|s0OGHN7hx%oLz$@qZsa;|=cmvi(hb}%=0Ti2pPz~esgNk)y5y($VUW&$PMtYd zQ4@|^bSptinEATer2lyD%Bf0zO2<$cAMwKXLZd)mW%lBy1O;s}4<=b!gk{NSgbh~t zNR{Xzu1Y&%iWsCs2e_3cu}R!Z#l6KRz|SfHzwPuYJf4T!E>r~(Xn{0g*GEaj-3^i5 z^Wjy13uG!rDz|*wCrIWf-({%4c{hJSH4?TY6k&20Po*mfwa8pRWx$zXI8{s(dM}nh zl;MYFKpD}8_J!<-6ojnvf9^>Via>~!P)G7pQuTM{r#9B|^Zb-qQ*MWy?DC(EQ8U$s zg>Qr!|I7T8_=plKMv9N3BZ3aXgdhUfVbmy4NIG+#4-*>j6XFIWOpCo409G>YidQ!( zcPBm#z)F6^I8}XB>6X9n@6N9OyI;F>>xwMn`BUuEq)a4hCQAW#%K0tV zUVqcI?{TdkE=YfrQJ?t1-Qjm9r_IxCIFo(=}ss<&$E)E?GbwY}Y1t-ao9)H{u)Qg64K z3O-BR7S)svuB+Xu)zwy$YcA-lHmNx@xOiQu*A;&AcXOrPcu%AG3$6CMnjK!h$Q`Q- zntF|lL~XQ`cC$mTxJA3wsH@GDZhK8t);bFJ>ejkyt)tf3&1QX7S#Q=G+G@K|Utepl ztZRGL^mo@gzu0NKTdA#RYYlGRY;@`^8D6Wis00?X|>3ugGQ}I5d!e7wOVWK8aJ&s_q6JJTFv!lvsr7lYAqh+r1Ty3}auBodRXzLd!*qPcS&sf!nDkh?Bt*j{TZZ_78m3F(?TJ6;LsOx+6 z^)+=(dQOJYX|AfRJ(}_!wYf)W@=v`kGQU9IbAh%(o2zOAIS|LJbrr|ft~XZNwRh{a zcN=TGR=aBrF~t>nBC15h?asQQVP-Wfje<$5N!n5MQ!Zf0tF(b!+cNgLvf5Twl;#C` z{eu4b-tO8SwT@`9pLMJVfneumZ4bZ23|i|51H5zqO^d!z$N=+3r>^R2oo=1cppUip zbg{h}!U2zh8phXLRa$%7&3D&ozff=fVpCmN$6(rPV645qPAj#h;F08r9-hY|?eD%2 zHP+7i?Ydx=D={0b25cG4Izp|tS1_Sw`vM@}XwHgSi zU00NquCl6h0OJ40-kSwUmYw%~IXyGI)t397SzC9lxo=fn)jd4}%m5?^i6l6KnVw!| z00M?hT9)MSDw%$uWXY6li4l?vhZ&-5gCZF6o5Pl#>~MsiY)cW=ixrZ>3WdXZQCJL{ z1hGlt`1k+5b8lrYHRu|26WxuIaU(11-m`q?|E=e{=bnq2wDMI%yN-C3Rg=EfR!USa z)N_daa%(wXU96QBTlwYnm0Y_ZJ3!aSL#Zb5E29E+7?C50s}(A!4KY8GP28JrRkDo& zs)rzn7sbk2t_l-#mC|Cpu-Gmv(SB3aYsH*ot$>o4NHpoM1S6nan za;cRsR94Vgrq3E`y_RoOF(*hgyhd4a&Ba1xnFirgJ5LU%Nzr_jl6iCunMX3QW7I&| zrAl=op(;c&BJf10T%C<%xraQU(Ylm$DPLJAVEt-^T#-@Qm@t;LHU(TCX&>@ZeMBXR z&xk!ZlP@o$tyqI%X&G&zI+qG%VnG>%LPf@;P+iO-EdZ+mb$VCzG7~TcD2}UoH46bk zxQ@5RDm54jXBb_+ZuSIih0}#P@`*LWM8f-0EnBEw#vRlPh+hfBfB<7A!-ylmo<&>HrYea8iZ&&p3(ewEvxLHOMgn8*AYWaP=CpEfbD68sw@8OD##u3JfTh+elbRUI2~Y1gV{Neyvu(KH$3zqhhpfRPj4ad_5NTSFJ*Pp;vw1gjwS{Ia4=*r`#7M=G z3NRzWIl4Y#NTCWBfDto&Eayt(yVkJa=sPp7d^s!6TUjm?7VyRHe_>OuOg^0mLf&7# z8!vDE7obXIW)!6Dm{HWFRQUa>C`75T-UT#5(h9o?ex%OT(lYK~xw=eLCcRP|*N};) zsd^E&i}U4>HL&=BRFKNRO1LYr%X7##3D7b$)$>)HAMBt2DzidnuTa`uUMChJ!og!M zt}b&Df~6y9H!P~5LzqXjy|_w5R>^`8dW|EKk1mne$X_9Wl!dFHv6yWv<(s)Y@Ko~k zLIKOaf>EvHffaiTi=hx1Lp)YmELu>|g=ee~ImxRsYA^vA@Bt<02QfMYJ*r@M!4p*dH>Mcw<1#=V{8yJ& z$mz;-W2j*rVM8_BZ`5Ps%SX$ zV_;z-O(9?mTs{tvDXlPjIgN+W4pY)q?mB=rz6Pn61p_*?218xJ09th{yLN1J3Q!a0=kBbnAT!|`GR6K0@$UJ0G`d-7>7Ks%V za5Hnl*fWqu5ndDw(!;N#BFAekR*d{y%i4&;UbF%6_mlS2kAzX^=wLzqo4YK&pEc%fCe zc%`_|DqOA=6v-g-CK9bFF|A;qq z|7gzfGBZb?pQifg^HbF_cZ?*XBWOAYD$j2Qqkfq&RtVYi`DRh}vVw0#Ckm^@T&svA zE+VLf>cxEH644+`LGK#H;zq8<+6VZB3j{!nDvU<3m)cdrNX{Y88`&lyJy9_dNc#u| z|Dx>pUz*CcE2Ely|*P}a{FpsPCTozHRuRt4!G36=A z%v#J}BHWR9z(J-kGPZIdRY?s_}ht-{eNg zA;@&(rHs`@v_=+*DN_Xlp>UeqCFw<-sA8$4aWV)N4?_chWBrJHu*?V;_%N5$921^n zujb~b%e6}-!o6jw9{RXgS160$daGr!1WmZZB(tr(g1<9?lo}tDp13kj>&_1Cev6j@NhI~<96KNDdlP@sz zy96i;bugQ9?%bqoH;T;QkZj2>(T=i(1?Jtd*zlbh8ERE0A480U)m1Kt=ogRMP=kdc z*-++3l!tyfG^`+fBkRZsM6qgv+k?6df}U#+vT1Md4Fd5$+iX_9R7Og5eDz&hgiaC*V z3@Y(Lt4cTm4h*Kk5LKV^%e8Y2z1@@tg<;f$07!|mnps7_^DJxb{cu*{? zSwSDEc!sOMA#(RZaT>gV^E$)94_c-q4Kq_lE{C8<5Y{!{L4akem?*UbHM~U* zH%hC-FnL&8Z!FR#C{U<^L&D^V80lRqoU{SZvJ$jhW!9oZjS{@lXe3#d1S>)_U{(+h z$P^L7>CUBe6xEPEq7>+e_$htV90vc$nG)Gh8Ax)M*e|43@gHTR*D?s|9WF>bBx0~h zGZ>5p2lOZcv{?YfBn*`>I{+mcivmFu8GQs0B$#_mjGegv(m`F&WQqaDG_6Bs&91@) z$TssXWhX2lQ%7V%&H-50vaHc#Y@!X{hcENg93b7twIYHJr80WREsF<|S{W<}S^ zl#vf4v@5cdwq+A-0~1GN!U?0{032J(S-K6mB3LIGpxKo41vx@7Wv98qkfdX9t_*-V zCM(>JvI*A}a#BV6IA$NGz>z^G^Ih<(YA-suCdko7q~}|u!k;aT+=<-LUP4Lyq@X1{1Mj4Ci2|&Ab?-46A4?qBzt1nHpZr< zJ4l~&r@D@)BH!qENozo{jTlA@pa^8F%x6$M4Y9)QVC*WlmzX|ip2jV7w31>tbVh>T zC%}LrR+orlx&efo5NVT_ku_!B0n;=sQZ#`4AfNOgKPVNEs^V72{gMM#S|3v=mxF4c zbtMWK1IU#rN5>6olGN<4LWIQT0PKglao4P$w8qARP6<47 zQgEwSuvCVziP0()hXv?VoeW|XHI$GrF4Ve0A^=OonmO5TK;WcA5gSkfKAAGJ0~iw) z7!Wgyl~9fyhH^Kp2q6|j;eg^0p8`uNXp(sl$Ow}N}6cILb2jq!YL5o_%Gek8lB#{6>lPNkyqv^T2nOjFk=mLl?I>eifdo>a(V*J&Wbv>< z4@FIc+)5F%*nvFEeerNb*+01_#eSk#Gd^zp)bhHCTUxFbmYUd;dXe+8hb)lbZxKDU zoQ7_M68g)YBf;<&w+=qyCkCJ-c5ia$rBq--BsW3C3x-*y;?1k2HNsk!1X35dl4vO) zL|Dbxc4Zy$SVEhKE;NfQV1guF#6`vGI=6Jn+<$$0*++edU1WU>R?SoC#a=NbJeLUT1-xm zBPvQ6plDcW zC^DmonS?1!7GSEpgK{Q}NHU3SvD?Q5O@rN5;dNTamIxT!6EN7f|$! zmb1Wwm<`qgAm6O|Q0H)%93zu@f)V&$EU^BE#?$#Jis1S#O}7Jw!WmpJ#!7>)MiN=8fg<^J3B8jn}6x^@0G?8#45=2%J8^9n2Llmp|X0y;{_Q%W-^^x_X zF7a?>14cj?(|P8n+#n#ahW`a3U{M%GxQH;I;BZ*uX3)w8;0sW2H-n5te!v4asKvIh z=CsKAC&efTB0V5un-mO%eX2c(b81k8n*8xrNZcZ7LBYlIu3KyH>>*xXdYmYak~*X$|{su@^C zqN}826N0B6O=XaIfHH;Up#nKjy5^+Vs>A#vO3ID9YK!Df8V}3=YK~&@Fusqe8G(WB zz{_4!m-dkvI+~A%p;O|EEhNN~b(IY_>nBs=ASkLtTqs1uK@JvU)>zfu%(?lgmKYDlK!YT`03#KX#*Fi+=xK@+ZU*XqKJLgo+iGWIQd8Owq8U}QIP_WR;h6x!ug zZ}jTCIh%a--FI$(@TKXe-dLZFwvNVEW^C}f&s&2(e}jz}C)y3P&%=Zp_3~B1a_@+H z+eif+qW-$KC=SR-a`0P`n?-t*p`;YhR1cp;0px`<2!S8`=8Wn}{-mUwX9+F3;7u)a zM?$wnR97)S+9{``Lz1afJolg#;QGI-c^;f?Z>+4Z=GNP}P4IziwXd7|_%l}Vklp6| zn$K%!Nm|K0?j|?1ax{gqU<8@?uvB0pyT-R=oR|cucRNHaCpA~it*>YKZsPMY>kwN z&VDm0+YIeJs+pgz#>V>N)JLBE12xo zHnN4DauCe|3sjOIb z$TDVi4F~mT^q9G@mQ%twZ%9hC#AU@H(nn4j4hBV4w#7y&xdkysYf>RLp+`0fRVRj_ z1+K!}#b*8dYICtk`d7@|U21MEiwp3Ard+y!i;f_McGk0N;-J}Ex{$!g`l&EF4*0rT zr|gj8RdZNvH_nnAU>M)`R;>mTN*83u|aJnEUN-C`To+ zz|wKqd>t4E4NYcH@=QtM+YQo7Ojwv3k>6m7%{;)A#jKpHqRAvRR4g%Tfy)epak+Ek zo8O!f-xL4HnKSuc+J{HZTz*@F!Kyf${EYP*q*3UZ0D%8IJ_Zp}KdCk(X-1G=helaB zvZ*pqut4|(W0<{)Z8Uzt6b3F&O-VCuvdne}Kyzvj+Fq{WVg102plHe$HD$wr4&r6` zjn@dC))i=tuFM^=7C#_fSTQY?U`Q%x5E#8AlEBbxAflYYtccy~v4iv>TfFjG3L+)8 zX640BH+awAaJIU;TV3PHWJUXM^AWDiGBCQ79JI+nNwLp3C>2PLQ}i(uu&ZfP$&VBF ztzvU6cmc_a*|fyM$W{k3tgvfz%3m=t(NlZ`@TLwFNWm6cjUn}T48(AnL@&fJL^9&O zDXGb`I^qYd!Ae&O`hwB2(pW_v|CRF+4&cv$^Q8r}N&L-Wx=CedZ6OMXdB+9l9zE#^ zMN=l0G9Y#+kkfiagqbROu%>|Ly}Fv++*sMfKA`XP%T@TR`>L8CL7QxmA4aFxgj+$V zmKwJ9Rri9h;bz{AgO2bM*GJ^m8E3o*ULL=h96|~DrGUmVlpVi=DF9()8-uBkIMHZM zqF9Uz=rAUxWnt7HKs%rTCLjYohVv$f+0e9LKuCh80V{)Pu8K1t?~Yi!uv_g^F?)E` zg6DPg(ey~Y^MQDA87<2zUZN>$GuUuM%MO`w#Dij6%Q)gTwt{A{{K%E!3JW1juO;U= zP^=dC`@rc4a=`)T&Pgq@mTy%Hj+Get81ZnTN@j0UWlYd^%ul}40&}|dh^t;Kl#v!l zI8BO7AKjZvM>rCjpfU`Ek)jJQl=1Q}(TkgR=|U3Afx|L+FrK)zSq6*-D-Z)WZ~y_g zjH)t^ApQYiI>i7w?39#-$}$L55CbmvL@*l5hmQE#GkD015+}R4LJ%v9ZFZe-PT?+v z6Lsd2$L)$d@p^bq3b+7VU0yd~Q#_2Q&>FN!q~)wN`=TVZ%<+k#kY`3)=`s+2x0)JQ zm|<}O_x|Yj4Dm4FpUFSUIGjn}75^wPYN{tq1lUAd&0Sis&A1pN0U@IxZ)rh=e7%`R zT%^w&nJ)-%vsWR0fEWzgZp+%~e^o6FRvt|66t z3BRKq{E_T1;?0rBr;Wl45$fQ&Mj5X9VKRK5@AESHPPKJTAFVFcQ@`w5z;}9P{)cpj z!%3nHG}s{)rw8Y)fU7h5rGNx3Sev5raptECga(1#QWlz@A|xo|<#vgD5$fRcQ&{YJ z4H=+^vM6*RFLzozj60CoG|uKV6;eD*8l-TQSrT)l^_6W!Xv!*UwgnT(elu%pl@_YG zrOig0Ey&s6-CiikOP;UsnhN%|J{<6x(cT+}<1gQO`_|j<@jM!DQQ@{4FEyC;_h0Yq z^FBDeQfkzlcGua5t6tu&l;kFa2>_X<%lheAFnIw#_-$y1U`#OD$~_k<{-vtslD169 zzGaJ4OgVSl0pds7C$p-weI%9x(1H+}`!F)N`(Tf#sM%oIOoJ4_SYa{3I@KZ~vwNbJ zrd-lQ69ue{jZC)Dg#^{3DK3Gk9U3@oQqhG6t{EWaHFc4PgKRA{%X5?&(7~+}tOvYy zWMH?sc;%^BEh(!=(^aBeDWDPzb9HrljtO#Ix8Ug)?Y4MB-5FK)^^$ZXI_$7P`OrkR zf1FfRPsha%yXJ0A-}di(^-#dZ&ecFbN`sq311EHoG)_Jw9GpoAb2lMKjr;y>GGOTu zngAk(lVn$Xk|G*VgoL?ajKF2gH7Ha?X!}8Tuo5s#sFcTm7%`=;r3-S$W*lUK+=|*{ z7AAU|kY@yIyjDPg9A{{O9%&ODcRL)!z%1lEdN#Mh_^N&61TI6EjmyPJ2pe8%->nS; z4E|JlA-PQf^dB0m@s5g&jt?Xy<4tC!rYz=4f<&{2LkzcOi-#!|vKdl9g*v)np(q8o_%idN5L!0GX*PB^*;0AScL6>J6$qki0wtEw zny)?Po}SXnbMhl(z?k(#+)LoDU`3<0ii+qUAQ`n-Nn~X=TLUrx%T*U?u|gk_ir^ul zP8g@=B}&{k0T5R9Nv^7{3x)~RDOc~W?se&szN|;}ZtaK;S9Zwbm+PY>Ffq2m)zTe| z5moZ&l(9R7fsb0-B^{w7x?o&XM-6prR5v{osq$2p{3G`@l|R=lh9LiTzsYKu;8~;r z@8F<7GriV$O+n}m!G=_YUdjY2wz0gii06}x3z};LT0tcRw`(F=7L?H}zl4N#q}P;@ zxAGJyWvn&3abS$ozt#vm)l?UHppB0Zlc|@mS(HfF=7GAqu%J`aM!Gbd)ar^yT1IQf zgZ|M5BJK#8L?1uK|3ZneDM7#mVD1~}Xw$73;EUb5tsv)^+IcaqCezA6zi`|O0He6C z43fmg`jWNestQ=tXOjh)9gvabw0x1^wf3oQW6@Qk#P}%x>n2f@P=-!j0_h7OOiMZ% z;p#~lQ7hRns_ch20>Xaqo0Bw!K8koPVBoRIGOw-VmD9XEGkN6@FKyIoe0a}FYyV1p zt0Zgs{i<2~)6yNiQ(PBw1#G zk8xH6^Dp8p^97?f1Q%{!{i?Y5w^43h%bWE$Zr+GnkWVcO`#V(14?`9y(f zrc&{ViqQ*W(ZCWi_+kI?SFwueHQgy5PC{bzQOR5RK~r02uD(UBx=VCTTFKCK*KaN! zb{8zWjcx{$rB02@qKBpoPrf9&rhxL-cBmF7t$<3REFm87$i&<|LrV`IqYo4E{6kH_ z{uus|F3zOy9^Ql?$ zBIW+9fR{0kW@T&!YV%Xtqy;)+$P_k-O`;c5dE)|C(im00-G}nSEVI}O@)pR+HP9du z!Slkzy+rJMT>Ok>y2@}A@K`h`*;cYwcV`kgOv{|;V@jbBNt1F1hEGblOBdhas*p*B z=7!Ej7sSJ_`nO0t(bf}vOxl;GSifG^$A&J|f3bTRp$26}psMTI_6GJ(!X7;a%|T zXZ>1ltku#c z-Lc~X_(C|$2((7m%p-kaoVA32ACd}UiAr0psy&{ zbfNrDMT3PTI$dsMdDNE&e%WJzx+YN;HHlM9F2G??Q)an8?Zd!Ho`>a;J{o~kryqgj zAxC!6!K84f4;heDAm<>d@v;(wgTfLv(4ZIB0-wLw*h4-IoF!CYN-lyEaAfdl7AZ2V zav^_20WXshKy^Jp#Eu6-I5YwQP6GsJ2=^C&zYGBiwVEs8QR;CBjTj?kfD1?k;Og?F zwPhZcrZp(1fFG1`1jL$_5TJlrT@6I|7(^-Gl`6EIJ*enc=|YUNMJ%w@l-KmjmU%=n+3deJ#TgNt9Q^h&f?8TEQ9+y}cXsgGjSq6@29|#jc%nhb(37yX z6dzO>*HU{K5d7dbm`G;Ayj$!(O&@(3#uL%Ud3`5eZL0_#t?vxn_0fb=D!}24PJ}He zqyJ0Gq`-+8fQYf9n|1{Cw5cmO>M(6YG9<&=P6z+1poln%B?la^QYxScyRIh4!!GHI z{x!ReRESv?P@%kTx53b^B0oBqk048M)A*=MXf#^MBi%e4jbJbwu0j9=Cyl$xOBs<> zc8q}@917YbdqON+kuF?bl~6$>q|!KbEfzY_Xoz>y;ZjEdT5!v$A=~0Bzxf`<_>e{? z0&fUBbd|dE)nyIr02B4d!Y#L@9^P1J2RpzAY8_taM-&;0@}}hi29rkIf|;R%-GWF1 zv0bxd*cJ183$g}0_N6DANT=C6R0h@*2a%>tn+!S^B-^wOkIdAI-L6(BoimhX#qRoL z+7v#7OnUrRcU@UzLK@08w-NHdLP^?}nk&kZ0`eQ;btp&+_x|jDU$`+L@gQR_d6TJ> zGS11fLv2jaReG_52g^mU!W(X;STKp_LS?uGj2AjZA{y+g@HZEBtlmE~H&KD0$U#N!f=SDGTKsFSwVdYBFzJ!C?m53IsfG9*f zGyvcu!`5PtDQ#wgg{J_fgSxIP8d{iyO3wMs846%OwZB9iO~Lt=$Q7ffM8C)zNcL}76{k~b3z^N&Kw4s3|l5@253Ihrzx zHB_`wo11$G7DvXxk+evtFnz){F^MON4>%lYmfPYJjB4r9sx|`zYTBU%KaAtjQ&dTZ zb&Zf9OCHV2rE2Rr1zkF?ypX~zTdg6HLrSr(e4FG81m@X)07`tAbmXcbD{(R%2TCCMDLX5grC;QzR*rqND-)s=_! z77~4we}ouFfYjHP$X-<;3(8!IQN&1E_EUZX)yiKwuP~XoeyiYetVuxc2g* z3y`5r5J%dzXN65*K~EU~g~W0M-iwR9xWz3zML~6~NK^odWnNw_UFI&RM8fVyQA-jl zTP*>w1c(I5ECWwYY2QTzk^<6e;?=6+J!O!}C*dx>n;{@|h#B|$pb(b1IzZAR^^vPy zzzHy#P2C<5uLcU|#76BuzCH%<=kj%F?~L6Yw78Q*yqF6H;_5(w1gKyQ?vG|=Pq0X5 znxFbW3}G1@+Mho-BV>G%VkQ*A;IADa9=2c@S54TgpxU($KsbcFYbYuvkZDcAMkBD# zG8H~s6qmV*ydj>vCW3cFU`xvv7Q5}u$#B0j+3p?8_Q$Vx#>c!db~u>L21i{UOM89% zg)hDR!L8djt{w3@kYTqo9duvsZvW)g+Ra{PFrLiDooQDu@8$KGCJ39 zAaX9xK`ny`P|`u0gU~o-C{GzXJcX#(ehHvuT_nv#cXaDPG|LCr&UTbyj>e^S|eb1cH9U21Zc=wdJ zjT5;PwkVwC0+>@5ec(UgnrV;vGS|D7Tj;>45+i7{>fFl7wC}N0sUe>Ae$4v%C1wu^ z4S!r=F(s=$TX@{Ak?1`mCmVhB2`suS>bCiv>_!B2G``ZH<UvPk(Zv~^hI2O(;fadD5VujLVqG`-&uHYJp~ET3VztDBI>_ut8X&bUECS5M+%>>|XV6$q1S>$|EM7N!L&!J>>eZ=m}k z_E&rkPPvY{?;&CvrO4h)_PQD1GzwNcoNdGo@S#3*(h>jQG*O6=#fW5zLBVcYp(nUK6lxG7ONZ$RO(K_*eN9OcUdHXc zWz${GK1fgJyA|GSW2nQQ0jbfN{zA?F=9&I3#D!I;ZbwTRpJd!@48fR1Ecb{}5{5|Q z{UqEW!pOA>hme&&{~&GAW6GiVQs9#J0W~5hfO1P5#ZcP6z$m5$xqcQJuxYY$30*(XEPycVc*?o?xXuiOr7mVNEr1u*?>#wcSOLK!p2!e; zOXabc6aL5g4FR&Yq$~zvb9uR(nhIS|P83l~_@?BS{Rlyv8N)Gn(TPgTja>^WK!#G_Nu>FzWi-#c(6kye-7sZN%S>FLMfb@3-I9M$PVxiaVd(Er?vlKqyi`%9`0I&h++{fesomazW%tO()W<$lj7g~IEX;K-w}P}<*~BkDu#r?7~dsuN@EkAx}Ery z17lJ-*_O#K-|cZLLK02nClwDcOogyvNYXP7@_QbujtAYK^^*Do2tIB@pl{b z-wwpH3Oe?GCYH@Y9)5mnUDOizEf9GGcU&MqgCJ0x3GK9sr6Ul0b*o@m-^6=(n#jI| zSNAgM66F6&CgEk$n={j+zhiTBkU-Rb|K;A%P>6qLwyw}9{Z?8Gv{(9atxC4oIB9}O_5uF)j0lY^Rpx$kC8zdr|*YgtUA`hLJFP2X($f|vBDAj zViRLlkD$8U zRc1QanPbN7^hv}8_Nnyldq|eM!lVu?NLdIiPtEThDd;6;YyXBo_Z z4w^XicZAirIj(tnFG2M;J<&GZUmMF9_43UH6>=BQb*TZ7ammDuVYJQ#QOknuiCCl$ z{BD+dzYSL1Zr~iTOwi%Vo)A4HVPkfqs3>9!RVCd<*{mGVX^ylatrGcGog{cTSiYjB zsmNX=Dxb~OxyH3M4)Bso`S`Iqsx` z?;}Zt{v?_8DquGfbh<)Y)fgNy363UA?E#254J$YFQ1G_=`uXY#N;Y7Ob5TB|V}aI$ zYQ%&YqKx*qP ze%iyuxM{QdY6a+m=5D$w$Wgqvr^q@+`V%&hQYkq!JKiO%CneXqn>gEOc;cV zGp2pq1w@7M#>Y^N<8mxWqC_jNd5=3%%45k{rkvIiV71qxqm!o=`vkZKUq%nt6fA>BQGL zD#J*a&sH)ze>}#cDpm=!!P-G^0HyPb*HE%3+Mp_%gdCdue8&pA`{sr1^(^KS5h#Ul zDnT^UNz*G1&L@(02mdl>6I&%!v+5i0wqgtE}5sbzmxH*p;L9l ze1gsv)#RTP9&u5)hvpg(R%g6;stB_B!q-RdSj|hA1zYFClPZP(IQGR8i643?IKEpT)4G^QK_D} z5|SN>Lb`sXiCTU{dk7+D8UHAT1y`fUoksDFm{GnAZRMYG? zh7)DbrrYnLmWSZ0%+juvl3SC-m*lqKqk6y+hJtwax|G4ZgZHNJ-pII*g$vZbiBLXs zZ$!9AJz@YiG}=;mMksZ#lSZP&3QF-}=)qVoclnC3(MUzNYxv~wO&z45A_{eEJeP0M zoG2bPayA#N9vpx_OP{fIC3wUKSJ<>Imj$TtQa00nO%u?UJ=6w$D(=Bmn4QKK?@#?* zu1G9m!~=(ei6naS(aY_$0-^Ty2(uB`@4`Vk&;a*%chrdKBXuh(KK7a5kqBWg7BNQx z%cN*3#{!5kq`H8Llqb9l6n{fpByEEes3do}!6Kz=UW4O|zm(}nGjMz;_MD3G$my+O zrZMkWNySC>gIstU#u$s~q&=?7p({9%gO74KpO8hKpD@-^8riGv0tGI^2&}XzH3c6b zR{0TDgr=G!u8IGXW129uDQF36re3SR>1eujEGRCN4NI=SbTgZl+%uqrt>6iMzoZnI z^$GR`*hr7>s$c7H2}22cA{`jq7R&xPbP^R++K!*0&_bDeUocMW%PKkXQB{5 z)k-l#kybLz-TXel;-$z*xnlIVhuoNf*fG@8eQ<&|BAMq-ZiGKqcokr!i>P&eg*x~a zeIlEhi&5qa+ZbEtO%0pT!@aT4qrLSjNWNKY^%VHH-3_a+gGs*)iGHar`O2Odu-WUi z-t`0l6*89S8n_FS`U5H;b{$h)mrEvIyhr1aIo)IZ{lv>9Z|F>U*O8A6?RKj6F!|4T z=Q2X!Id%7noG*A9N0fxqlnO{vzEzeNqtOD4f9h`aWKI?F=UnRzkMU=wD_#M2{%paQ zjLzuRwff1c7SmXA$L>=UN6*p)WT0g?N&@$SPRkcXd}vefm)!kI>n2R71RjgucyRRE zC?w@h!r(~^2dI9DB?WY8Nw22Ka5^Wmx)Q3pD!SYb zr}~G5SXlUVR`r8S)UsWwLPc%`8P3*3lXMe5A7)Em^K-stOtk5~l4Bvw7dZ3Np4 zy64UUG_m%d`f*Q?PY>RxCgaMTn97VPAB% zt~a$;)lCL3-V)Ft?}06DsHttGU#m*~stja1RVI0zf^!T#vv0*^aPb@un$A`u=>(@& z$e%xsUjDM~eDsG6l*DYDr0(kQN~c{I`lE?#%NWLeHCl=CSoWK?P;B7MLJziH@S&)T zKPeACa)(SU%{sPn=`5g)7-gcKEQDHA^}UiB&!S>YD9qIlCakY$J_#-fi7<6=qC8yj z)XrNR8MyCW-thFJ0*b*HV4Njtq@WVg^Qe~YJ2xJI5 zi&a~nAW42Gls70vz72=X+mcWI?K>~#xEL7eTyV-C;G@42wvOMt4P(Hf#LtPT7txZ#i zPd%|N4$c|R!wa?3G%n>wqv#k*t4v|xLRkx)-Wr=%s1tS3+}b0 zCEMo3E;(8rc*&70&a#OMhZBec0*k~&a`|?_h{;LqyPhGEqUsnWrooR3G=?(H>LW*s z>Aorh`~oC_YO73imN=bqL>X{Bmg=yCw(9spdNwK?Lz2Xwxzyhxc&>&|W@}S1^qD84 zy?SpalM2w`$wlwC5^g@%C!t^g#e<`HFHg?c<8XHI1WdS-BSn9#^*wEos0-|vrd>`1 z3b|WS$GuoCG!i1?LG#&>lDX~3A&`P6)~pyB4Nwcy95}J z%VHuy2}^;hq4&F?MD8Z(Rxt;6!!Os-K`z<;91c=ItAL|yZ@BCy z0zmgsk4sF!#fLFp0ywECL{nB_iM^N1pffEC9Xi4e6-i&^bz-VHTn`igS?MB_G+V~#e+#l5!S@mjymiZ|2CR-WF&iw-1*br+&uCQ!TyW!Z#S-&~_>xF}hVP`43V9K*Rhh~%q`&3SbtCVqBu07POkO1Q44J{i?(?S5wz1KF zrE>m!vKrE*Q?o~dmhC=?vQO)GUsZ_;djIX@-L4Oi)ljIxB>Y<9q*gyqSQpbFrbw6m zNICV%v?LU5;!Dtp`UM6CZn}hf(t*cRXtc@&?rv%ccJM_b1^}K^32rb>W=~` zBe~&S-94HX!}?6;oq|0%(E+Dqp;xk+MCW+G`+j78Bf@h2QRqD&t|@zhLR1Q!h+gFdS5U{ zsU9^QyFuEbR8xec_#02T$;OUuOM{}(T>j< z2~WyGehk{554tOKzzVz`G{o!9+x! zbS^>epPGjqi&KvCdw{W*U#V~8yIngDrUP~%-_F_H)63x}ArWP7 zjG&1e_qQjWqs(R{FU-r@nH49L(K|5>$&{$GSb7-uxsEx>ejq(`vlph9Hk7o`1?LZB+GP^7c%?AI+LHT}6MGdD>K6!+ve#QEVBES0sez2mpe z>4!S%XiD2fz!@bAo)|=QHY6AkJ0f#h4Zyb`bm#95f2aitESoh#IAV(7#6*;2EFu&n za6({L6=;f{E;7G;P@Y3aXE z0b|(4q>FyAQ2x$2FrOeOf6r8!WtV-q$~`8*SRxRe(n3kC)B8Q(;kLG?m1_LnaTcVG z%1Ow>!9+YM!TH@*u#ocUBW#@x#V7_pp>~1lRc@2sEPkkM3+SQ`6!ZC^)S?@i!6l}3 z?Bi0XhFE0)a>IGaCM@r9cW^4cfl^Tk>^sn#_7FmiUl?`rp_`}(0X6fryl7+fJ7}!R z-U?CWyLx43xV@S9F619qGBXPwqE_M(QHKou7ZPrRje$AehA=v<+Gg$Vl-B)X*kqU8SpbVZ&y&0< zK#EH2Ce*x`y5Y@H4iL5)COA1=i$~hhomYIY>QZihEbCx8nO6d1}<#?`Nu90<_;EEh;4H`L;X z$Pyp*JuifMWPs8mNpp!FvASwp`otN5j}Z46!MaG% zGz{q-3runEbD@UhQyL?oOko`&mdppQKisGfEOXM#bz)alf`!sq+>XIE?KAa@)pSxC zn>fC{fWnJ8#SG(di%xLHA;pnBxd-p#c1M`nzHg1&%sCl)BuYg8i%Zx2(&jBD^m4S{ z)7a#tJ;x#GX#f1%LNWD@n=T-$JR_ReB=F_w(rX!ee+4N&h6krZ*5=$qLUvYiETij2GblKZ;B6oO9rL#h8a zlAh0HcmWxW2kKXw)~-k$&PCcv~2jb~-iE0V*=%VvAyNN`TYvE<&< z&buXn3eiZpt0J<%Q8$6&IYv`e$fmK_voW-8`g*sjR)BvyKMIRMG%D;(GoE=7cOD1r z2bQKzW;OU$S8p<`9fhqV4#UbiNh)iz!u~qxx!7-K33LEfO}_YF$AT}o`3O8_M|mr6 zi#|bruA+hTD)GC>?p2%VaB3_Ou<|O6V3YC1|4GvsvA4)8$6Ctspt(82K=Yhbi_SoE zbSK3CWwxredQy~oB30h$VD*Jv<1(XdD5#Ni$6)?Ma<%BQEQv5cb}uu3o*3C#ZNwuy zWhV1!QH^WM*D9VD|z3UgBIMn1*WY{uvbYc;`L#3!n(XiOsIC|?F(Yk)pbfBJ-IpceW zeP1l91#~Fsd~ys6_OVOc!N>ezz8nyMy*gR18wjs*WkMD^nK>y(PSc7gn*KcDZAdty zSlm8;egp`}9j3s1N~sOPMr~N^V%Ukbk4vD}gbF*mxl|d`IDA2-3nT}R9;uia%F72C z!ZbKy8Gk~a-<9kj0L2i0$&80DA?%jgR5W%XA-vOs&)b2St3?BwDToe{p~Q=WZ7>_W z>0WZ-{`y?HDKl0Ntq|jqjhJ-g9RIs;);bSS&mlSe;+XQ?xNlEQZjbf65$(Q3E+t>q zuRA7^u(6Q7CJM<}(HiU-27{GvJ}{a#MO$TTT{@77c((h>1h_kMqbW)~82lnlY@vj8 z?7lD%wx2;knyt^rrs5%(c!y4Jt`-ANh4;yOAFrEU)wg`^xE9JQ7DEMJ=579lMIG;2z4vk36ZS-lSCdFS^bBx+I;i zSu>d_r_PjM$%eDrXQ|Mz$-IFWV@_IyGQqG;W(f}2L=>H&EnNRrXWCuAYT@9w0C@$( zHQJp#0}z)y;}NZ-aw~5V)^RsYTJ=s*i}HS3>dcpqtW5}w@6H*0_G&ARc=gL&6nc46b4L*~Id`B@Wf*!e*(7p-gy)#d(vMA#|bd==IB?Py{K za{NIG=Wt)f-yF0wWugfsvzZhGiIQuv|8Q)C2_Dq6!RX0rI!PC`3M|LBM>YE`msz0D z4edZk8bnV=#<`2m?PV>hDKBY2nPMB|hVp}pf!HM^WC4yy6rQYdLeQTj7XNcv-%{Sb6KHQ&+WUXd+2w-u}e_lWVg34 zvB5E>j`5Ax9l`6C+P$7r56QIP%i7+fOhr${nEx(08-y{iNVTa9&WjlfGjbcQkdUtE zK_U>x*B=7m;7QPYd~pu(rlZ2bjz*G#r-H){iH1Q+9p3b5oV4L4#dyj3GyO2yEC$pv zvy^`R?+fBm@1gH|k73ugwT>R|b9K2hUTX&)-R7NnicXVtit>}A3AIHncL1X9^OM*G z3D40HI~FfTz0Uo;kH=PfwW`bj0)MD?pc%5~$>g-UQ9O&bS8t^oO>U)-RU9D*AQimS`_D}NXXYP_aV`JO z>wnilK?1J>kQ%aaK3vg`-46m=i$1j+9@sbqwNK|M|9N`*)WO)sr@Yv8U@}81GJ1)HqQ%;*SBwH+gWnlKYG;r4iK{E)}aKuf1jBS zWo^ox5PkN)CPsC@ENw1m82B=4CX8D7l5iy5(IPqS8x_$8%xBt*C5KfI#`|Y#(Z5LH zTmmLZ2`{bxwE%X0IFO!$-R@O<8miNo!(DYXSt7zw{EunI!Gbl5zJvspIy!9bGt7j9 z>h;cm`_(ot>-j%nhrHv3WH;3vb?Yr|{0}Fa-`;{jq;1QKD>~+wgmZTfV=yXsqCx&D z>vzuFDg##x-%q`Y@MJeLR7Du7O4@x~(aUq0MCvZ1|Hr9+jb~&6Z`OH$VC6{qZ}VOw z)h1ytPc@@5lPIP$#}eo!xScw4YVJi5{8si&k+D!e3pO6)o+W7Mp_Ujh6 zcLfU(-deF%1$Xn3y+q%hw6FoM)$PQCiIe97i4q24gS^wl(&pydX2%Y%r?KwKpL}Z; z0h5hh{Kxk-x6O#X9WRTeVkCFI(A$HzEQC%d+pGW;FA<=aOaBt3Cq|UrA&KE2*>(Pup&qcY-Ouxtj3*<#Vps;QiRStHseYJRI3k z(2(;InabnRurCKu+>c6jDr0VPm8ci!r+=TuFcO1SL1Og&FuS}nk09T+m)6}_@07~B zwly8|F1wC}x+VXm@t`DjGp7OxP|HH)HLtv%EIlxnXHe_Vw9&O%*Qi?iD>G==aEz*zap&W|rreJnwBx z3ZV5WnNf6qgXP;W43+H5z{WH0fqtou&5i!eTfgSBwKk9Qi;G&ZGtak%$#TZJqmWVM zyL6|!#dBYNqWdr%BE8w9nwx}QINTP92x)e_<+)C&VzX4~6` zYzuqz&aU)4TGVu{UJG`u>>}dp6nAZt4718_ZR1OUV+)sUI*el3>{Jc7V*i@46udgr z@(dAFkpD#~XvA#%mie{Lezyl6sWBMxe`%=c@Zu0$XyqhPu2G77+iO@a^?Vlpenp#d?n-s#KiD3|4N3wNc2Q7-|%|vygT0U!GveZL~xCS!FZ;eTc>vW928Uz z^Z3X>&NtkIuLxqn%ua#~YR-QpxlQvtRXCfvz0No$;Cj2yRXEI!?y9JbBETtK6n8VK zURXaRrH77pEv=HK@-Jv;$NC%AsNMbi(f@*rKn^$yMQ_`ah8inK4|7J%dbYpIf?r`n zP^J4M#JydF%)^Shsp-rULugg){NZ9RN1p=HGrsEQ;2BRd9XY^nY;OQ>MH2q`Qtt=SqoCJhjcKiszs5S8LIV2N#qK6fL;_6a7ZGf1_V|(}Gm? zpD`*pF&NlnX|V0B+dgLyZ3>uu{oC5v{o2yG5ea$RW83!N?4ix83I7@JzAegcCpMwF z!{zCPJ?H__u}y81IhXNCW*f4xPonrb{qvDx^#B-Ec7hL=RVMbu~zmY^_dR;6Y?7kliRTG{k)XSP?9j{iDmbr$rq{(-Ni^0`?*?bW2Q zYt06_r|Wq+sg9^WOLdm2vX+pr0e&Y1Y+c)kk-C|k{^N>vo4@Xf?Vse&{bx)HUioA2 zirjbg-S1Ve&WzW$d4b0{iwB^Nj!TG%@DcitwlH}WCm9ltsA**#-;SRqo8AxbCsY+L~udx=7n>!n@2$5jE%)2*T9;rr^2|(9=E^gPM-r9^YZh*Kz;T-H~;6W5{aGv+R@N`no>k&T*5^DXzL{F4IyZc@Ip5 z6%8(+?~Pkf_{SAS?*DPmzB8%uKVwvIu&`CdWqgr}1ZQ|-uUSq;L9tO|t*i3Z0}WOp zu2SuI4xA(ypf#HX3R1&1sAv3)pEuTS9vj6LiSGU85$6Lvz4p^cRvNtu+z4l_vL($l>uh6-8ucf9l6a42Eb$zYnd2&o~ zeR0U&?)aGx!>eiOcqew@YAGG_xBuj4OI3T}e}I%72M$UIR4!ZzwEv7@hX7^s^{O24 zwGqL?4OO!_6%}u{yEkp7DA4b%3ttY4xTuY}MbCir9o>_Ylc&qg>up|6o&mz5D@14K zU2`2S9YVgx&R36@l;DCvZ~hY|;~5LCL)Q)+KswVc@cc#IpsMcJqpfJPI_o#e6Txh( z!&+KXZDxxf+jWp8=Q?x|HuTporz7`w#*bC=p3T~Psq8}p0jSiG6!Qck$ZUPQ|51K_ z+3RA98Va@SqQGq=>c496e;ADeUdOyQMYq`3z%j1h0awHWVg4Kn;X2$z0K#c5~+zXo?c?sfOChK3tgpUtij&m zm4groYpJEY#Az!jH@tJZa2(P~maY7N^H4Vp(`g!8&0!CtQ7wCeM_0OQmCPD{uj5&u zC)fJ&n7<$UHHoZt)4Vr%l>y_9o#vE`0=`Spli|1ragfaaYJ$IN@F!--H}+P{ga?&> z1rs|PoV~FIYgMDIr8+~z*3hG;AO9&Py(FiYNWBbcL+_@E>q^$*Bh_x~TAQDpr+K~5 z;#LNz7cyz@&z)^_tVGu_SSplriuR+OqDpgi+NgLa<63&+bB#qsTJ~wBvx+__iN;r>)grnU0f2Y*VnznJf0CsCZ)F$A*wCG$f@DznZ;5do36qiG z8BpBmZpxRw&ak@_zvaAis^ljOrTX<+v;6Di~q~8#fRK>oP)EIW$uzGoBBbe#_ z$I1Tu`9$Waf6OX~^FXDONA3N4K>tM#+jkTn)Xz1)a=OlDeH4=MaKELMQ1}g*lL7;R<*zDpJ0MA zHy+e0g3M-h{{QmII5XU=K}W{2p*PrVm_RJZ!@=LugZCs6Oi92^jNV8+DfdL6B(vRZ z;_U73emr*CcD}kPYrRr9@>A?#D{U@MkA02A@sbnNZPB`(^NH|7p>nEu9b3So+uAu*S+%i=~B427Or() z#^0Zx~(s5WAnSpdr+(<<1; zsL|>(v%fsIjEI$5c7kL(4|dN_+OMisue*HONv@@>P32ff{?9+Zkf9*#9xDC(??V@A zJWNblvDNN%jYVhf;PYHb!usl3M+=CL$e85v=b}ZH^>o71^knU_$jUZsW7u}q`6~G0 z%+Cv0W4KQVx-1eSJ%6s7>senNe*Jyyx07yF2=NYbhLYir@Ns&5<39cIh4#mtD(j~7 zBu{94WSkC`wC4ckZuAMCm@Us!6-^rJhoQM)RAYg3a1_s}u~g^5a$C*w*&2BLCpi>y z8^!;0|Fgq40Dl#)%DdGC&wpifHYre9f`^ z)s9{@SWdOhyquy;6YFmC*4`ns%6hJx2S=(ME8bEX!hSB>z(q^0U&wJBOI#dL(~%06 zogMM=T8zI#Go6`TE{R94LkpSnupnr%3nlW&}e!pI?QM2|l5&W5e)A%(; zrHd=Kz1krLqc!Zzq<$PC9Tm11tz9^JBfPXZ8L!`bzS{Z(Wkl@Qg#N-clb`o%R@+&8 z^si&q7*7qSi$DE-R`{zGI}TDQK4l{d8@bJ~%$-_V+gtQ4Q3joTdU_8KDpapht8|-D zytQpHV!SqNXfB#P{_P2xX}mA1OTrc?GN?+fW^cV=Z(P4+USAY=9eog9%6Py={ny!p zBT9UPU^E2#-@I}`Mg41UD#EJD5Bwa(jQYA}E%q|!%yH&cGSRLK&uBzT?p1W^U~+&;R=Ky{KPdS^l!r9_^3q_YQm~MH8G^EW^C6V+g3;Um^j|dVXIVaQo5pb=L-zzLb?#5$_*s zub$zMQvO@P^6d!71Tx@1DJ2Q6a~AooSc2t5Kfs<d$;A~JR}{)aDx&yU+_2?C9HY{fGyNDa zHzvkNnhSCf!4MJkRQRf(_kl!goDA-wdigZrkNFz4V(`xTbA<^&_&>Ea%SkQcWcrkZ zWA!-_AidqFpkCQAVW4>o_x~8!8WxuCJE5lNIGjjQq)Kow`9pd7d_8l@?n+>byGIpI zHk#1%pb0NY+>e(_cMbs>xXk$e-jC-G2Nz?f`eI)9W8Jrl7E>8l2?wm0b4nbY_~^hrK$kTo!XLyY=}@3+1YX()7&HDW>CSh1Bx-bP|>XCU!o> zVwnbYM?O1}c(XP`T?brSbaLGawsoO&u;1y(YxDh4*Gj;l-w;8^BVRQX!sA^(vTGHh z7Q89`dILpOHnBcA;Ilv6q2T8=s?bMY1}#UMb_jE5jrgY#pOM0 z?_Z^3#$USf2;c_@@R(YxM7=y{*O_+oPnVo|k3Pw+2yB-%LLTx}I&C-v2$lZ?TuCCr&?}MLnKP=Zno4wck^?d-nCHTVv43N;5DAwYO^700KVq zJarFeycXtwPdnUR{rRp}X^b1&mJ+}PK|DNqwqFuLbHix3fz--kd*qiIf+c4)ikF%?Juzf;PYf z>}x)Gx6&PhYt9SS2vb>M-71bwtAr;WR!@~mM_y4`$0Wkrzg@|arG?Wxe|$d#^K0P% z2##@87@J!p{8YP7!U{K(7c@C0>V_rfeWm274s6s zzhxcKi8xucX#Y4(99tj*;;2n?0C0_XY<*0EySJ!{JeJe6u(u{Joos{ zsEl_FTH?c7&FwJR(Y1Z@$$Tr#S}|VG$${Ef>PM;W(4yXZNL7`_5i@AXHS9*~`-&dR z{P=8nhMvf0fQ14m9h!qur#7~o@%GSb=~JBh0@}LL=FAAv7=IqSV_shmJiPZbdepjq zb~5Nb!b|2^GY#Lz^}#Fy)9usBHV2}lH&bbOgjgIq=Abv_Icc-4?P zIFX|X{>>|G+fXM=F5I={)&{86uirwGU=8aY)`ADX$CU1iF|8*tqwyfiMny2hy;bB} zwSy4=8BRp?hoyuyIPr9F_Q?M_fs0dmCw721Y2;EE$H}d5u>$;i@QRs_-AeRceUF|i zW89LH&va1C{TFJ330Bpx@36W>LUais=TN1o?7$ykV_O@%AtxUhd zJTb<-mS#*>wGd^vnwpyG>FFs5U^DIgY50Qu41dI0_@qZuFz3+3h``qTcFGsWg73ML(x%9m69!v(`@^WRw*NT| z{%Qz=iR7lG%NsYhs;m0|@9Y2Ph9#B8Si^S5k<9|qC$Xn()OGiJ@Z#3giGw^IGqMob zNt|RP@^h{biE>+q>G{ROW0jCs*VP)CQELC0bWz%m-tMkW-A4+cVzJl$xMDebPj^f2 z+EyP>)l1=G0K;(`rU*n1L{m0pfm&#l6t$>uY8C>IJskfvGcCfiW2v;7z_mf!DDb}6 zt;_xJs>ZPOS)1M9xuPcfwSl?Cm_ZAJfNc&%vBlQWrz5RupE)hfc*Fvdr?7VqedAzg zczs>;zAXp!brw`rMHidsx)U3{m_}DVuVeYwra)nJGo$OHiW;ljka0!p=WLlPz-YD> zq;g-y?zM7%Tx35leS6;=+j}=IZ<<)BDr0&`%x+($@U`)JocP7M_$}ziP_be<(pPeh zro*nwKi8p9Eg{05Ey$eHCzi{;MWQc77`&IuLm0jL-^2EXDSUM3KyM1W+3KEdyc^4F zp|tq<`-*CRUT98g%rfx$bJYFgs>K?p^RHP~l;UWxp) z=9yb0sM}_StVkkAnG}gLyRT;&uYeNpvfpTz&>}>}`qa92%UFXWt^Sn|9P zf)nL$S z*mqaiomd@X_w9?l4rs!X*(nGN>OHo15ZPh1Egb7w{rM2&X#DVaIp^Lemg{*JB~+n3 zH{{{jT3y>04dr+j^JB_f0=uT`Q^D~BZMVg_t>Rn77MUi)D((7RPoIXY4*zZSJ*Uc! zn@QijLgsx@+s+%I)#q1EhF1xm=^<;B_}%M@+sUcjd#;SvN3*?q-tia6S_{yVv#Y`F zEbkU22vF}K;~PjC`;OD)-O4-mgP(sC$Nk9n4kv^3_ICbUKLfxi6wTKvLZ~j3;B2v= z+~Q#WTu)kY7mi+(llIZvIrtze?wssrk}M;^`)Z^=AX^=-imtE zS>0K~`igRq6Uo%5sEP-wi8ILXxY(=Wx95`3!*w3g`AA&$g#k*0maIg2B!TZVuXGNN z?2Da5)sI%5KHJk>?->%Z-YOm6Gbqrr{@)K2=f34rzbhx>%e}9WXR_1XM^zH^0^ZfF`-j|Nu%+Km)?^ii%e7M~skHdA* zX>_g3%L6-1*ETWnRw^tB>XgE`tv9%r+wbk=rc z$_?)& z^Z)4j#^_3$b=%msZJQlu#Yx9@(y`UC*|BZgwrwXJyJL5J*SF6(X2D1qZa}16HV=NSnQKcYPaju59{)4S@pGa%Z6$HzOyRxhS8>l%29vF zW8RqOwB%NHD)oiY!jN^Qj_USY?-MOr_u_~t{)g<2_Js%b8*y+q-b^Hyj(KatlY@Q} zTeoe5E^tYh$&B4QAvyq`hvk2)Q~<4874HvV%AMYGYy0NgIf|(eY)Gz3YuagComd-L z>?vY}F=VAxg*jO)QQGn~x9!6Y{l_-0sE8(ISQ(#tW7tJ)Oy!(RS}yfIUv&yMu$I(s zAjWnk#oR#LLum~`AHp24M#;F3&~J-+pDCX@;{nF>{r3SpfA*D8ZM7lUo9&_Z#{CYL z$(IWCoxN3!U*_sZXV%_Ms_vKh_UBK^>#voVPnCHeSIMX4TN`d0XWq+r7`dFkj_8OE z|1!klHV`3PvB$S^;MPdeSTt_alLm^rfq(2g+ezM9+PltzcG5s*XFTTRUvn6pGVco* z?+VlxVen~*W_8rv(K5BT zp$1jMCxBYHA}yQ#!%aVUb%`dn@}rYhg^P}HyNV14od*SzTCqzz4uQK)NCX5FC9JOOh-XHmZb?QTDnwHNzjsTY_vME zQEI0S05NsM^ke%--0F#pviQ4zH55esC_{t8ph;_up_6=o5`S6VAm#&4x387wA@XKc zjPMe%(`F)Z?~(g)EhW1dA|vd`4*34Zb4wc@Hz4PmSF76;P@ zGuNJewP%gD(cZ;cZ^W+YKaJy_8yXg&l$)4-c zM;y{f$8i0vnX&Y8lbR72>h=Njvfe6j4ddv)|1RM#?rvXri5Rjn)sw8tGq3)kwbMrZ zUdMn~wfv^1UTmF~=A+>b_kRAX2F!Wka?$9w$M*q`c`o0Re+RXMNO74q7 zm=Do)Q%YAkdFjtszfL+1XWV*q>>*L6B9RqUZH^?6<=Hn6V@H0C-U1 z01PF4j3!Wm`R;|^4cHeTZbpM}%`h`hAPYQtp!hb4{-IgE%%>=KVBDZgMoO8RC#4V( zBR2;eDoo!(t`gPY>fdCF7eaSS~GXEQANbJl!EvY*Q1QC=}t?e3TvoJ5uZuzzJNwqe`zd5 zW_W(%biP}%UP!xgneG=@RqP+*BQMm&uQ=`=cFLl2HTSU@U`HTvHn2sKTKr(>2eWj> z5CDoHDnmF8bHkgMf)FPe7&92~9=>?Q5mD4s^zmKU&8tW)Z!Hs+n#k8_)Jy>z2gqoB zp+|r5YGBvjs$cMYCQ4oim76rW`(3A4+t9!P4a98{HL81?d=QydYqvExVHG0M)7w6_ zV_74|_Of&K_0ZTExWIqRVo3of8OvRo-j?hHP??T)*Y#ha%!kuo31y#`S=(~e@whCh{2y+X8Fv8q&NS+|)CtCDvla-{gy1eti#?^LRKaYFt6NL#uL zX6F(4{XFVzHQTsEpU#B5+1r;T=LRB>My=E%tVb9P9;IA4zr2D2W_e8ojzqsk{+KyC8-wk95bIki%@QeAwG}yB4iDG(o1~AFOK^33GAy!kSsw8-mTZcSj* zE~-6ot@322z?OzlPEjsG4D*ABE&PR85P!8<@V1cb&s))jLn8&IQsBZVQLl+;gb$FV zV*^jD$ClZmb(t>?DO4Gos7p^;%n_z1-4_fSg2ft$f=9+D^0R-=6p_7`r+#kmGH(zG z(47D_4+Nfk;Qk}dD(w)NSBeJ~uL;DEc6x+uz6v*zVJRC578fX18a8W{gBb$z23+{* zzQ~U0l|69w?}F}4@_LxXy9Z@-D?bn6cWhgcqMNjf<>aSMCeG#*hp<9Z&*tWYzwJY? zX^((TK=g|Fi)cC?KW#FS@>fNGL>4Ic4G`UUoaR{6X^DbWX$4_hXZ>&wb~Pv6E%&Dn z^!$NdxUNHka#qh{X9r~JK4=*WZ#SuEPXMxtsJ_;$hztTMJ&RXPPEO`lhG*AV_XU^p zvcObZVB2J;bhpcbQ$;i<^@g?bFDJ}Z zNL2??q)>`fVA4ByGA7FuyHz?mn0?LruveE*aLI-^)#zdt%Nc1X{5ghubV5oh*JJ=B z!YY#CydY?kYm&4usP*;01Vh8XgbI@YEU?0{F2d`+AtHqBqz4SAYDOa8?6MDeqIgzO?!vF8tvxMZ>%xYnEp2h}(R$nB6FSOqBkH+?_6)85F z<%zY&DkfDNX1cL1n97B|NbTy8si{x!Fybp0?T{=*rc~KwV>KJuka5p;J$h{GBW>PQ zsUejd57B`{wi zKjkrB;=@^KkMnQ-5a>Mqbe3*vf>r&@5|m`wh2_n%>!eJ8S;99~sgMa#j>X0lkN0Gy zo4qUO4kNN@-83drm;50zu^gFR|DZ^oiA6tb1wgw)b4P8yO>g{akN!Sdsh|GOltzlX zAEM!Du0MEeo^&KeOg#BMCHr&$p<5-pVbjjTykTQ+inuxGp|sOZ6npruJWDeg_($zQ zU#o*iFy;ZL+NQ1FOLXF~jJUU|!E#zO{X^j|%xDy_nR&@YPW8Gr+&a+6Q{TSbE4FTx zpHP--)2^_QhwKh|teVn_=$S_D0?6FsiE~On>@I$U-j4`j)H){r%TO%;GSo!L?55!A zlNr^&47GUFWs&T&NHq?Oh*Tb^=ko|Nk?QP}haT-vZNTT%3RogPp4M?y$*pTOwVEjk z)sXL$A4)ithsM!k1Y0$;`T21eZGT$4Azfa#NLqzxt6>Ch+yrTj*2<)mcDy8nPcQBE zmZeEieDuVz@3sWnItVuz%?{9O(*wiv5_ZJR7$rwt!`XeytSdEovhDi?{ihw!c~>g@ zc}f}dn7>^9>R6fiPg||#Sa-vh66JU2z%st12V}KdUu-_!Sv2d?B=4PeQ2dZt{-&#k zJuI4^Gx}*!_;@w%6ZTA)0m__kr`)VsrW%$jgZp)!aCNd6s8~&+p(I6(2HVRV$~X>1 zhUGQavmM(vY2f@%{s4iq*ZOK@ILv-}neB+rp2&Ycul~{w1oUzDvMp`geZgkIQ*=4d zxh>1Vdg%WbtNDs$ z8g>B(3xDgwVlM^U^VZK&Lg3t$suMg|P5)}(PF{CJVPpO(R<&U{z8$SYo5rkb`v9(^ zol2eB1R&P_d!ZeD^XxS1WzU~*^ZB#v2V^*^HA^d1v0CiM zDZx*g@mkpSx#2T;R=r^43*~(BL*G9f zAH+r{>vSu1{XH}W45NkP;p{kKvSLI!eS<)l5Ay4rkO8L-Eb2zbhqLar{Go-xs51d* zvUc^a2;l3?_^d)<&U(y4(Z0H=0_WDMB={Tize*}$1E8&4`1zWetI)F#+CsbX$<43R zJ8IRfu$*1En`C;Fr~6u9n5ycDrBh zVf}LN{%l*sb#eAvwSH;fDq#SI6f#tz_FyP=q2%op%HQd_KXe2iGrV(wM2H-A%XTwx zmbdYGqK};QmwwialK4IJy8%p4-A`tyZqkF%#t1xJYulLY!VAO|_ z3w|g0aWAP`X;02hnuz9YPYSdYKPwrMCiyv2)m=%YeL1zecK?w@d{fTl5GZ`{o3TST%0r$&cA!=`jX} z$2I!vbO+OPM_X&!(kPGM|tUzz`SMGlChP@EZtG$+V7b?Ber0&2ws%Rj- zuNnVe;iF@wq1AY=6+Y@W-?$O2eR1|Aqci83eX+oKhMAramqjR$Gg%>gvSvB~d^9!4 z@Bb&E(BeW2tA7ap%4W8ema&ut-tL}9iX{u+p`shd5;qiXF3=3UKhNns4>KpS;@o&N zM)#L0E4iML$dUHEnxr@?^E`y{KQE%eju;D24>zl`Xump+0P z!koIyP_j8(p;`5QRAOMq8=2gDd>aX*41v|q29e(XFZ1*l!Ds-w5TCc~X=3S1Kd{dh zk(a2PE}El~$@CZ+RXVkD^%_-YOij%3w?f!vF!y<>LT88-05q|k(GTq&c=J_b&PR(S zN6sss@&v{R%6et`6TI>@hcWzz*Sdx2{ijXtUNm=j?0*Po%08IhWesp^w#;pXkSg9$ z%~CLXr4#OIpL!>|497-F&3}AA&V2!-&oovy5LJ;qZ90}*|CY`G-xoNbj$}Iv=MqOA z-A)+ZVzS(A&L`pGxv3&qOzASLkPV0Oj8U{kV@?eV)Bea2>%!3|qAfoczsluuOuS`f zt)x3YOya-hKi=%Aij~`8YgY%2`7+=_-e>$r@g1Ps;0vc;7EQRT2=7Hl#{$(k#r%CbXdrP%P+I>NBXHKU}}= zU5Waf!v7QqeG7PsC=2MzT`Xkg$iX1M{-v^8@Kcn!>jtV7Dd)wPdCfGa!YH?K>v04@ zQl3+lsgz<*Idzh0@}Ucd))}Z@^^@&5DXH57tf@|1{Kn~XPrpgJI~i)T+_=JZd=@7y z6?vdErJO!cPlqp(y?;KHYay;)&(GQNv*d|x0V6ChrKQjU3+S^G-6lPp5HQ(cD#|#^ zwYQ^Bn=mAFtwl!iag=TDR;5{ZO~02I}RW>0v=IoP9P)CnzuLEEfQAagY!5>l&85-vbIo{2)4lGs9LgEwqm4*ghUg||6f;Gd1rwiryhSQiQ7fCHPS!<57MP|ovl z$9oAZ4mKlEY!=C1p4 zL^;&+YB8RJV*TbR(Y7BBQ!RhCdND+-1f@;Jll$1iEW{*phl9aV{u5xie=KelzX9_1 zXB;_^Lm1a% zRYoI8ffyUcgawjZ3`nL~bu36EOK5)@;$=L1W;J9pDV}1OT7b^|j~eCo;g6iDRd8!M z4sY^ole8F0%@q&dmvd~1Okl3(3hnv^59DK>dV^f8K~DhppNPjIH37q%{xM!i>UH8i zo=z#DF{oHn`kGhoQ}7G3z0K}8KS7i&IB~oTcLQ>}S*GIrn!y11KS31D&S05N{~mf) z9*2?&6f9PTwW#!@(HqQ!xX?UE=m!T{{%BMqoqR0RDEKYWF6R+N#ck~Ndql#XLqgC~ z%QN77cpil@_mg|oGes`u?+ENIO+xYeNHk)1-x%DZ<6D92dFM*2;h*G<6ASCHNwd3| zoOUg7 z?ivisMp3HcC+I<_Kf^oPkvc@Z1vXxLdLL=C@5!c2U+RGb><)%kGUWj+R#G1eSY#I} z?E}y30%!^DTukZ1c{w)j+1IF> z#QV%%cxhg#4 zJh&N)N+~x;Rt&}SwVG%jRz>h8|6~)g0k3+6{OM_ql?V9U5)^{~4C8B8Hi*{X%udj{ zl$D=(qpu4!^__UdEfjsu%@h%2zqL|}t=iR?)BvbCwUNddmyO~7K+2DNqa`oUvMpYFespKy7FmzNdJx^47JPTDUCMHXT> zR-1vD`vd!_<;eUrF!)i;=b06cc{Q!S)6)7c0Pr1*p$9bfXK^Qam)j+RbwjD(?4t`= zBqpr9B3=ctQ4|*=Y|3w%T%r9CNE{JW2Yv9pmwxb8tfU2Q(_BV_pB~+iR^H-y@6RWd5@~0S2?e6j|rCQwcf6}|i z$B;-4V4MYDG!hm7QwiI9Y5m)j1^?fJCb}%Oi>dR&t|k3Yur}c&&z}qhVNq+8Gc=}8 zhQp5&MyaiC5_CxniRdF{roY6X(QzQh)kq-e)0r+rn{i~OhU?r{^7JpAm{zo*aums? z`$k-GTzB(Xh>Ye!k>n0>c%5eS!&hd+q2wAhBZkLZCtarmNq+q)59Tz^F-r^7lyO7f z(|^?p9>!yNR^;ga9W-gAK61%t;t*2N?lX^dNu}r8I(Qx4$)MKxqam%_6m8k5MR5ic zD*&qBv`ja@t4uq-FA~^gsYlF<*w4LW(H22gD_)o{p4;xD1k=GgF*kCia)5{ zNOs8@d86AG-%Wb6Afr7obJ_znGwbfY+S(9UL{!ptjkaM7?aLH*TMa5IGPLIGaT4z!~ZmBqQdZjBq(nh=(AG zD6(a}8{P!rG^$?{)$s}_*pp#Q7Ap_SF(gJ68Q1TL)A4g8;S)_D9EE(F>67%=a#}Li>BZlIiIplO~jOoSrQGE|HHZ=WE;Ei}`orbM; zw+ykiI7CK+5Ql~2uvoKD0Gc!~hv z5WC7&s;>mz=k|P{cYA4crc)}Du$vptI@!zJ9BB+DNwu8I62pOYycdQJK^_h3vpbA zstR)&3(|9)>@WZaW|^e1m7Y-+zImx>kjFb6mhM2l&^q_19}WC!zm`KD9?Ns}d!A-d8uAhuK1yQ$@OyFDKOg0))D7VA>d4D|K0{_~P?%{i-4&0;=^)wPDPJjs4Qlycn zeJTfzkqHB(#-{c5J4h!$XXtL92oIssQgq6RH2kU=*T^lmBrMi8%INTN8AaN@?gRir zmO2?I06Et(Zxp2qNqD52sxLzUm6{0onMQ)A<>KHR%R%o@c`3IknzShs=Vj$Z(she}|K{4~uCvj>2mbM*E+ z8hgP{U_tajdWO_N8xbA_j%~BgTuXSx!!V@y`r=`wjE`^^;Jz4{OR#9-m|$hNyAiNz zuwU+<;7AF*4*klJm1mW??h~FaTkiWD-E(jk3%J=e z0R!a(W1BE_3JLUgW=Og5{7@*xpNkC(rV3*!DO2@c<&Rh{nxNE2d;DIRvrNKr~h?q3#JfoZ^hGjil4f! zX7TWm#@nvIFR?eWTf{}DEo7?7mcd`jZGAFCHdxCTi}y=w7a2O!A#XOc4w08dH4l_0 zVI=03ZPJk6y*_u(^m=g#k#o~7>XrQ7RY7|FT+aOB=&RILIi2r6@vNQc)lD7Ml3+Zfj(9K2wrR$;o?_8`GX-}Ds55& zfHZx2ICNo8ges_Ca|#>DD+tw(XBYnUqu;`qMTKTS4yKP`tf`?kYGTW|Pop=Uwu4c)BE1S{O3DCrt zEGKy&t-BBXs~>|?EKqGhQE>7`l`c~O0ofB=KXDj>Smw?v&xGi-oSOs8PYef~iKdbJ zA}|!yjJ#26YvzX`GoE=1quw=IKymELwa>5-a2L`z%-sZ7mUbvnZ&HQclRf-=-^EL- z4cHbA2ly6hWE1|Hazw6{6TqQJI7ka442rVWlvv>`oDA*DBs=f4#Eurs5hWVoLkX}W zlwGn{J7p0TsWY9Di3|~li77)AH_8KrnIEHo4x-218tVd#$lmn@FolfrD99VGPJumy zm1&(5dbmJ~7LrSVv;GO67WYOnW=F4#aL*pHBwqpDuSXAyK+wd{hIizP*pj=zVl$*- z!mi&4M~%oH;vs3BkV>+^u?d-DVW9*ENJ|u|+b4`Bk|;C^;?9F4C+stZ{1Rch(49;f z>c=F%Q-)M>8kX>vVyooi&FKO2kfLQa4zia-a6jo?j7C172lC^#p1T%f>0|ZB+p8kO5~#-u*OGmZp_AYgASVi}o3?;y(=E5);ZLH& z+AkJuB6Eks)p1*6Ng~bhkMI;VN@Z~K z>)XH0_-)s{S?tKKMpR0QR#%!B^E*x;(+Q?sxDz!SC*m3hSw8l)qyy#IeR92=H$&}v z=W#_OcySk3qLb87fJ{Fbmfp0C_o&6yww_ogbx?LkC*7JXZ)V&NP%l<%+M*9c;C)<3 z9F=?Ooa@!dZdSJ?IEga1RiYrE*X zWs-Yq!cC)*rYPL!aQJUK^9;_l3EjrJfrr2UrccM38jR7+0%tTfCK;$GxFvcM1S*;v zvoXE~IURzaG?B*&j@G|);e;c%XLW3B27Mbri~A@;#W67J47@y7*cw5jk}&WX`%hs` zVMA~X6Uk$pzfqy#oiZE2pOJ%8*ieb!JFZEM$rlKsIV8F#4FytQk)R5}dPpzHLUmId zm!`Ji->EEt!$DXSCIaYl9WA-gB2k0r_gUiFQiCrj{*X8#(+-Vw7gqH0mHE7e|4ApW zFps6p;Vbfc#qoHJ`{Nb6p8HK44^dgFB4?x2>nZ%TU9xFMpyG3e^x$WVMa&hYUi{Dp z1uBJ7?{BE4A+Z8Gwo~$Fg#@b<@h*yeQW0#}HjB+HHwOwj%|Np`bVi(cg71mRQ3g~$ zsuyw@Q9;>?z@0@24qRPqB8+H!hgAQ-vLwADoqDwiKnoJ7P62nGe9iAA1F?BO0%%1Q z%EqWWC5Y%S`G&nkDt^#G{;g#)3TjfW*2R)(_Abvd?>ar5nwO~50b!=o2$p#{%e%}i z)w^yQ%22FLolG{iazGK1;Rmzx8$v~H6U#J!?FxYhDnd~+0ozI^Y6`&`S>4>y*E*ut zOjH{ehKV2g`^#PA7;OAW>4PHhGUv;IAUr|($hor;=qXaT2z3e~UVSu&M~7C`V5g#3 z%~-u4`J3vBljL-8*)bMJ^(eku%9YI$iORL5-M!lKvpD3W`jK_tlnbb)t=RI&-QMkf zjMj;uKH@F1wx-=L|B6x87Q#>(@s?9{6awSXxf^%Tk&|yB6_j>ZiHvEnu)s)e?rLB{ zVXaMqpk#@m!KwJst;)tJu2NZG3nM{l9X{$hU&e$sKWdC(OHlv^B@IGe2|`#S4rWSI zL;u6on5e)~O-fQVW>syGao8nMjvJGIQxzr6#-emHBZA6OBRokXmK%dS!Ktex+ityw z^JvGb^`w6*MZlzEyre@%t%W``qQp#G*;PE;vch(U-ELC=tL>-p>1TGiz5K9Sbnpm% ze7%HImjK6xOmk6M+~@}P8jq3BZ$&oD*pWc}+%2o1=Zk;-JgT{@Fx*#&TYO{Q7e@$yfy3 z-))(j)V5RMWzKl6B}aBb^cDj@eLIfMuvq+H>7a4q-Scz zZK)1oHFiE5cfcIS?JMm2%HZ+gardW@<7T7r5K&i9R^Mm){o`8EKT%%M4Wqw~TB^%; zA92oqRu+vE%{fstJPIN4govz`fU;M(rgWTHpQ87x`6%`}v)9+)dD&}2NPkY3-~96q ztleAmVBzbZsXn1khh1dsv2u+u>+gxJ`Xsf2 zV%y#^6ZkvHCOOW!-$Z=h!0(P54^NmAR&y7--lzKRzbELKP+*aQ65o2#_AU$>%Y4S8 z^-?I4(^fdY7r@+GYr2xkjS~z@Gz{dsO{8EL%25?Gp(g`3tB%~DzI}W{Z1eF=Wp-dD zy+(KPsCaa+YfGF=!kd=k%&jz+SvD?ItxSS1*2e0xDB2cixW4K4dCQ!pdemPk+k?=5 zXnpDHyxj2CKZInya~GSzNhzAHjD~Iv{YNU(hj)nMKTXY6+ zml`J?l*Wa5`so);okNUEF?9;1;2C|ORzvQnc4y6olAaXl%~S(p&=}!(fyheAgP`@mem(fUO%;x85*3La3z)a8jpZO5%f~+a8$8vg@yM(T8elX<$AS7$!}WXhWKdH3#FU(Uz7S zN>i4WVK$Sats(Km+EwM-$WGYlv5H0(v#sQ@X;W`ycs7-vEde=%;i?WjmF76Wf_%$V zr-bd#?;CEhnWdd25nMw&+ic(65KQE^r1XR~gmGG-+@jj9vylYr=pQb#KfR~~Iwd~% zB?>#K3@0&iPe(eYA>=ZLele#a6@{5V?ve-aNlqA(>JiLj=;|Z;wz6eT^F?EsN#by@ z_E%;#Gbi{>4S5x@-fdoY+jU8HDFRU?@zn&YJr0x;xx=0>L(D|3^~SwVan3CY*X~>l z&w+#oBT&*L#|8C?Cu!#;h7`j`g&0zqE}}>NT2rOiqmagyZZrRZBEe~wkVJVzHE5Uc z9N(2HcZd*s!6o3^`WexwS1VNF_n~RPO5}GTF;DC#_x4&ib1ft>vayc5L)hlD;d@qf z^jw;iy2EY2XW#8U^YX%*HJv)E#YF0`{dER=5}|=;-(BYOu^w>1yb;@L>h}TIv}V@S z_u6)P9}Y0^Ht>1py<2fUOlAJd)P33Uz(1O-GFH~@F5&Z-_4>!_uu@A7*r}|zij~n-=jHMPqTf zhsH@o>n=kG!0v1u5zEdl%eV+zMk1yIv1Whk5kBGkqmK2X-wSRgsr1Kf1zF}q;em1n zPglKjU8YBA!kf#vxPxHbHTKu)cSUk;-I~>q48^J=I!r4ARa*ETRr2&Fo6|G>;6P#M zCbXmkpq^o+$O_;+V*j;ib7NYm#LRX6qh1+@hyWoF`vr);lb@}=!$7%Arj%VT$mj5O z7Icuf0MimYgTJKpqXZUBz6L{u7)~}GKe>OBKdhnn>G6#ap&2@iKVJWwls%j0-ro8- z`{sqAw02|qmH2U8Ie~ieq8ZG~xAuI^!UQ7wQfmJ3d8jJ?_vVDgB*HPO=t0LpMY+@{ z3p7%yl8Zd>s4_j+SnmDB?EY->`RuKmtN6JZI|uVo?q!##@RSro+f(wfu0i_#hbTN)~D(+0pu=3Ob+C64Hb^!%N;Wc7ZPn-~^?1!4OUq71*V2drDePj-H+7)Na5 zW{8g+J?iW(eSs1rB@s2gO~uz72wNo{O#&<{tZtbjsCXs=M?BruIM(<-W6FU^k6Y9! z@Keg4l3h5XcaW2f-g8#JyQFF8J+x`1DGTYvdd-*$mMl}37J0mwFGrUkJdjqnt>;2eY(ya}9pyresdeGvlQj5gFCig_bPmMYLjLqkThM*Y#fEMw@ zyj_mmPgq;;9>{3mwSqPDBH?JnSM0&@BYzT*5YVE>QS z-LmD~k@Vdo?cM02>gPN!oxvolL9Y7OS=Vu8<16!QMz8Pp=V91KYHB&`omE}$?;c0s zkIk`58iHgRLKFtR;_zP&T~C#WP@(R76RpLGGijR+@71qS@%rlA1 z+hVdVsXMFs9fn5VFvb{>#zU$6Uu6L_%v^;1~(zNnW=x~z$Wz#azfJ(OWGCxYpl$t%rxgb*VE<%`s zJ}Waxv5O~L9+R$MZJ^cvD%i?fxxD>Wh;6i0?Y23R!3)tOkr09BjjupvBk{K#MAK!B@`K2~=E1TGv-sn(!&VUU2PXPuD zztebFmv{t|SfeIGyc9*c9FmEOhYc-ptYqQ51J4CKbUmn+A#q2`lRXy6oL2# zCmoE-c@em&Dm7ytWgMlJe?nTal7@0L$HRf`E=h=Ls1K@Ce2*TtoQun%$ws--w73T6 zio^?zF8j*7e3Wn$KXp^$uBb^U;X%c1j8he3D@1gF3yMUMSwVH~1s-*05<@g6*J5oFnyS-keBY;B=xv;*w}g4*eo%nJrQ{=(HV2CN&7nD-G~zKbI%SfrAG#RO{(E1 z$&|~c>yzv4mY^#L{GRW0hR{xv%RJ87$F@3?Sj#lWe&zc}^fLHn$T=b8?cWG?E9LM~ zm37Wx^NRy}78GuNp{A>}>q)Smt;zbDR3c!EzI1%`N7H%nl*EcRiE! zbWH~A^X!oxu{UG_-?sI#CD~!C{5dRq===J_?7y;|67)w@axqTD#uS*2p}?W(xVc># z*d@BZZq@+n2bTEXf1p2qY@>~OGjRz0wtj!@hI!B}gRGqL$4E0F(?m3C07>OxQLNXl z?h_C1r@Hp-6^fVg$3R3x+(WQRnmlS)XK2B@A2E4?N!gYdc#&(+4lT{zn>Tawr06v# z^LjQt&KX}4K#%Ag9q{VdF7NnJWJ83C$bx8<48@0Ot6I^q##$U#cxnc5 zEM~hZm7B2 z`W`ewJ|m3n}rh8o>5cdqK!A&mI_2J2C!q#B8o{Wlq3CzSSAIFFBcK_CK$ zZ^iOciDQX>OZF_28hm7UzrusZ&7_`;Y21)QJb?v~wB3qaU&jG z^u{CQ7AE!cVZPsbsr1!OxdN|E+SNMR!v;ER+pf`TfYT7cNH3DCl|XcDuY>cQjTN2 zzb^7IE4(IX>@*r?2OW5IQxeG3kQ$0Pc;W0A>SxtBzUu@E-H(^>ix~&TxUo)nZtr&E zTMlUK=B^`R@OzEv@Av{^+2O3Sens9~8+B4rY5!VFTRMb#tgvs&{c7}mXNne8DZkm_ zBCd%dE-au+Ge5^W8g4r=jYpIx2Oq|^F}{&6&#BV$th>aj zM>i8pg{6^@Bm6Q{50-^+h^Uj15=AK?L(mESw&hcp6c9_2_FP82Y1#m;SeSvg7!`fm z(I>bR6;{JpSR#U!ew9#;w9q#vB_L3dP7u&XCMB>9N*Jhz(##)dIj4yas`+Lyg1<4} z;oDW7YlUADUs9c6Q6^y>8j)h_IRq-PR8~O`*mNJ|TW-EiulvpUV_U!|izp;L&aS{D z4UhGjp!F(!fO2NzmWu{`0pTLOXsvk`nSc^0^RRB^q zqL(?g=qxscI}tw3Lf`CI!#I6X`pf9iZePIar8vZ34cO3P-NlH0j$OjOy~oFmUV|e* z2o98Tys;B}?w$|C7HKDgZO3vvSP$7*Yt8`WNM`3bTw-3pJx2t4qwEc!QeNUa`SsGP zMJqcsjKOtO8Z8X}?8ri=l-wxe-AZ|*ko$x3#5(FYT$a4N`N(f&~mt+gOD zTQrCA3`U#hFSqqe^$mve#JjZb=kvzIZU1K3$ECq@)I3Yh?BKf8G=ABl)a7<%F=k>6IheUH_E6DXq-u4 zo+_frOX~1blKxtBh zKL#$LOe}k94S+SNcXBy9Tm#R;GvrNGl37w z0xg|2??>XozbENR;amdhCGjO(R|*R_MFhG-8EFs~&CP=Pv%txxsFu1-;h9ipjj=Gs z$SmDFi0N6#!c+LJRgAfzvp8?|sh>^9c;F+~B=DWPaSDa=BpevzTU8~msi{p*)@6q( zF?SUi5|K(eG#zS{+ZnOKSM88J1@;t42#}x#KyS$Y%DH)gBjpl%P2hJEsmuw*MXfv0 z${LL+O8tSC&W>Y~*0OH2u!i0JHX@x-&>&({XYZ3K(}*3mD8?{GAORF( zFroUB_;Y|ie$z|@9$oVe=+=b zjX!H~S`D{)rb+1k8Mk*OeITIn+DWC#e_HHzLL)A)r6%vXs}7S>DH6~Zm}NrvX0ge& zfQMt<@7L^F!OpS(BNxkWrKSR?MQhkk-NvFgFS?D&U+=0p zFIuD7Aur}88UVimk^%pLFw{dc(6P%L_hE!bj${1BNR(!xv{L8B^1PnW0ND6oOEN+b z$qJ;!VXOm>LURdb>p&vJ%yB1pNJb6xV95X&aA2T?9qmz;T}OO+5;c>1>*Ve#xvN6% zsge5{WRFC4i{#+6_Q!|FTd?yvLVo@@WkGK}szBhCL#j6)>p>n0g@A^R&j}6pAky4g zv)7Iyz2eoQfJN%pkHN%<{9wQK^+&bGA7dz~@0q-OP!G$cpB_dQ2ojUy2gxrF*nWI8 z`^019?orjH6EH4P!WR(y2z`wuW2Xi_J8ispMhCl~D=_JSgCHyl12_VuLCh)2WB`#a zo>Wi|)zm16;+iX1%LaOLLUHA^>Z?JVxOLhetIhS`KjQQvjd;}*74;T z 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

=j)L*0anI=H+B5e>Q+XzR(j7C2`HC6=? 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�O=6ol=@?}fbwT3kxJ>6(++F-5gy!B+=oyGNo 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%0A1orY<$Z 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≪rT#o06WAou40@n&uZR6c`gxFAQ)7PA*kW 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

*C}syT;Y8?!9mht(Hq`mt~ph>$&{JgwD*Cm7LTH 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

|NgBj9xX*Sd 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

I0mO;hTrG*(OoyFXtDrX;sI)J{(#i_KH06b9qK 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

2c3aOdB?=s=rB}+L^&}a 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

&B1OE6b!3$^vrt{rn?!@11t_{lx#WYJbvq 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≫LL-CR7tV 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�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 IDuerf0P6$w{Qv*} literal 1720092 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 mFHCm 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

MH& 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⋘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

iA=NV8b%GMHIJgrm2! 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�dipi5v25VPry83;t@E?(#3nzpG_A9Tw; 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®_=o zs&wa&m^n1Nr+prW&;@2u!j@^7W_q*^nNK# z=dbmvga6Fa)*U{f4acb>!rglT1>kCPF(N}Z&BDPihXjsp4GLYPIAG^LhQ45fh;*~p zpGT9`Cn?HY8@F2vbN^*s3M;h8i3r5SzA%_q4Ymr3E9eMJZf$%litDHF9MFJbs!n3# ztofX=jesVjDaD_m!Ogr2rc}&ZCzxgVh`2)&k?QN?X9u@fm6cgwDzF0vp9i8QRAuL8 zK-D0(gA;{Icn9JgPv#>MEJ(n^=P#^D4t!^L2Z>MzVu{EUGUm2Fv7l&_j>u?EHIJgU zCr46=Mko>PJJk-60Suou<{usx!JEVR}3=n)tM@T z_&j_?smlo*VB#B+WLZV04dQY(q=XhPH5b4ygGOMC)u`G=<8a{SSKm=_%;LZ=v+#TV zIziz+#i%eg80NSS=7qgBKu!2Y&u!m)F_wW-kqL&3OyT$-3 z^7Wg&`XLIK%a`-Fjbzo8*+nj}m5d$?M(X79p?z?#C&rt?Yk;#`Sf91a1*~UBNYHfZ zdjx1nl-D(Wk>h=d$s`*Chb&eKYW=`dNhi|}njItI=*|uP@ak1&Ndy3++AnmlE>+3e zK)qBO*Zb{Z@)KjbpF{7}O@S53IY8W>XkG^Vj7TA6^gMr(cZk=1frUV4P9VMH@q^{3 zQpJ>zlP});VFGknxu;;ve|#yAQBDh%&=g>30TO5`Hn2!g#z@(D6EGV62jb(G(!{JC zb}DeN0?^~d{%lPPLvVq>^&$tNW1}U%r{Ozcl6wcn9&Z_dt|aCD?Ohlcmw4VJsyz9; zbEVbN9U^EDjL1*v$-OH;qQv6>X)Q(XoUHBk*CPUOR{~s$rg|W|k0J?zzBr$fm z?I$(U>yDRC7ZCjS8-5bPF7U1}C>ycQ5`2&Hgii$kti-nUv`&P2lLS2kk9qArzy9KU zSg-LFIn*rXU%*U3n3mm^`rcrVek8BLp#IoDAujZ3vk9!g%fTjl7pL?h^tK+$2JN$y zH$M-| zW5c#Pyr?0iS@$btNHez5e|S5TKUajz-rl5QYE(gj?nx?dW}IS+`4syws|n!=VEI0t zSdF{BOlLlvw7Z^NkGrnoy}nMXt$MwITRm{U@FSbwrF)D|Hs9Zs zUjUKvC%}|vDD48&#f1|WYU!?XT`h8y5W1d^I3LL-&G^_W`M_E$6{VhfnRE)278Y~% zrRy4a-zkz)?Ps6t(9zJeNClY>1fKifeg_UfurxEIe0jQqDHL;9U(6`u0bKV7&=P4H z-8-t&dHw}F-DExO6Jlvr?EwDOjTKd@h;I5eLx$Od&C=iBIx;rksn`E_<9{8U|2Av? z4#1~nc=na-P8Nqi6E0jXrcm)c&?pW8H#U)3%Z`v-l<2*L9{kvN0FYuSMh>Emd`FXB zs2E;LY#Ft`;ofDKwQi1eZeMi^24T1zQYRNkR`Kxi>Ukck=dx`wj}WzJ)jb}kGZm+2 zdN}kNe(Y1EZfZizFgBi-nrz)HlTCzyGJsKloCv~~{;1Wq_>V#0bmqj}ite?*D+_hz zwi z<%EiCB&@10u0Q!nP!B(xH*8qxJ@p^AyMYINBO^QOR9JGyHzga7WAh;^_+|NbZGpOV zbTYFR@ieZpz%9Bpnan{Z#xhk|?|CZ9^JM$nV;%bSE}-CbUchaqOUOb#bjAn|3!ZI) zWtb@K3lY>c8F!(N!}{Uo_WqMd78Z|3Uv)+<=hnmvCs_FGuOLVpvYqm)$XQRdybiNd z(dzD;q(7erSiC}bt)|1Vl&u=m5vrdxWgH%T>OeJNMd48v@1fa$0H!-QVekP-V~c#| z%gTO|+O@15k33HM+Y1po&aX&%6N^MKby`$*B$Sr>yn^24pY8iwIoxm7q|6;?=RaKz zec~1L*`6xh2cTW^{E^Sy{{HHlZ8I1vO> zfN2+}4L$GeLyKlg->&(CRlL1FW<;fHkOq+4isZeP=INx?zGV1L*c>?0v&Ap-#f zUuW`YsYbafToPV$pKIiyGLMArwvgN}L?#)-#h#{vRvid~5`SpT`FzJ4j~Z=r)URqJ zCIQSn*4s+S_F=9*9=IR4aIKlvT(gV76u;yJ5nl7lg}|6y=IyqN=o9y9$8 zJ51_=#AGD@2fNq)395$N?y_gU|;&VF1Y8SPwN%nHBXD@ZJGaL&kfA0x5$VHs zXWC5NT}DxlDAqMhFR$AYy-oJ*$Mp}GsZ_r|Zt6E5Nm4SlwZGk{x}PM#Olpn&!ZUmZ zz=2p4m;#F>GD5()APli_4sc{iWkT6|<;xw(K@v2^n`6cYIg#*}?<{07f_KUQ3`6zS9+z5~neO@@sGOv&3L9%q$F>};gbIZ0RVfy4D^|t|;KKADfRUS{v>zi_2 zY`V^rt$`IdcT3V9$OZ$w@{eN{6)w8~U9wV`(3VG>O(;rnx1RQKJhd8VWVXJGU!Y{1 z(on8|^4uLjdt~6|@|v2=`EiqF3WoSe4D5Aon_-GovTbvPOOa6m3YE|{+g0}8aX=n$q|ot=uwyCs0twNF!e72wA)L%BQ?Kz3(9%VZT52q-+7r% zN^XS>5wPsE#TPRLd~8brPgC2lULxzi^YmIb14m>}pK^&_lK079hi>)6KFm0OMT_1A zP?EcL6IsZ(56B|~?3c9H*e}^Isd#ZAnAz8upDKThj9)Rg1`bWO z@tVQpU}l#);mzMG*qevD*oIyga}msB4huKmdrsie0v7&`Wpwc)|Po^fdW^W zoAZbDCs*@(-EzpL6*p)Yp3+x1#0U@zuir4E$=JjYCk8#tIwa)6b&8gZjX-PWDR{Ih zNko44p6i)|v=qM;{u*zRU1!c{#h9-jSyR$?7qII7%h4$fN0d6{zpqNL4iSt5p~`Jt zq~Z$+*_%*XHJQ?s#;?1rEg#cs-}GyirUc|Qb)`0DQSn}WbzrGv9IJrCtrw4DL#l?Z z9mo@L9rsv+-@<^<;7kmltJ2TQ+=9(Cv>-wq;<^6P{`AC+gN};^4YT6ifqi(bhuOO` zM3e0kc_075x{rf3F6;6fg|;jWHqhPoqF>;(thxCW39ANf$Z&(k5^h9f3?BXOsJOWH zmS#0mk21wxVW>a($#VQB2Fq^}D{X&U&rwR}&Zx}^LmHgTp+ zijFf7c7tNcG`cJ-CX|+7Gl6S5VJzlg6ziMOYI+&|s~GC43cEh~}E02ti4j z>-1Z%aBbU{x%lnmQXbh0Wn;01u;A$`QF%wW7CPm$zsZ}c1loXgMrH$|lRJ?re;}`Y zxGaC5%bwiYQK<0abm9Ud(RG3t#I%*Yc)j8uH+*p)BW1W-n_?oA5nitlwvTO8uN72g zm45k1Roh~YTYbIp*usBEqe)_T$T(R{F2m`4BR`j?@2XO(qEX6%hfsKv8$=0>HCVct z2pC*sbF&Qki=!Imx|K&h@3cQ38&WK%!C_g3(W)L_FI9S|a;^8_uX;kE{Gt5M81X$| z)FREgO-)qe=mgX7l*Eu|5zIs@tG@8hDn^Cw6e=^7;v=V*98!h9&=##+L)U^SGmw`A zI?bsWq0!OG9~vmL65|uux_8Lt(l~g7peIVcL!Yi-SbM4m0qG5MOq7HbF+C z${fWZz(Bp~r}Xp)vBn117&byu*K9)2PX)IzTdY}wtl;{G=JK8}d5=r!gc3?~b2&|u zZw?h0As9TnGv4JKbW=N-05gOS3A~nsOfiFAT-Fg&{+Y*4i7IQ7?4yL=?cJ~XHO+qb z9;zXRv0m%#Vx>l8(3rAN@4&bV*wtkn3};MCH~Ns|0+&m%&K)j~Y9oixH3nRxRPzN} z7?ln&I7W@3(w6Cs1BY4X^U8g95p6#_@jo=6T~bnZGNf^6x-!ojs~TL3%!LXu zipeR`M%1UMPHYUuJddEIa;v0Qc~&tyq;gHo$he@IUI^bNetdgRU^OdKUc%^cOVn<6 zPYVVDEZgHM8H+)xCKDk?@N@%hLzbj`m&c|e$0Wbxgo^`=JjoefBR_3Zhnd>g+QyLA zO4+w*#qd)ML*NAo$L_*&f!RA3e!ix+rY$m&Q=S;5$@e}mDM&BZUK%N4Us=eicO^Ps zI&>Ze5cbF@(o};qhS_z&@|DS&U+OAO_onv_8k2UbKf%6?}*)8+!P9SNn~v^$pl-Un=*S zn(;}W6HrJCe(264J?G=z=^XP&q{p|L#klS>^YXxMtB8&V9)u)OIcN9qoBQa-$B^CY zT{Z1No-E{$_HmC__*ofb_E6nPrFgmFskTQqdb=<(JJ6LfCNK6qRAUHYeAPI~2fg5e z28=Kd@_D)m{WxAM_wNuK5{oY7g|ai!8on_2$Vlw0zaOx-9h^reWT&sj{fwC>Q6!!6 zO~V|a9}HTI5Xe`JmD(I=W*(mO;2h#wqm2K>+*3l<4Z7+e>Zq=} z{??D7D!3kZ(?;6*pjyq9{!lcipnNjZ?P+xf58r`U_E9ziRPMyk)|fL zqe2E%;T`jY(dlD^Vy_@1`(~La>uel6Jf4k1-V5!z#eiINnxh?>#f1D4Q+xrUHMX5D zFCHN`?@b%?+J}5#@KpH<->F#o{7uN7c-FC2nh?*GjvqMp3FvM_5!gufIwLCMpHeFB zXA(dGlk^>Qed8djvLD%!o$dUl!@qMwvvO!nPM-_INipvXyJ}Irqmhl6Tv$(}cU`n3 zR8^#q?@f)|^_yUA3pIE*?ObfR#O27gyC^$cGx~L#NbWvdd!E_eGKSG}g3Cz`)LsaG zn5G~cTBeuH2m?XwQz%1K*{mN}?f18aao9U4|jiLwHH+k|MBRHbZSU7Hog%v*jsi1LuOg097)|1Le zN4c|O$70+ClVNz^>jI;Qn)QUH6-Ty1Y6vytULi|mcBun8mf8s;{&gNGg&Mocc$*O( zN(9qn(Ntmf4`B*5OGe7f4Ki%?<%r4NR3b7VTEMUBkF-oT!q;4k`Q$dbSj_U1X@%UF za*1s6i;k8>TcSJ1vQAWiYsIT5B1lv!wrVlTP&sA-`>v9+Z2p**VYpm)nrKE(OSb%G zk!O}ritwrbxA@8%pNYOgoq4aBRHFh#Y_^JyXxAvObl;`sYADi~i>}ROxJiDih!}ID zH=)?|-0FK;o|NK&G6J+e$Ov7NeEJ9}$AyD2ti+s5h(I(jD)Elzv%>u)4CNkbFLE7s z=y0Q{0FTT9aJ8j1ql1O0E`=^ zJDr`XD!yp5J`m;fh~E?iq)dYT)4*XDjZu9>o4x1nttT`)L(~=3>b>vYa!C?A=vtam zx786zj+ez5*}+rR=`vNg*e-Zni^q&``6V5v(;B6+0h zlz}|t5+CHptMzN${=!XV`RMxx_I?7Z1-wPB8Om9qcG{$NP#{p@j-=_Wq&ec;Mp92Zu~dsDZ}LuD^?s)bFvh&1Cdf^d2ZbiJ`;uEs?GFo%bBY#eonWzaNz zh8gt*33Vk5X9?XrFj+R2=S)>ryVMo~IUIFAp@o_U z*vC;7=$G{6JfT-??RVtnw0Kwl$*!(O!E(~c@qKNKLW9SA71~f#)J^ZqhI80tHJ_lq ztVm>NCau2KIODLV>&iz@s*TTuMkR&`o%@UFxWlejBYhjD4d=#+fLRfmi4Y6+kzv&C zds%-;%ebhlJo9HN#MG=Zs1bKYyD?SO>;12hd)wnGxUiV4+flQ0%qj%cWSXZ{Kp(N6 zfn#2hTulAyE*$oB>mZ^SiggPqdld|SZ|XYaLDAL9a3YMuDGTZEilbe++Ln#VSyR(*t!VDC~LVxC^pBJ_A>gm~UwBa}Z zG27Hps;}I{eM>oRyS+0&B%hNepPc&zBm`yuknrF2P7E;Fe(Aj|h{fAtds;ikt*pi5 zvfflq+UhV}q~mC!AQPA$7nwO!ol+V{kS;pq8Pu5H!hYtAfiQ336n9G}Ec)?NcL;fA zB_V9R43xSHjY*xFY0Cd>EwOO^g5G;Bo1V|Omdq85!l#GhnSG5L5EexZ*wnL)1Z-8i z*hu%}m~s#wI%Wr1G(H|BC_(qoU@yO3Da4)GMoy>Kkw-{IR`CzMMxY;v*QvFIO>bnk ze|XKPH2~X1)-sdlPX^)`x{a#|^*n{M#NV>h49fti@22Coz%o2rZh^v{b;NK8H zY>(0;dGQV-YIGa&vtvfx8KC)NRZ1qQIFp(=>36hB7Apm@=qG?E!Z(tUQ}Vh#nAMV( z&2>i8m0*{cX0Q4+);G&iNje?n+em6gVc4w`zKoDP^6=4;6&8o#SpuGOX>@fzZ!FD1 zkfd1O+IYr~?>TG`d$A(Bqy4AXK5mCHgqQIpJOW2HvNvwuZOJ~XrN>Zd*D!*h-qU}s_^zZh5Q}o_4jz%>$#MfM6bx2K64&W>ZU*&x4d2VpLbYPq9 z6St|}z0u-4?)y$`H*SO;(G=x4DKd+7)kCskek_^wz;5?6Xm%M-k%kZKho*11sxa92i!h85RvqCPq7~e9Bw$41*L)$Y?v>e7U4o_bH?`}>a*@RQe&dK5}?ic^YPE{)w+p*_` zegVa|xOtt;_7gwSFKs^~4G{S?aajwq3_oU2lv?lvSoYVtXCRC9eb?Yil4G`DJgq*@ zJET^=5#slEpMfvXCLs}+7ni%{$X1D#ooT>ND~QXXCm7Oy(dD9(_b(%bf#?Ej+KQah zyni+hFIXaFx^rGDYc%6eCi}57`Zt)f@hi56BD;j={){Sb654}qLklz^;sbw8xL>jz z8c(|ULBu1dl@3*1ZP>wAkZR*%Ta4kR&J`+%-K7^t5jtXJ{8(^{I?5Q4q zJeQka<;tt^c_^C42o$JU$XWtGPmIqXS`$HS$5AZuI>r-Wa^D!9hoL7re>1AxDS1P;=_)rOGIIRY@zLaW z#yu31P5w2_ONS1Yx;T@-(Nh+H7e94`kF8pA8(ite^~r^R+Dcag8Il9s#TWOwidfY^bJRsx%SVYR>R-#i>U?1@N@WRr` zEesMR*o>$lH`BB~$w>*1A^F`2|iI2S_7afQlgDQLwEkc1@S%!=uD@{WJ9P9&8;*n1&SZts;q&AKUV6j;(>WXow&#`?;>CBKE9LUThA*k= z*{S*bxFQ?eUQ;SGY(A1;HYd7qW-?}Z2`s^YBHX^Nd}dh8F^%Z{FKHU2qvuuz#va_u zuuez?aQ_3WJ=2}p@P zQM5miIf{Msk4}qbiH>%8`5-)z1M}qfUuV9FD%01w+~}g?VR9Xk*qnCkpZKSqpKtqe zU|x8W2a3vF zrXMR}@WM)thb$kTHh>6dyyaagnRV+?Z%u=0fx}(d$tvE}$mjYNWZk;yq^3-s_rDLd zoHpExMK5f5c0VL`D&0X|N-{r3#0+sT_0}7c3jLDbcblRpm-SqG`|Oad1p_oFx+-EM z+orvWX~NhPbeOgpDX_Abjc$P5RP{4Nfmdo=0(}5-AEOxQHH(BVs4>d44VKnaFF?j* z5P4<~by(Y$3Fxl=N0W7q6ga+&DIcnexM}jWaB3Iuk?}=`RxUPfF(p>G)X!fq_klyp zb?#;|0yLC9dp%PY0fORw@1ciIz)le}Ha~|V=wJT0h!gy3tb!X!W%kXeX`htNg|^ri zTmtfwaLuDi3fO0674h%GRkNO^tvV&;Lk-abYC)4*2R4`Tu_8S*$s?|50~UL{`Lh$! zpa@hNxlJA5n$J$&Hn73U>3bZtoI`(S{wgetp6?9pCdQjoW;KHY0CisB zDD0<}HZ{REVuq}geMhVGlDS*NqG=Uh58_9_Oisaw zX^V5Wi}h2c#DqlkdBlS=5!H_SuPn(QYdj^nk`=`ekW&Ay(J#UJ;(y0%!uoH3i12@? zi>#vrr!Qj{9r9wobzbrn;Y;tH-zug+t-eFh&E_a#}wmz)U*yVFQcfD3#wSz#?k-l7+k8!L>hI)sQ86i3@ zhKU0y99c}Q#K!G7^zCgR>^U}jP}a^$pjsEQQd=i19M8+)PNB+%{792d=Bpp)Fz)?2 zCGO{6tw*wmBp(#nR3TPsWPNpBVg!8<%HgMfu7@Tg`gxC;D{#n#yxs#U+7R*3Zz#dP zL!(x$LWy>jFNWY*fCL#w?u4uTmKTGZf?9Gu8|?lh(bl99$_@(woR*gz;+ zCvW>Tv>xzuzBZT2;51rH_u^XdE}a4AjG^03w108>mRpQSVqwd>@R%MPiS%-eGzJK- zC8wQk$1SiBV%UsLd;CIdHS?29V(K!9*tiaKnc80NzW5tBW_;quJ$0sX?-Y1@Kb9DM z_o$Wms&}X!9A`DgWTHf*aqYP;G8`ex=z>$Uue3goOlFCn+szT%Y`H3dfTAe6vgpPj8TmFC}YQl!ybY zvFVhS_dYuZLy$l%-5TN5IS3U(F@a1@XP{knN2SzU$Pg~nWea2HYfD1Z7SLMGy)hD| zq6xj9=T-wOs}Vx@hxWDe9~b^;Sw@<+WU`N`D>rpN{Ek&+!)I&d1YE%OEWv;z=EyH) zSyYY+*Da(v=241>dkkL@ub2iOoxx+g_gr}>XI>AGMZrRQ7|P&Z-TO(pmE*pL`dN5C zw>z>NLex=tRJQ-~Uk&(j;tE`ZYhG!gge7Cr3 zuqd8%E`x`HjPEn~W^Uh+#|3OgXd?e9&bU(b5t{*R{XAo_(b+b;0_aiUj8=&#o|ya@?)IT{O;4f?fTJ zxRI>;pgI8rO}OO8rxYA!d^jcb%>AL?Fz>no0@)L&Vp)Dmq&7$j5Z?72xh&($shSIo z$j0#1u0NR2`P;C}XY{LS^-jGGZ^eZt z;xwC&&~5>tA!4--uR3`YtQt4^<5%w<(vPMnV6e!BTw&@rJ)|xtFwy?xoeqfbh0t4$KV;gdDYKoR;*1x zI9#c!y5m?$V|;MEnTk$%sF5MK(Yob%57GiM#q({*T%OftW&`)9_7AgyhD{A8`on*+mZm zG3j?@QdH_1t3@MChb#7MJ3~aMY@`Jk+=a)EUq%W03_i(yRzli2#S&or!Z_Q1SE~Iz zTy;KCl^O(|yk5*;jtJ>ecc7qp_}@o)&Y4#KHcXE}QEYe@nA( zu1xgPre|_HHR%n640V=x)rM}LYvSeegoveEAK~UPcw|S9`3~6liAsLHP%VY;jou?` zZyT&$eO8dBbhN+Lnx6Q3Sazja^BJouxu$^38clyT(0s_`;wiht3f* z4^^d*l{U|NSsH`UArRr(ExbD(PnjMF%h4jxS<#Zwl$0R3go>oJSaDjRxSIaIuYB^^ytWC}5Jsj#w+dj)9|vEFzw-=Wq5U1%wFl_SiPbNe{UW-0(+#b8xz=D(XhxWjDoE|BJo% zjB6@e`#?to6=@10B2B4EmyR?Q1nDr+J4z8kKza}22n&{| zk?T~tvoJWr($c{19d955Y3|@`_q6_fZ?EX=D-0GBoIm6k5a?DI`SN=8fq$Zsxhi@h zXj^F4(U{C`cMXxfS=?PFa)4}5=jKmdYQQH!Tw$hj43y5Av`c1}#Lj*iHVQ`LHTWGP z;t*kk!t0q*Pb~s1_Va?}WZ#Q^H3qWc!54}){c9!*6|5vH^x&6xDi_Os+fHd4XxJO~ zwQe$Jhy-T{?=7%`kDspf-kV3knbP2)|w`7`*GM)Gr@cYm`~Uy{rSHQZpDj*P1r#|6z$ZbK=Er8SlOO zuf@;Zg$^jTqsF`kjY2yXU=o76;2W zSc}s<)jFIFLx57=eS|4^whEglwYND8>r1mJQ4rRuVn|UA^zhl?5jdCXOL%dsuX$OM z(An7QN`rGRdUVIos$%Aqx;TFbXWXAYw4~ptB9>+CymHp!fe~;fEW%n^8J{G5Ge7TKjn9yib(Lq!EfdLN{-H=6k@NFAj>~ctusv4ZkzZ#lz`-<|rWe)mOr7~Ugz!x^D zE+XbzF?^-+ixi~kbnxeenSgZZ8Rf^(5!Fq!c5!~*;Cr+2CMO#Xh1D7iLq>aHyG8e; z`Uf}+)00h=vP5dClJNn>K0brbV6MN%b~+IQAwFi&1^t!GNGx+6 zF3MUBxlj3(!(H|`n5XdRF^IHh8}HT_I`?oqkqmt4yZtN;^{E7?(}zg%O}{MbMw+Wz z97XEVt~+EE8oe4Mzmq$St~KxGkoE9CbWfHP0~<;zB`J-e4wk&MBXWJA@zu{@)^Ej| z$^!On($bXV)rN!*5Y3qxrZTa{ykH>F{Z%+Rh^l`6qF5?IF<-!*M9`2n$0hBC-mBF^ z#!v4X3OQ&&?t9!%5meVk+!P%-8toL)Jn1`fXtUSpu5`JuHLlK}V@z^vRjZ6WVW7ozlEU<9b#~1}Ci+QJqeN@jsrG zpkwT&n_O+uXXyJ2AK%n}@hv;3G{hS7-9R@_dZep#aaV7SmcuyO*V79Hj@YT3`JDykXdk#}j%h|Mbw~Iz zsp_CDixuk&Pwet!=Nw{g6^a4C4?-*6aKE@fmR=!U#m#3)5Xu!y7QkKTtbS8g*I(c% zj*giqxog4l*}Ld%tmRwgjb*O2UzDm#$gvO-=NCyf|35(3HEC%!67QUUfAP zG)CqW9!!QmP&TG&-ZI)j(SQ2JFqYB1go<(jtFxMRKIK2|7WdgLCht z-~nqb7WoAGXN|c~V?Y(M$Rc8;29dKx4V$Xvb2Vh@$FAI979Az%$xx`a#DbY+;o*5L z8=oYrPz^zOFf8pU@Hxi-KcvV8AV6~6SF^Y;>E1<=lDK8o3K@4GsAYMPR{hl1#}>fp~#itES$ z=IkqId=F^U@1^d)yeX1f6>3i=x%qpD)tnoy7}_(TI54(;J2{z4*iIGoL*2LV$lls}wi&of_K$9UWF+^e@H;lm^$~)BKABR{9 z=DBGh)b;i@*;)OxBa#Ld#1D0HFP9;uJkk!%Zra6;8t2Bf5A_*P3ylJ~@fmf_ z@u{kiRmbg>(w6244NhfFw%%DScn!CBf|O*F>}mx`5gX0#n`0#Q0Y|BaoNNf|Wm}(Q zmejAndo);_)tfpa{CjyIfg;97^bVt54 zafDx^H5ZCvPW*fgxGW6W9G@>D6!pCNYEK5C4#j=VS{KCTe92N;tPGv?R^2hPC%>RQ z+?=+~S&KKYs2cjxwEJUTQ@mghY93I#A(-Rb@PC|_*-V(klClm)omZp&OPFpYXW_k^J>eYLurOi^oFY*b^z z=RXwJx7{C2)u)kcnI*}VQFm}6r-FQWI!f83aC)GJPccS4I=vZG-j6*o-95#EJti`&WaoayCilxHJ?OSiEdMALA1NqMKO8i%`Xu?&foP6Iyqfwco>j+G|%)l z>iL0Dl7i7*LMPnT*?{lHj7J(<$tIUaz)0Dq8Im^f1a}8d+-6h+wq`hJI`-68pAe9S zUzNhNtX5t3T%b1QwZ=(RWa<(K64=QfEXJ7!T|Z^F;rOg-oOuy%O^xdDBSx4jC@G}p z^#z&D#de$}(s<9)iVsx-z8=gnsq^|U`=UKZ+;+GHL9%ZODx_T0)J7d_VLa;t|iE6$Lwjm(s zz@+c>45tWKU)a)jReINgSsnheI=12SsI^TAgYHTl*y$-Z)CNa$Ua5QU+EQj4i@9OO z0}y6zWk+c1T4q7ck!rJP+CU$FlvLO4Ua_gTpr;oYPS*stEtOAIIbtdfABK#GHn}e7 z6wSWuoc=J7-(zH$TPCzFobEWW_P7L^IxZwXrc8(+g5nR@&{O&Zup>;$sfwk7_Jl;HMk zF}p0-T+XapVYO;aG}W2mRdJHRgHiW_@apeMkRM_?*WN(ImFExoyjZwawP4`-!~zHX z7}ejQPqSM&KJ!HC<_mO~**mkysEM$Scgt=J4HsqMK&>bR|F(1(7AeFuW86a!=P`x_ zNYm-M6@d}EsntoHOPA^JtNk520i&d_1-$n!39o9|uIdoxsAaz6{VL&6jhT;jACotp z#Tz!n`&qvQNt3uh&ibjYFo2e-*FYyt zpltTDNU(Ca>pamv86gQ#(V-($J+}NFwKSZaGkyvxYbt%rUr{odRyhQ;+h~AHvap3s z*{_|^Po#?!D#Jmy{QUt@E|9XOHyN3?gYn(HJSOFYk1dGWz^c|l@t)1GM^&lPf@rLu z7V>@%;z?LbF0DEIl85QNhSfsDY?;xedZ4{J^qn8ty6S5+#tQA2F~1FA8($MSg_)~r z@e`Kc5u^M&>b_E5e@mO+!GrgF6}dXPWpxWV`Jzt-G#wjPyxJ)}i`L$9G~>PcKFe#$ z1$@NY9bJy^G`?6cmn27(J`Ty2N-U$7g>!%1Kt2eNE_`p~!E+-(KqPN3F`YV=_m*>b zi9^0voZ%2;ZQD9u$qap$-0-zC%lHLpib`j($q%l!34Kx4u72j;F>4v7L)ge-ik>|W zwUC|#`==t%xzuX#MK!zNjzlr$w}t#N*;(A;k)u&=k$H#gNxEto=jby%n$gt6_lqmHU(_oERSeq5pAV zK>R(mE&HP}tulx0Es8%1eWqkh){QuC6K}4EcZ(A;W#6T7tQd1ppO2_7G)VYemwl#s zW3Y5wNNe!s7f834f#QutpS%6#E9G|JzI?l;Ua>a=d&1L6pXR~TRm4ga@C2W8>eokr z2{QG3i(6f+(e48bLlj1~8GnfdTV1?0HI8?_9rD!0*Q?sHs6oPU*DHN8uZDmdL5j}0 z_+NAkS2EtmYSFnlz&wk(q9*KzusF#>_K|^xYP`b*yNuv7zlT7ofeudAX8Bj+Dqh8j zI=6o8dDgCK?e>T(Z&dWg&VZw-)%;O@ssg)DnpD-Uu_o$+DFv^h*zXROr-QMi5T~Yu z?nCIKg@|ezmpRvEQ+I1M?#QU^Ao5wrptnl+$7SQ#3_a)zyFxhb>t``k_jY8`WHV}e zCB(uY`>1yo>GmEoesXzlnLHR35bg!*zH#}GEFu1IJyaPNIi=794U(Ee#!FR-iq0R6 zP%iA!qz4O^0T$uG2px@8PjzXyM)++=bbs(XdPSMm)#zf4bUd4B$&opt+!jLBeV*fR zI__bdNL%!qXVp+ZnG8Md8BjO1c;($v+>B7pCZh8k40yc%*kNkk@9oy&T-Y)fZp{Cr zP9uBYLu8nGzfimcT%!>HDBFe3NebvB*n@wrEb9nl`95MUUmcp9t$?q~Ig}mS%^S<_ z-SGJQvd6FpqAm39V4CRwue~+C?(c?i#jBJ)=%HtTzQaz0B!Tx(iZc?~dn=1D#oI>2 z9#Cpl5GmL7BkAR$c_l$8wc%cI3Gt+lsRAyLpXzWc;xS~aW`zHKb?PpDhtYVJk3j|} z;A9F{hRh!@T<^4a#6MZN;bmyvEZ0=_&BAxwo6^y){^0{F`<|v^lPmGKbcGJi*gjSR zP#a$ets~aqQ$V3f8^T}Inpa^ff7p=rzEm&uEuXa4>htQTyaB_^V9r4GApW_Uu}`!L z2v~7?XTG`pgHTzZncYKAk1Nf< zZil&7y$>rLvrQvux#@v3pFuT_Q);?rXSX>SI)lG}F=8OuMY)5ZjK#sI`I7ysBWqq* zTQFB%ds&dv5Eo&b_V`|e=~V=`4cTNaw*d*R5anZ`bm7|SOAqwd3%9{#Oe2hgh=8hXz3dYal(b}`ta9NiGa%3SfBYbW9>!z+cd{`vaM9`Ei?^j`q+=0UW)DTGM0)i;9k~Se?Rh_e_I6WZ=r&!ax3o~iHos^`-}YtjlEERu>!x} z@cC5aw6U$%Jn#ohjT;*~mb!qUEf+cg^b~WyuJxofiA;Lj>pp?ca19YS?u`W3CH^{J zAaQu=?Cg}BHSx0{FgFa4`gBwz$oBV?C@SqP36NBY#-)(={1wrw8^bl08HAmA+^3M; zw|TRIS=W|?fWcTjLLYWC2ln+?r)JAHe)|~75MiObM|p0fu9eLHmKGJ7<2CvO#Z~FsW zz8Ss&#Ds&$a3Qp_L9B-A75}bh>LOnjF7asvgerE(*nXwjk^M}WVD-BHhEB>3S#XSd z+gqkZ&nO1ord!z$Genmt@T@cc`3k{4LrVqRc=t(bJ-J7ujL-7*L)|Stp9+^EeFc8z z&{>}Um-qj7pIl9L7dv0QdGQ3<3VkO*LI!G9MMrFz}Z09r95z z@U|y@=y((oX7|6E{g1C>KfcW_j8}frilXocX3^O&KUzh`mu4SU$|zuprF6Ny@;Yq) zKMnW~6wFw1uf(2-J4<qND1J5^6zS%;SmR0 zA#1mJJ$_d-$CS57@g1uX|GPsWs%vxMwERXKqC;Uyy=CKd1hrDjjsRVzd-h1&h|0C{ z34B4e?5<}vv90l>M8yz)@MuEkQs4xk8EAYI@}|BefYaO_9Vs06;@=1U*Ed(yLJeIR z>NyDS;N-L^t=DM%zH#Nz5#W=qC;b~3WZAH_Sc=4=9s515Jh!@yH%5M{Hziri-)s5) zclYqyORCv{=N&oB3uT;nVhCyBGm4bb*>m@<018#oD_ZC;Q*MWS>$=9xCBDW>J+2ca zdrl$Sy|DLSJRk8;cVV2=IVRcqC~|7yO-=J*|IxGvS`6yd?WU=0`w!|;UI9>wCGe3% z)GYx~w$le2?>J;vctltrRzBFCkc~e$?9l1W+nKk}-Q)0Q+Vq5fAiN*&~U} zqwRoHM{6Smw;%*XqLRiK(BR6+Jn^7YO(}_tPJZJSR?=>Mz8?H+ElS+__plcCAwwwY zVspkt7O>b^3kM`+UQG8Gu#JK8dbo5Aj_uyVt<$l725Y|^3<;F6GETT!tJ3(*)h)bh zV=bVAEVhqY8hx5SbF|v8w7;3CQW`bBEVACX-4_RzU07=fRtrxPcPSjX z7Ki$MVVOoR{%^Sr9cSAAfT@`X#zm|JtcNvVJ&C@q`yC8?J}r6Jdp|j869Ldsj=V}1 z2;Nd+PAXzIbzNpmfu$Wh7f?jZS1nEYjSz=UbF|>#AheiB&}J$ny6GTs0hS8B={^F4 zoE7VVPa_QldWUwRTSz6KTCKr0qq&7;G;$w>!cO}^(f#VDx|vtl9Hw`!XoNo6P@ z&rLaDX2wgB-(xA=S9MaOuGaWYC+B;EfmO)?{==I6I*(yKH38F-WxQuM$BXjgXUAr*ru#i*Li9QAQ+r$t1Hg;Mhr zFw6xTN#?Hpog&1AknNTuI|yVogwQ43xT)Q4)d$p%lffxB9jiX_{=JAZt7)xDcXfz} ziu<~w)f{mMOSxJfl^=X6w*qu`H=r=Ol{$1rEp}F`SC_s=YSL)dtEb%Qj!g*OF=Sv3 zbU{}8++)*}Vz_R_`ed-LdH)emRk-eot`;O?!|z&i98Qup0<@L28_7jwlzNaO;?J(b zB5XJh0cCfqKlE>1A-XSz6pIlLA|SJKWqw0?wyr4_xL{66-BqOd@wt`&w4A`B<$%n^ zcQ&*t(gUHt+G)-EbcL<_c~daXJY}1e4|KT1u@FhR?%w{ka^ygNaPvL2IK)rhX!KMM9^ORLcQFHgN7mq^JLySNbVx9F7P>yMp#=1r>y( zQ2f5lCBk%(>#TA~V*V2=*OWpB6v?9u9^Vt2cMUNYKe@ zs|m|__#Y96B92t&=pq~CmOFQP1XbCGL^s762)&Mq=8Q+5LvSULZ9^;kBDa4~9LOWg z1IFI9ui^{+4_OPPVKU*ddp~9QMV^dcX_JU}e3MoN_zb5-%if0C7yx!9S`VPm+69pH z9-hBk)B|5Wd4SR9nLJ#B*Qu{xdzwTTHBta*Z=^8l-H^<{r!#0Sz?=I?HF5SvE@myh z@1fQGd5XN2ayYT4L&3Jn)@q(I51g8udAOyYYKR9K9pDRetp|(}y^Bd1izrF`c=X6z{p)%VGO(~0 z5|sg2F_(^d(5>q?oe;rpxz*>ZaLC+$8Inb4WMWlDc4;Xz-a;I`++c z{$Vv8PXSbb?<*M~?^Lr}C2(WUcvhmw-ukH96WvU`1XfVmX(p_JK$jG5NqGT#0x4sK z%^e7}eDVe3mSm$)sQBhq^g>I)xDTg-L3(02aa!$YSEV9A;D4hYB*BTThZc}yq5o14 zj+WKVI}u}{usfFO2cO%I%19GrI9Kee7CBIf5OgmgV_}ii4haD)mX%VZL(E0DB&|CM zLz#>W)nIy1WQO8aEPIm+5~?<=Ltaa`EGCM|)p_fwWxZADxkXe-#g^DBm%9DI`a^h+ zCmDa337hP*tV#jg`soMU6}k|b(cMNd|@>|J6FAwC__N`bX zHP2L@b@Q050&iD(p+fe?sa(6#X(0r(bQ9n?%wO#AKegCS+=!z)+>JN{3|B2(ODRxw z-FOriLl3=#2QUE{vSQwIv$_3XP~JH&`KKI`pK*x+0A-$)O6clw?=I9Sv|3Fk`P0$Y zC`RC7;L-+{74qJBdof z*}Sr((}@<*a$ro%9S<_a=Y?PwNSM7vtRw?NmWxl67mscotK*F*hZ=I`NfS5Ag4Pe- zuLltCf^c<2Iq8F$NQS@>`v%@$CKt?K9vX)Ll8beS6!0^N+f~npV7N#r;UaFjOJHR; zUEE4uv_|Qc%a;LOXfm`q6|;ulff9H6MVfY?(92s}z%Cw|yVej+#{{mtCH*(;4AC4D z_!_07mPyZkh3gr_go(6&<(3bfvoW`XcE(xY@61?1=j|C%N+K zSTG+eE-8pe##Qq-KA7Esq21hO+#Alx!b>7W{1+Njl_HZMyWIjUKrbdkf?6cW-$D7% zE*00nw}1ESpO7H5Gt1hLSF6TrAwVbBVnCO zIHpGb!EhmKt3Zr5m@5JDVM(MBH*c=Wk|pE*MhG?)hmcUzeFSD1%L`eI2-yMpQ3hzt z6Wp?=4F)7D%{0Jl-+2iT8^{+V+oyd-u#`|OJE^G%Z62RdKhVvz$}cYG#4 zu88h18e1}kflW9waO{7JKs`ujmJMD(3%j!5GFpNm=rD~CoPag>1sF2Bqs-B~lTG{* zTLrdCISMsv2lB5D)o9=H>^=nliAQTRq3{|ZTzMqhwmIkBJWKfd> z+}5J_I=CB)DdB5!vxQrAB+#_03tRzgCYWp?todvkeuXY%^qF|#oWQu#qHSi)%0r2+2l_wz@t0&1=i-n&;YHpyD|Q`}RE=IYo=`l&w3>`uX@Z%=oYe77h;y4FAcs7Fp4t>{{c`yQK5+u@GQ(j0)L77LU+$< zb(~P!>;^V+G2GVN*xBDCiqHn4!8N-e#`i}Obok;v-bR_{4RgFTz+w7+y(^(G=`3Qd zerV$=ut#Hmm5Uu`O|o*R9{xzD3PWeVb;87?lw?0dJLvuR#+Gi7SSmR6EwBn8Mx5(( z3fLT9pE$@40lzq%6;nUl+zTtn8G3mP4{RP%sOU&zzdX8hjK<_=dd~q)byj2N(m6rG zXm-d(Wu6se{=FJ{ZFVUi98~hv|7dCPeEzNxJwORBs z%w^OF40%uu=8EugRXZRxdz>0jbhvq8kt^@7NOQ?4>kbR9Io5pMuE<`u9DL&4aY#D{ zIF2;3=hA*UHsv_7qA^~t?ZBKca@xjLFV@GHI7D6+c1K0CChE0NQ12X-PRLXe3vc5{ z(h^r5)jGSp%N9^6Y3!cL0(cny${(|0H3{>y#p{P0@PQ#5vX<{e0_kPh&Q0SIh(~#7 zVXe2Gpy`^XLpFis>#E26sc@1%)fxJQ`iB&T!kIdujIo&k8j$#rgJI{ZKn4T|<}3nd zcfv#z#bYnBDSYs}peHxen=B~LTG!y_S}Mms*4+Dbz%7K3E0q_Ukvs3%AE<4f`?Y~t zR$IKX0p*>2&lSz*vOLUK777=h!|cPo8sc|qAPaj%t&c42 zIP?5h2)>ht)8c*3Aoj1O_Wqw3vkSlkl`O}!+6CRi-U2AtGXh;a-P-_VnNplF?Ozg5 z@9R*6jB?0N>q9l}RFrRA^E7iY@Wao=aV0AOhFzgv!L6;EsS($bJsT$Si>f*ihopPpC-K8H9Js}f3E&Rqpe0Rf z(n&HS7hNf>TN__BmC|V5gLlsVuGcIhRqvNfs~cX zE0XWcUX|8SH$NBE6p=#{-WLB+#Pag)ZRspx={UsGP$$%pHGLNmDamj5}ne`H9 zDK`8GTBIN4Z(23t5PZZbg>2$1U2`CUHiW%)2F9RN8}cdqn7r8_$N`PS{P~D3RDo2N zWbl#WIcC3Gh0hez%PL?!^NQydk~$72_pEjkEf-%|{tezV>1DoHOtvu z*7{p&ehX!!FnXSm70_MbeK59V5{F=RC@@_G(TLyGuw|{h8Nlt@1mA;4vOoTtM5tVVMtQ-F zK+W}Ee|=3Zb=B^EbljE4G89r%5(mRIuKSL82agXkcH@)T`X1)|?eqgPl<@-=c6vQ! z`TUPTTh-}Dp1p*tFQ++Et}=zv$kK2CnM;m?{t!N$j1iFl)G_-Cd=mk@k5HWWo1S`P zEcBHH*n8(>o{{OaEBk%%PW>@8(i|Ij0b+m#kHxc-6wh3+g!6+(C$D^ykpJzpKGRQU zp2Xvy*_|Jw0Njk>P>9dh29Tl(=0q2&3!sW`Kid?jaoQB zVQPu=zc~wte(Uq^u2k?A2P<)GZjYnEJwi#T_ArTIZ?fh=`vtCJq5{l;3lP)ue;)T( zfk~={CUWM5Z1e3|hU{MUE#&_JYkv_{R2hJfQ)$}A*LBP0E-(;d&acCVDlh@^xvl*A z#82rVF{zcrr2TKpmwzycL<`y!U@a%)Ue_!C

T4G+PVgvzU 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