Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@verdaccio/local-storage

Package Overview
Dependencies
Maintainers
4
Versions
156
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@verdaccio/local-storage - npm Package Compare versions

Comparing version 2.1.0 to 2.2.1

20

CHANGELOG.md

@@ -1,5 +0,23 @@

# Change Log
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [2.2.1](https://github.com/verdaccio/local-storage/compare/v2.2.0...v2.2.1) (2019-06-30)
### Bug Fixes
* **build:** error on types for fs callback ([774d808](https://github.com/verdaccio/local-storage/commit/774d808))
## [2.2.0](https://github.com/verdaccio/local-storage/compare/v2.1.0...v2.2.0) (2019-06-30)
### Features
* **build:** standardize build ([eba832e](https://github.com/verdaccio/local-storage/commit/eba832e))
# [2.1.0](https://github.com/verdaccio/local-storage/compare/v2.0.0...v2.1.0) (2019-03-29)

@@ -6,0 +24,0 @@

2

lib/local-database.js

@@ -363,2 +363,2 @@ "use strict";

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiTG9jYWxEYXRhYmFzZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwicGF0aCIsIl9idWlsZFN0b3JhZ2VQYXRoIiwibG9ja2VkIiwiZGF0YSIsIl9mZXRjaExvY2FsUGFja2FnZXMiLCJfc3luYyIsImdldFNlY3JldCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VjcmV0Iiwic2V0U2VjcmV0IiwicmVqZWN0IiwiYWRkIiwibmFtZSIsImNiIiwibGlzdCIsImluZGV4T2YiLCJwdXNoIiwic2VhcmNoIiwib25QYWNrYWdlIiwib25FbmQiLCJ2YWxpZGF0ZU5hbWUiLCJzdG9yYWdlcyIsIl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcyIsInRyYWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsInNlbGZfcGF0aCIsInNlbGYiLCJzdG9yYWdlS2V5cyIsIk9iamVjdCIsImtleXMiLCJhc3luYyIsImVhY2hTZXJpZXMiLCJzdG9yYWdlIiwicG9zaXRpb24iLCJiYXNlMiIsImpvaW4iLCJzdG9yYWdlUGF0aCIsImZzIiwicmVhZGRpciIsImVyciIsImZpbGVzIiwiZmlsZSIsImluY2x1ZGVzIiwibWF0Y2giLCJmaWxlTG9jYXRpb24iLCJmaWxlMiIsInBhY2thZ2VQYXRoIiwic3RhdCIsInN0YXRzIiwiXyIsImlzTmlsIiwiaXRlbSIsInRpbWUiLCJtdGltZSIsImdldFRpbWUiLCJfZ2V0VGltZSIsInBhY2thZ2VzIiwibGlzdFBhY2thZ2VzQ29uZiIsIm1hcCIsInBrZyIsInJlbW92ZSIsImdldCIsIkVycm9yIiwicGtnTmFtZSIsInNwbGljZSIsImVycm9yIiwibWtkaXJwIiwic3luYyIsIndyaXRlRmlsZVN5bmMiLCJnZXRQYWNrYWdlU3RvcmFnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZUFjY2VzcyIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJfZ2V0TG9jYWxTdG9yYWdlUGF0aCIsInVuZGVmaW5lZCIsImlzU3RyaW5nIiwiZGVidWciLCJwYWNrYWdlU3RvcmFnZVBhdGgiLCJMb2NhbERyaXZlciIsImdsb2JhbENvbmZpZ1N0b3JhZ2UiLCJkYkdlblBhdGgiLCJkYk5hbWUiLCJzaW5vcGlhZGJQYXRoIiwiZXhpc3RzU3luYyIsImVtcHR5RGF0YWJhc2UiLCJkYiIsImNvZGUiLCJub1N1Y2hGaWxlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUlBLE1BQU1BLGtCQUEwQixHQUFHLGtCQUFuQztBQUNBLE1BQU1DLE9BQWUsR0FBRyxvQkFBeEI7QUFFQTs7OztBQUdBLE1BQU1DLGFBQU4sQ0FBa0Q7QUFPaEQ7Ozs7QUFJQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQWlCQyxNQUFqQixFQUFpQztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUMxQyxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRSxJQUFMLEdBQVksS0FBS0MsaUJBQUwsQ0FBdUJILE1BQXZCLENBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBZDtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQyxtQkFBTCxFQUFaOztBQUNBLFNBQUtDLEtBQUw7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxHQUFpQjtBQUN4QixXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsS0FBS0wsSUFBTCxDQUFVTSxNQUExQixDQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFNBQVMsQ0FBQ0QsTUFBRCxFQUErQjtBQUN0QyxXQUFPLElBQUlGLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVHLE1BQVYsS0FBcUI7QUFDdEMsV0FBS1IsSUFBTCxDQUFVTSxNQUFWLEdBQW1CQSxN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YUFBT0EsYUFBUDtBQUNEOztBQUVELFdBQU9GLFNBQVMsQ0FBQzFGLE9BQUQsQ0FBaEI7QUFDRDtBQUVEOzs7Ozs7O0FBS0FTLEVBQUFBLG1CQUFtQixHQUFpQjtBQUNsQyxVQUFNVyxJQUFpQixHQUFHLEVBQTFCO0FBQ0EsVUFBTTBFLGFBQWEsR0FBRztBQUFFMUUsTUFBQUEsSUFBRjtBQUFRTixNQUFBQSxNQUFNLEVBQUU7QUFBaEIsS0FBdEI7O0FBRUEsUUFBSTtBQUNGLFlBQU1pRixFQUFFLEdBQUcsbUNBQW9CLEtBQUsxRixJQUF6QixFQUErQixLQUFLRCxNQUFwQyxDQUFYO0FBRUEsYUFBTzJGLEVBQVA7QUFDRCxLQUpELENBSUUsT0FBTzlDLEdBQVAsRUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFJQSxHQUFHLENBQUMrQyxJQUFKLEtBQWFDLG1CQUFqQixFQUE2QjtBQUMzQixhQUFLMUYsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLSCxNQUFMLENBQVl1RSxLQUFaLENBQWtCLCtFQUFsQixFQUFvRyxjQUFhLEtBQUt0RSxJQUFLLFFBQU80QyxHQUFHLENBQUNpRCxPQUFRLEVBQTlJO0FBQ0Q7O0FBRUQsYUFBT0osYUFBUDtBQUNEO0FBQ0Y7O0FBbFMrQzs7ZUFxU25DN0YsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG4vLyAkRmxvd0ZpeE1lXG5pbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuXG5pbXBvcnQgTG9jYWxEcml2ZXIsIHsgbm9TdWNoRmlsZSB9IGZyb20gJy4vbG9jYWwtZnMnO1xuaW1wb3J0IHsgbG9hZFByaXZhdGVQYWNrYWdlcyB9IGZyb20gJy4vcGtnLXV0aWxzJztcblxuaW1wb3J0IHsgSVBhY2thZ2VTdG9yYWdlLCBJUGx1Z2luU3RvcmFnZSwgU3RvcmFnZUxpc3QsIExvY2FsU3RvcmFnZSwgTG9nZ2VyLCBDb25maWcsIENhbGxiYWNrLCBQYWNrYWdlQWNjZXNzIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmNvbnN0IERFUFJFQ0FURURfREJfTkFNRTogc3RyaW5nID0gJy5zaW5vcGlhLWRiLmpzb24nO1xuY29uc3QgREJfTkFNRTogc3RyaW5nID0gJy52ZXJkYWNjaW8tZGIuanNvbic7XG5cbi8qKlxuICogSGFuZGxlIGxvY2FsIGRhdGFiYXNlLlxuICovXG5jbGFzcyBMb2NhbERhdGFiYXNlIGltcGxlbWVudHMgSVBsdWdpblN0b3JhZ2U8e30+IHtcbiAgcGF0aDogc3RyaW5nO1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgZGF0YTogTG9jYWxTdG9yYWdlO1xuICBjb25maWc6IENvbmZpZztcbiAgbG9ja2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMb2FkIGFuIHBhcnNlIHRoZSBsb2NhbCBqc29uIGRhdGFiYXNlLlxuICAgKiBAcGFyYW0geyp9IHBhdGggdGhlIGRhdGFiYXNlIHBhdGhcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnLCBsb2dnZXI6IExvZ2dlcikge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuX2J1aWxkU3RvcmFnZVBhdGgoY29uZmlnKTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuX2ZldGNoTG9jYWxQYWNrYWdlcygpO1xuICAgIHRoaXMuX3N5bmMoKTtcbiAgfVxuXG4gIGdldFNlY3JldCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYXRhLnNlY3JldCk7XG4gIH1cblxuICBzZXRTZWNyZXQoc2VjcmV0OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRhdGEuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgcmVzb2x2ZSh0aGlzLl9zeW5jKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBlbGVtZW50LlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHJldHVybiB7RXJyb3J8Kn1cbiAgICovXG4gIGFkZChuYW1lOiBzdHJpbmcsIGNiOiBDYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmRhdGEubGlzdC5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhpcy5kYXRhLmxpc3QucHVzaChuYW1lKTtcbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaChvblBhY2thZ2U6IENhbGxiYWNrLCBvbkVuZDogQ2FsbGJhY2ssIHZhbGlkYXRlTmFtZTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZXMgPSB0aGlzLl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXTogJHtKU09OLnN0cmluZ2lmeShzdG9yYWdlcyl9YCk7XG4gICAgY29uc3QgYmFzZSA9IFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5zZWxmX3BhdGgpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gT2JqZWN0LmtleXMoc3RvcmFnZXMpO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBiYXNlOiAke2Jhc2V9IGtleXMgJHtzdG9yYWdlS2V5c31gKTtcblxuICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICBzdG9yYWdlS2V5cywgZnVuY3Rpb24oc3RvcmFnZSwgY2IpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBzdG9yYWdlS2V5cy5pbmRleE9mKHN0b3JhZ2UpO1xuICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aDogc3RyaW5nID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlKTtcbiAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBzdG9yYWdlUGF0aCwgc3RvcmFnZSB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIHBhdGg6IEB7c3RvcmFnZVBhdGh9IDogQHtzdG9yYWdlfScpO1xuICAgICAgICBmcy5yZWFkZGlyKHN0b3JhZ2VQYXRoLCAoZXJyLCBmaWxlcykgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgIGZ1bmN0aW9uKGZpbGUsIGNiKSB7XG4gICAgICAgICAgICAgIHNlbGYubG9nZ2VyLnRyYWNlKHsgZmlsZSB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIGZpbGUgcGF0aDogQHtmaWxlfScpO1xuICAgICAgICAgICAgICBpZiAoc3RvcmFnZUtleXMuaW5jbHVkZXMoZmlsZSApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZmlsZS5tYXRjaCgvXkAvKSkge1xuICAgICAgICAgICAgICAgIC8vIHNjb3BlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVMb2NhdGlvbiA9IFBhdGgucmVzb2x2ZShiYXNlLCBzdG9yYWdlLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IGZpbGVMb2NhdGlvbiB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIHNjb3BlZCBmaWxlIGxvY2F0aW9uOiBAe2ZpbGVMb2NhdGlvbn0nKTtcbiAgICAgICAgICAgICAgICBmcy5yZWFkZGlyKGZpbGVMb2NhdGlvbiwgZnVuY3Rpb24oZXJyLCBmaWxlcykge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgICAgICAgICAgZmlsZXMsIChmaWxlMiwgY2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVOYW1lKGZpbGUyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZVBhdGggPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSwgZmlsZTIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYCR7ZmlsZX0vJHtmaWxlMn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHN0YXRzLm10aW1lLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhY2thZ2UoaXRlbSwgY2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZU5hbWUoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IHBhY2thZ2VQYXRoIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggZmlsZSBsb2NhdGlvbjogQHtwYWNrYWdlUGF0aH0nKTtcbiAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvblBhY2thZ2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHNlbGYuX2dldFRpbWUoc3RhdHMubXRpbWUuZ2V0VGltZSgpLCBzdGF0cy5tdGltZSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgb25FbmRcbiAgICApO1xuICB9XG5cbiAgX2dldFRpbWUodGltZTogbnVtYmVyLCBtdGltZTogRGF0ZSkge1xuICAgIHJldHVybiB0aW1lID8gdGltZSA6IG10aW1lO1xuICB9XG5cbiAgX2dldEN1c3RvbVBhY2thZ2VMb2NhbFN0b3JhZ2VzKCkge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0ge307XG5cbiAgICAvLyBhZGQgY3VzdG9tIHN0b3JhZ2UgaWYgZXhpc3RcbiAgICBpZiAodGhpcy5jb25maWcuc3RvcmFnZSkge1xuICAgICAgc3RvcmFnZXNbdGhpcy5jb25maWcuc3RvcmFnZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFja2FnZXMgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHBhY2thZ2VzKSB7XG4gICAgICBjb25zdCBsaXN0UGFja2FnZXNDb25mID0gT2JqZWN0LmtleXMocGFja2FnZXMgfHwge30pO1xuXG4gICAgICBsaXN0UGFja2FnZXNDb25mLm1hcChwa2cgPT4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gcGFja2FnZXNbcGtnXS5zdG9yYWdlO1xuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2VzW3N0b3JhZ2VdID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZWxlbWVudCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICByZW1vdmUobmFtZTogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICB0aGlzLmdldCgoZXJyLCBkYXRhKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNiKG5ldyBFcnJvcignZXJyb3Igb24gZ2V0JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwa2dOYW1lID0gZGF0YS5pbmRleE9mKG5hbWUpO1xuICAgICAgaWYgKHBrZ05hbWUgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuZGF0YS5saXN0LnNwbGljZShwa2dOYW1lLCAxKTtcbiAgICAgIH1cblxuICAgICAgY2IodGhpcy5fc3luYygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIGRhdGFiYXNlIGVsZW1lbnRzLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGdldChjYjogQ2FsbGJhY2spIHtcbiAgICBjYihudWxsLCB0aGlzLmRhdGEubGlzdCk7XG4gIH1cblxuICAvKipcbiAgICogU3luY3Jvbml6ZSB7Y3JlYXRlfSBkYXRhYmFzZSB3aGV0aGVyIGRvZXMgbm90IGV4aXN0LlxuICAgKiBAcmV0dXJuIHtFcnJvcnwqfVxuICAgKi9cbiAgX3N5bmMoKSB7XG4gICAgaWYgKHRoaXMubG9ja2VkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRGF0YWJhc2UgaXMgbG9ja2VkLCBwbGVhc2UgY2hlY2sgZXJyb3IgbWVzc2FnZSBwcmludGVkIGR1cmluZyBzdGFydHVwIHRvIHByZXZlbnQgZGF0YSBsb3NzLicpO1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignVmVyZGFjY2lvIGRhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrb3V0IGxvZ3MgZHVyaW5nIHZlcmRhY2NpbyBzdGFydHVwLicpO1xuICAgIH1cbiAgICAvLyBVc2VzIHN5bmMgdG8gcHJldmVudCB1Z2x5IHJhY2UgY29uZGl0aW9uXG4gICAgdHJ5IHtcbiAgICAgIG1rZGlycC5zeW5jKFBhdGguZGlybmFtZSh0aGlzLnBhdGgpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHBlcmhhcHMgYSBsb2dnZXIgaW5zdGFuY2U/XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLnBhdGgsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhY2thZ2VTdG9yYWdlKHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBJUGFja2FnZVN0b3JhZ2Uge1xuICAgIGNvbnN0IHBhY2thZ2VBY2Nlc3MgPSB0aGlzLmNvbmZpZy5nZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lKTtcblxuICAgIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2VQYXRoKHBhY2thZ2VBY2Nlc3MgPyBwYWNrYWdlQWNjZXNzLnN0b3JhZ2U6ICB1bmRlZmluZWQpO1xuXG4gICAgaWYgKF8uaXNTdHJpbmcocGFja2FnZVBhdGgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoeyBuYW1lOiBwYWNrYWdlTmFtZSB9LCAndGhpcyBwYWNrYWdlIGhhcyBubyBzdG9yYWdlIGRlZmluZWQ6IEB7bmFtZX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlU3RvcmFnZVBhdGg6IHN0cmluZyA9IFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKHRoaXMuY29uZmlnLnNlbGZfcGF0aCB8fCAnJyksIHBhY2thZ2VQYXRoKSwgcGFja2FnZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBMb2NhbERyaXZlcihwYWNrYWdlU3RvcmFnZVBhdGgsIHRoaXMubG9nZ2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhlIHJpZ2h0IGxvY2FsIHN0b3JhZ2UgbG9jYXRpb24uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRMb2NhbFN0b3JhZ2VQYXRoKHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZ1N0b3JhZ2UgPSB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnLnN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgaWYgKF8uaXNOaWwoZ2xvYmFsQ29uZmlnU3RvcmFnZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFsIHN0b3JhZ2UgaXMgcmVxdWlyZWQgZm9yIHRoaXMgcGx1Z2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpID09PSBmYWxzZSAmJiBfLmlzU3RyaW5nKHN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBQYXRoLmpvaW4oZ2xvYmFsQ29uZmlnU3RvcmFnZSBhcyBzdHJpbmcgLCBzdG9yYWdlIGFzIHN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnbG9iYWxDb25maWdTdG9yYWdlIGFzIHN0cmluZztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGxvY2FsIGRhdGFiYXNlIHBhdGguXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQHJldHVybiB7c3RyaW5nfFN0cmluZ3wqfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2J1aWxkU3RvcmFnZVBhdGgoY29uZmlnOiBDb25maWcpIHtcbiAgICBjb25zdCBkYkdlblBhdGggPSBmdW5jdGlvbihkYk5hbWU6IHN0cmluZykge1xuICAgICAgcmV0dXJuIFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKGNvbmZpZy5zZWxmX3BhdGggfHwgJycpLCBjb25maWcuc3RvcmFnZSBhcyBzdHJpbmcsIGRiTmFtZSkpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaW5vcGlhZGJQYXRoOiBzdHJpbmcgPSBkYkdlblBhdGgoREVQUkVDQVRFRF9EQl9OQU1FKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzaW5vcGlhZGJQYXRoKSkge1xuICAgICAgcmV0dXJuIHNpbm9waWFkYlBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRiR2VuUGF0aChEQl9OQU1FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBsb2NhbCBwYWNrYWdlcy5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgX2ZldGNoTG9jYWxQYWNrYWdlcygpOiBMb2NhbFN0b3JhZ2Uge1xuICAgIGNvbnN0IGxpc3Q6IFN0b3JhZ2VMaXN0ID0gW107XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZSA9IHsgbGlzdCwgc2VjcmV0OiAnJyB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRiID0gbG9hZFByaXZhdGVQYWNrYWdlcyh0aGlzLnBhdGgsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgcmV0dXJuIGRiO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gcmVhZEZpbGVTeW5jIGlzIHBsYXRmb3JtIHNwZWNpZmljLCBtYWNPUywgTGludXggYW5kIFdpbmRvd3MgdGhyb3duIGFuIGVycm9yXG4gICAgICAvLyBPbmx5IHJlY3JlYXRlIGlmIGZpbGUgbm90IGZvdW5kIHRvIHByZXZlbnQgZGF0YSBsb3NzXG4gICAgICBpZiAoZXJyLmNvZGUgIT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlYWQgcGFja2FnZSBkYXRhYmFzZSBmaWxlLCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIHByaW50ZWQgYmVsb3c6XFxuJywgYEZpbGUgUGF0aDogJHt0aGlzLnBhdGh9XFxuXFxuICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbXB0eURhdGFiYXNlO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2NhbERhdGFiYXNlO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiTG9jYWxEYXRhYmFzZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwicGF0aCIsIl9idWlsZFN0b3JhZ2VQYXRoIiwibG9ja2VkIiwiZGF0YSIsIl9mZXRjaExvY2FsUGFja2FnZXMiLCJfc3luYyIsImdldFNlY3JldCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VjcmV0Iiwic2V0U2VjcmV0IiwicmVqZWN0IiwiYWRkIiwibmFtZSIsImNiIiwibGlzdCIsImluZGV4T2YiLCJwdXNoIiwic2VhcmNoIiwib25QYWNrYWdlIiwib25FbmQiLCJ2YWxpZGF0ZU5hbWUiLCJzdG9yYWdlcyIsIl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcyIsInRyYWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsInNlbGZfcGF0aCIsInNlbGYiLCJzdG9yYWdlS2V5cyIsIk9iamVjdCIsImtleXMiLCJhc3luYyIsImVhY2hTZXJpZXMiLCJzdG9yYWdlIiwicG9zaXRpb24iLCJiYXNlMiIsImpvaW4iLCJzdG9yYWdlUGF0aCIsImZzIiwicmVhZGRpciIsImVyciIsImZpbGVzIiwiZmlsZSIsImluY2x1ZGVzIiwibWF0Y2giLCJmaWxlTG9jYXRpb24iLCJmaWxlMiIsInBhY2thZ2VQYXRoIiwic3RhdCIsInN0YXRzIiwiXyIsImlzTmlsIiwiaXRlbSIsInRpbWUiLCJtdGltZSIsImdldFRpbWUiLCJfZ2V0VGltZSIsInBhY2thZ2VzIiwibGlzdFBhY2thZ2VzQ29uZiIsIm1hcCIsInBrZyIsInJlbW92ZSIsImdldCIsIkVycm9yIiwicGtnTmFtZSIsInNwbGljZSIsImVycm9yIiwibWtkaXJwIiwic3luYyIsIndyaXRlRmlsZVN5bmMiLCJnZXRQYWNrYWdlU3RvcmFnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZUFjY2VzcyIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJfZ2V0TG9jYWxTdG9yYWdlUGF0aCIsInVuZGVmaW5lZCIsImlzU3RyaW5nIiwiZGVidWciLCJwYWNrYWdlU3RvcmFnZVBhdGgiLCJMb2NhbERyaXZlciIsImdsb2JhbENvbmZpZ1N0b3JhZ2UiLCJkYkdlblBhdGgiLCJkYk5hbWUiLCJzaW5vcGlhZGJQYXRoIiwiZXhpc3RzU3luYyIsImVtcHR5RGF0YWJhc2UiLCJkYiIsImNvZGUiLCJub1N1Y2hGaWxlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUlBLE1BQU1BLGtCQUFrQixHQUFHLGtCQUEzQjtBQUNBLE1BQU1DLE9BQU8sR0FBRyxvQkFBaEI7QUFFQTs7OztBQUdBLE1BQU1DLGFBQU4sQ0FBa0Q7QUFPaEQ7Ozs7QUFJQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQWlCQyxNQUFqQixFQUFpQztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUMxQyxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRSxJQUFMLEdBQVksS0FBS0MsaUJBQUwsQ0FBdUJILE1BQXZCLENBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBZDtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQyxtQkFBTCxFQUFaOztBQUNBLFNBQUtDLEtBQUw7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxHQUFpQjtBQUN4QixXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsS0FBS0wsSUFBTCxDQUFVTSxNQUExQixDQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFNBQVMsQ0FBQ0QsTUFBRCxFQUErQjtBQUN0QyxXQUFPLElBQUlGLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVHLE1BQVYsS0FBcUI7QUFDdEMsV0FBS1IsSUFBTCxDQUFVTSxNQUFWLEdBQW1CQSxNQUFuQjtBQUNBRCxNQUFBQSxPQUFPLENBQUMsS0FBS0gsS0FBTCxFQUFELENBQVA7QUFDRCxLQUhNLENBQVA7QUFJRDtBQUVEOzs7Ozs7O0FBS0FPLEVBQUFBLEdBQUcsQ0FBQ0MsSUFBRCxFQUFlQyxFQUFmLEVBQTZCO0FBQzlCLFFBQUksS0FBS1gsSUFBTCxDQUFVWSxJQUFWLENBQWVDLE9BQWYsQ0FBdUJILElBQXZCLE1BQWlDLENBQUMsQ0FBdEMsRUFBeUM7QUFDdkMsV0FBS1YsSUFBTCxDQUFVWSxJQUFWLENBQWVFLElBQWYsQ0FBb0JKLElBQXBCO0FBQ0FDLE1BQUFBLEVBQUUsQ0FBQyxLQUFLVCxLQUFMLEVBQUQsQ0FBRjtBQUNELEtBSEQsTUFHTztBQUNMUyxNQUFBQSxFQUFFLENBQUMsSUFBRCxDQUFGO0FBQ0Q7QUFDRjs7QUFFREksRUFBQUEsTUFBTSxDQUFDQyxTQUFELEVBQXNCQyxLQUF0QixFQUF1Q0MsWUFBdkMsRUFBZ0U7QUFDcEUsVUFBTUMsUUFBUSxHQUFHLEtBQUtDLDhCQUFMLEVBQWpCOztBQUNBLFNBQUt4QixNQUFMLENBQVl5QixLQUFaLENBQW1CLDRCQUEyQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVKLFFBQWYsQ0FBeUIsRUFBdkU7O0FBQ0EsVUFBTUssSUFBSSxHQUFHQyxjQUFLQyxPQUFMLENBQWEsS0FBSy9CLE1BQUwsQ0FBWWdDLFNBQXpCLENBQWI7O0FBQ0EsVUFBTUMsSUFBSSxHQUFHLElBQWI7QUFDQSxVQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWixRQUFaLENBQXBCO0FBQ0EsU0FBS3ZCLE1BQUwsQ0FBWXlCLEtBQVosQ0FBbUIsaUNBQWdDRyxJQUFLLFNBQVFLLFdBQVksRUFBNUU7O0FBRUFHLG1CQUFNQyxVQUFOLENBQ0VKLFdBREYsRUFFRSxVQUFTSyxPQUFULEVBQWtCdkIsRUFBbEIsRUFBc0I7QUFDcEIsWUFBTXdCLFFBQVEsR0FBR04sV0FBVyxDQUFDaEIsT0FBWixDQUFvQnFCLE9BQXBCLENBQWpCOztBQUNBLFlBQU1FLEtBQUssR0FBR1gsY0FBS1ksSUFBTCxDQUFVRixRQUFRLEtBQUssQ0FBYixHQUFpQk4sV0FBVyxDQUFDLENBQUQsQ0FBNUIsR0FBa0MsRUFBNUMsQ0FBZDs7QUFDQSxZQUFNUyxXQUFtQixHQUFHYixjQUFLcEIsT0FBTCxDQUFhbUIsSUFBYixFQUFtQlksS0FBbkIsRUFBMEJGLE9BQTFCLENBQTVCOztBQUNBTixNQUFBQSxJQUFJLENBQUNoQyxNQUFMLENBQVl5QixLQUFaLENBQWtCO0FBQUVpQixRQUFBQSxXQUFGO0FBQWVKLFFBQUFBO0FBQWYsT0FBbEIsRUFBNEMsa0VBQTVDOztBQUNBSyxrQkFBR0MsT0FBSCxDQUFXRixXQUFYLEVBQXdCLENBQUNHLEdBQUQsRUFBTUMsS0FBTixLQUFnQjtBQUN0QyxZQUFJRCxHQUFKLEVBQVM7QUFDUCxpQkFBTzlCLEVBQUUsQ0FBQzhCLEdBQUQsQ0FBVDtBQUNEOztBQUVEVCx1QkFBTUMsVUFBTixDQUNFUyxLQURGLEVBRUUsVUFBU0MsSUFBVCxFQUFlaEMsRUFBZixFQUFtQjtBQUNqQmlCLFVBQUFBLElBQUksQ0FBQ2hDLE1BQUwsQ0FBWXlCLEtBQVosQ0FBa0I7QUFBRXNCLFlBQUFBO0FBQUYsV0FBbEIsRUFBNEIsbURBQTVCOztBQUNBLGNBQUlkLFdBQVcsQ0FBQ2UsUUFBWixDQUFxQkQsSUFBckIsQ0FBSixFQUFnQztBQUM5QixtQkFBT2hDLEVBQUUsRUFBVDtBQUNEOztBQUVELGNBQUlnQyxJQUFJLENBQUNFLEtBQUwsQ0FBVyxJQUFYLENBQUosRUFBc0I7QUFDcEI7QUFDQSxrQkFBTUMsWUFBWSxHQUFHckIsY0FBS3BCLE9BQUwsQ0FBYW1CLElBQWIsRUFBbUJVLE9BQW5CLEVBQTRCUyxJQUE1QixDQUFyQjs7QUFDQWYsWUFBQUEsSUFBSSxDQUFDaEMsTUFBTCxDQUFZeUIsS0FBWixDQUFrQjtBQUFFeUIsY0FBQUE7QUFBRixhQUFsQixFQUFvQyxzRUFBcEM7O0FBQ0FQLHdCQUFHQyxPQUFILENBQVdNLFlBQVgsRUFBeUIsVUFBU0wsR0FBVCxFQUFjQyxLQUFkLEVBQXFCO0FBQzVDLGtCQUFJRCxHQUFKLEVBQVM7QUFDUCx1QkFBTzlCLEVBQUUsQ0FBQzhCLEdBQUQsQ0FBVDtBQUNEOztBQUVEVCw2QkFBTUMsVUFBTixDQUNFUyxLQURGLEVBRUUsQ0FBQ0ssS0FBRCxFQUFRcEMsRUFBUixLQUFlO0FBQ2Isb0JBQUlPLFlBQVksQ0FBQzZCLEtBQUQsQ0FBaEIsRUFBeUI7QUFDdkIsd0JBQU1DLFdBQVcsR0FBR3ZCLGNBQUtwQixPQUFMLENBQWFtQixJQUFiLEVBQW1CVSxPQUFuQixFQUE0QlMsSUFBNUIsRUFBa0NJLEtBQWxDLENBQXBCOztBQUVBUiw4QkFBR1UsSUFBSCxDQUFRRCxXQUFSLEVBQXFCLENBQUNQLEdBQUQsRUFBTVMsS0FBTixLQUFnQjtBQUNuQyx3QkFBSUMsZ0JBQUVDLEtBQUYsQ0FBUVgsR0FBUixNQUFpQixLQUFyQixFQUE0QjtBQUMxQiw2QkFBTzlCLEVBQUUsQ0FBQzhCLEdBQUQsQ0FBVDtBQUNEOztBQUNELDBCQUFNWSxJQUFJLEdBQUc7QUFDWDNDLHNCQUFBQSxJQUFJLEVBQUcsR0FBRWlDLElBQUssSUFBR0ksS0FBTSxFQURaO0FBRVhsRCxzQkFBQUEsSUFBSSxFQUFFbUQsV0FGSztBQUdYTSxzQkFBQUEsSUFBSSxFQUFFSixLQUFLLENBQUNLLEtBQU4sQ0FBWUMsT0FBWjtBQUhLLHFCQUFiO0FBS0F4QyxvQkFBQUEsU0FBUyxDQUFDcUMsSUFBRCxFQUFPMUMsRUFBUCxDQUFUO0FBQ0QsbUJBVkQ7QUFXRCxpQkFkRCxNQWNPO0FBQ0xBLGtCQUFBQSxFQUFFO0FBQ0g7QUFDRixlQXBCSCxFQXFCRUEsRUFyQkY7QUF1QkQsYUE1QkQ7QUE2QkQsV0FqQ0QsTUFpQ08sSUFBSU8sWUFBWSxDQUFDeUIsSUFBRCxDQUFoQixFQUF3QjtBQUM3QixrQkFBTVAsS0FBSyxHQUFHWCxjQUFLWSxJQUFMLENBQVVGLFFBQVEsS0FBSyxDQUFiLEdBQWlCTixXQUFXLENBQUMsQ0FBRCxDQUE1QixHQUFrQyxFQUE1QyxDQUFkOztBQUNBLGtCQUFNbUIsV0FBVyxHQUFHdkIsY0FBS3BCLE9BQUwsQ0FBYW1CLElBQWIsRUFBbUJZLEtBQW5CLEVBQTBCRixPQUExQixFQUFtQ1MsSUFBbkMsQ0FBcEI7O0FBQ0FmLFlBQUFBLElBQUksQ0FBQ2hDLE1BQUwsQ0FBWXlCLEtBQVosQ0FBa0I7QUFBRTJCLGNBQUFBO0FBQUYsYUFBbEIsRUFBbUMsOERBQW5DOztBQUNBVCx3QkFBR1UsSUFBSCxDQUFRRCxXQUFSLEVBQXFCLENBQUNQLEdBQUQsRUFBTVMsS0FBTixLQUFnQjtBQUNuQyxrQkFBSUMsZ0JBQUVDLEtBQUYsQ0FBUVgsR0FBUixNQUFpQixLQUFyQixFQUE0QjtBQUMxQix1QkFBTzlCLEVBQUUsQ0FBQzhCLEdBQUQsQ0FBVDtBQUNEOztBQUNEekIsY0FBQUEsU0FBUyxDQUNQO0FBQ0VOLGdCQUFBQSxJQUFJLEVBQUVpQyxJQURSO0FBRUU5QyxnQkFBQUEsSUFBSSxFQUFFbUQsV0FGUjtBQUdFTSxnQkFBQUEsSUFBSSxFQUFFMUIsSUFBSSxDQUFDNkIsUUFBTCxDQUFjUCxLQUFLLENBQUNLLEtBQU4sQ0FBWUMsT0FBWixFQUFkLEVBQXFDTixLQUFLLENBQUNLLEtBQTNDO0FBSFIsZUFETyxFQU1QNUMsRUFOTyxDQUFUO0FBUUQsYUFaRDtBQWFELFdBakJNLE1BaUJBO0FBQ0xBLFlBQUFBLEVBQUU7QUFDSDtBQUNGLFNBN0RILEVBOERFQSxFQTlERjtBQWdFRCxPQXJFRDtBQXNFRCxLQTdFSCxFQThFRU0sS0E5RUY7QUFnRkQ7O0FBRUR3QyxFQUFBQSxRQUFRLENBQUNILElBQUQsRUFBZUMsS0FBZixFQUE0QjtBQUNsQyxXQUFPRCxJQUFJLEdBQUdBLElBQUgsR0FBVUMsS0FBckI7QUFDRDs7QUFFRG5DLEVBQUFBLDhCQUE4QixHQUFHO0FBQy9CLFVBQU1ELFFBQVEsR0FBRyxFQUFqQixDQUQrQixDQUcvQjs7QUFDQSxRQUFJLEtBQUt4QixNQUFMLENBQVl1QyxPQUFoQixFQUF5QjtBQUN2QmYsTUFBQUEsUUFBUSxDQUFDLEtBQUt4QixNQUFMLENBQVl1QyxPQUFiLENBQVIsR0FBZ0MsSUFBaEM7QUFDRDs7QUFFRCxVQUFNO0FBQUV3QixNQUFBQTtBQUFGLFFBQWUsS0FBSy9ELE1BQTFCOztBQUVBLFFBQUkrRCxRQUFKLEVBQWM7QUFDWixZQUFNQyxnQkFBZ0IsR0FBRzdCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZMkIsUUFBUSxJQUFJLEVBQXhCLENBQXpCO0FBRUFDLE1BQUFBLGdCQUFnQixDQUFDQyxHQUFqQixDQUFxQkMsR0FBRyxJQUFJO0FBQzFCLGNBQU0zQixPQUFPLEdBQUd3QixRQUFRLENBQUNHLEdBQUQsQ0FBUixDQUFjM0IsT0FBOUI7O0FBQ0EsWUFBSUEsT0FBSixFQUFhO0FBQ1hmLFVBQUFBLFFBQVEsQ0FBQ2UsT0FBRCxDQUFSLEdBQW9CLEtBQXBCO0FBQ0Q7QUFDRixPQUxEO0FBTUQ7O0FBRUQsV0FBT2YsUUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQTJDLEVBQUFBLE1BQU0sQ0FBQ3BELElBQUQsRUFBZUMsRUFBZixFQUE2QjtBQUNqQyxTQUFLb0QsR0FBTCxDQUFTLENBQUN0QixHQUFELEVBQU16QyxJQUFOLEtBQWU7QUFDdEIsVUFBSXlDLEdBQUosRUFBUztBQUNQOUIsUUFBQUEsRUFBRSxDQUFDLElBQUlxRCxLQUFKLENBQVUsY0FBVixDQUFELENBQUY7QUFDRDs7QUFFRCxZQUFNQyxPQUFPLEdBQUdqRSxJQUFJLENBQUNhLE9BQUwsQ0FBYUgsSUFBYixDQUFoQjs7QUFDQSxVQUFJdUQsT0FBTyxLQUFLLENBQUMsQ0FBakIsRUFBb0I7QUFDbEIsYUFBS2pFLElBQUwsQ0FBVVksSUFBVixDQUFlc0QsTUFBZixDQUFzQkQsT0FBdEIsRUFBK0IsQ0FBL0I7QUFDRDs7QUFFRHRELE1BQUFBLEVBQUUsQ0FBQyxLQUFLVCxLQUFMLEVBQUQsQ0FBRjtBQUNELEtBWEQ7QUFZRDtBQUVEOzs7Ozs7QUFJQTZELEVBQUFBLEdBQUcsQ0FBQ3BELEVBQUQsRUFBZTtBQUNoQkEsSUFBQUEsRUFBRSxDQUFDLElBQUQsRUFBTyxLQUFLWCxJQUFMLENBQVVZLElBQWpCLENBQUY7QUFDRDtBQUVEOzs7Ozs7QUFJQVYsRUFBQUEsS0FBSyxHQUFHO0FBQ04sUUFBSSxLQUFLSCxNQUFULEVBQWlCO0FBQ2YsV0FBS0gsTUFBTCxDQUFZdUUsS0FBWixDQUFrQiw2RkFBbEI7QUFDQSxhQUFPLElBQUlILEtBQUosQ0FBVSw0R0FBVixDQUFQO0FBQ0QsS0FKSyxDQUtOOzs7QUFDQSxRQUFJO0FBQ0ZJLHNCQUFPQyxJQUFQLENBQVk1QyxjQUFLQyxPQUFMLENBQWEsS0FBSzdCLElBQWxCLENBQVo7QUFDRCxLQUZELENBRUUsT0FBTzRDLEdBQVAsRUFBWTtBQUNaO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGRixrQkFBRytCLGFBQUgsQ0FBaUIsS0FBS3pFLElBQXRCLEVBQTRCeUIsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS3ZCLElBQXBCLENBQTVCOztBQUNBLGFBQU8sSUFBUDtBQUNELEtBSEQsQ0FHRSxPQUFPeUMsR0FBUCxFQUFZO0FBQ1osYUFBT0EsR0FBUDtBQUNEO0FBQ0Y7O0FBRUQ4QixFQUFBQSxpQkFBaUIsQ0FBQ0MsV0FBRCxFQUF1QztBQUN0RCxVQUFNQyxhQUFhLEdBQUcsS0FBSzlFLE1BQUwsQ0FBWStFLHNCQUFaLENBQW1DRixXQUFuQyxDQUF0Qjs7QUFFQSxVQUFNeEIsV0FBbUIsR0FBRyxLQUFLMkIsb0JBQUwsQ0FBMEJGLGFBQWEsR0FBR0EsYUFBYSxDQUFDdkMsT0FBakIsR0FBMkIwQyxTQUFsRSxDQUE1Qjs7QUFFQSxRQUFJekIsZ0JBQUUwQixRQUFGLENBQVc3QixXQUFYLE1BQTRCLEtBQWhDLEVBQXVDO0FBQ3JDLFdBQUtwRCxNQUFMLENBQVlrRixLQUFaLENBQWtCO0FBQUVwRSxRQUFBQSxJQUFJLEVBQUU4RDtBQUFSLE9BQWxCLEVBQXlDLDhDQUF6QztBQUNBO0FBQ0Q7O0FBRUQsVUFBTU8sa0JBQTBCLEdBQUd0RCxjQUFLWSxJQUFMLENBQVVaLGNBQUtwQixPQUFMLENBQWFvQixjQUFLQyxPQUFMLENBQWEsS0FBSy9CLE1BQUwsQ0FBWWdDLFNBQVosSUFBeUIsRUFBdEMsQ0FBYixFQUF3RHFCLFdBQXhELENBQVYsRUFBZ0Z3QixXQUFoRixDQUFuQzs7QUFFQSxXQUFPLElBQUlRLGdCQUFKLENBQWdCRCxrQkFBaEIsRUFBb0MsS0FBS25GLE1BQXpDLENBQVA7QUFDRDtBQUVEOzs7Ozs7OztBQU1BK0UsRUFBQUEsb0JBQW9CLENBQUN6QyxPQUFELEVBQWlDO0FBQ25ELFVBQU0rQyxtQkFBbUIsR0FBRyxLQUFLdEYsTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWXVDLE9BQTFCLEdBQW9DMEMsU0FBaEU7O0FBQ0EsUUFBSXpCLGdCQUFFQyxLQUFGLENBQVE2QixtQkFBUixDQUFKLEVBQWtDO0FBQ2hDLFlBQU0sSUFBSWpCLEtBQUosQ0FBVSw0Q0FBVixDQUFOO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSWIsZ0JBQUVDLEtBQUYsQ0FBUWxCLE9BQVIsTUFBcUIsS0FBckIsSUFBOEJpQixnQkFBRTBCLFFBQUYsQ0FBVzNDLE9BQVgsQ0FBbEMsRUFBdUQ7QUFDckQsZUFBT1QsY0FBS1ksSUFBTCxDQUFVNEMsbUJBQVYsRUFBeUMvQyxPQUF6QyxDQUFQO0FBQ0Q7O0FBRUQsYUFBTytDLG1CQUFQO0FBQ0Q7QUFDRjtBQUVEOzs7Ozs7OztBQU1BbkYsRUFBQUEsaUJBQWlCLENBQUNILE1BQUQsRUFBaUI7QUFDaEMsVUFBTXVGLFNBQVMsR0FBRyxVQUFTQyxNQUFULEVBQXlCO0FBQ3pDLGFBQU8xRCxjQUFLWSxJQUFMLENBQVVaLGNBQUtwQixPQUFMLENBQWFvQixjQUFLQyxPQUFMLENBQWEvQixNQUFNLENBQUNnQyxTQUFQLElBQW9CLEVBQWpDLENBQWIsRUFBbURoQyxNQUFNLENBQUN1QyxPQUExRCxFQUE2RWlELE1BQTdFLENBQVYsQ0FBUDtBQUNELEtBRkQ7O0FBSUEsVUFBTUMsYUFBcUIsR0FBR0YsU0FBUyxDQUFDM0Ysa0JBQUQsQ0FBdkM7O0FBQ0EsUUFBSWdELFlBQUc4QyxVQUFILENBQWNELGFBQWQsQ0FBSixFQUFrQztBQUNoQyxhQUFPQSxhQUFQO0FBQ0Q7O0FBRUQsV0FBT0YsU0FBUyxDQUFDMUYsT0FBRCxDQUFoQjtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQVMsRUFBQUEsbUJBQW1CLEdBQWlCO0FBQ2xDLFVBQU1XLElBQWlCLEdBQUcsRUFBMUI7QUFDQSxVQUFNMEUsYUFBYSxHQUFHO0FBQUUxRSxNQUFBQSxJQUFGO0FBQVFOLE1BQUFBLE1BQU0sRUFBRTtBQUFoQixLQUF0Qjs7QUFFQSxRQUFJO0FBQ0YsWUFBTWlGLEVBQUUsR0FBRyxtQ0FBb0IsS0FBSzFGLElBQXpCLEVBQStCLEtBQUtELE1BQXBDLENBQVg7QUFFQSxhQUFPMkYsRUFBUDtBQUNELEtBSkQsQ0FJRSxPQUFPOUMsR0FBUCxFQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQUlBLEdBQUcsQ0FBQytDLElBQUosS0FBYUMsbUJBQWpCLEVBQTZCO0FBQzNCLGFBQUsxRixNQUFMLEdBQWMsSUFBZDtBQUNBLGFBQUtILE1BQUwsQ0FBWXVFLEtBQVosQ0FBa0IsK0VBQWxCLEVBQW9HLGNBQWEsS0FBS3RFLElBQUssUUFBTzRDLEdBQUcsQ0FBQ2lELE9BQVEsRUFBOUk7QUFDRDs7QUFFRCxhQUFPSixhQUFQO0FBQ0Q7QUFDRjs7QUFwUytDOztlQXVTbkM3RixhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcbi8vICRGbG93Rml4TWVcbmltcG9ydCBhc3luYyBmcm9tICdhc3luYyc7XG5pbXBvcnQgbWtkaXJwIGZyb20gJ21rZGlycCc7XG5cbmltcG9ydCBMb2NhbERyaXZlciwgeyBub1N1Y2hGaWxlIH0gZnJvbSAnLi9sb2NhbC1mcyc7XG5pbXBvcnQgeyBsb2FkUHJpdmF0ZVBhY2thZ2VzIH0gZnJvbSAnLi9wa2ctdXRpbHMnO1xuXG5pbXBvcnQgeyBJUGFja2FnZVN0b3JhZ2UsIElQbHVnaW5TdG9yYWdlLCBTdG9yYWdlTGlzdCwgTG9jYWxTdG9yYWdlLCBMb2dnZXIsIENvbmZpZywgQ2FsbGJhY2sgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuY29uc3QgREVQUkVDQVRFRF9EQl9OQU1FID0gJy5zaW5vcGlhLWRiLmpzb24nO1xuY29uc3QgREJfTkFNRSA9ICcudmVyZGFjY2lvLWRiLmpzb24nO1xuXG4vKipcbiAqIEhhbmRsZSBsb2NhbCBkYXRhYmFzZS5cbiAqL1xuY2xhc3MgTG9jYWxEYXRhYmFzZSBpbXBsZW1lbnRzIElQbHVnaW5TdG9yYWdlPHt9PiB7XG4gIHBhdGg6IHN0cmluZztcbiAgbG9nZ2VyOiBMb2dnZXI7XG4gIGRhdGE6IExvY2FsU3RvcmFnZTtcbiAgY29uZmlnOiBDb25maWc7XG4gIGxvY2tlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogTG9hZCBhbiBwYXJzZSB0aGUgbG9jYWwganNvbiBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHsqfSBwYXRoIHRoZSBkYXRhYmFzZSBwYXRoXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhdGggPSB0aGlzLl9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZyk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLl9mZXRjaExvY2FsUGFja2FnZXMoKTtcbiAgICB0aGlzLl9zeW5jKCk7XG4gIH1cblxuICBnZXRTZWNyZXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YS5zZWNyZXQpO1xuICB9XG5cbiAgc2V0U2VjcmV0KHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kYXRhLnNlY3JldCA9IHNlY3JldDtcbiAgICAgIHJlc29sdmUodGhpcy5fc3luYygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZWxlbWVudC5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICBhZGQobmFtZTogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICBpZiAodGhpcy5kYXRhLmxpc3QuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZGF0YS5saXN0LnB1c2gobmFtZSk7XG4gICAgICBjYih0aGlzLl9zeW5jKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2gob25QYWNrYWdlOiBDYWxsYmFjaywgb25FbmQ6IENhbGxiYWNrLCB2YWxpZGF0ZU5hbWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0gdGhpcy5fZ2V0Q3VzdG9tUGFja2FnZUxvY2FsU3RvcmFnZXMoKTtcbiAgICB0aGlzLmxvZ2dlci50cmFjZShgbG9jYWwtc3RvcmFnZTogW3NlYXJjaF06ICR7SlNPTi5zdHJpbmdpZnkoc3RvcmFnZXMpfWApO1xuICAgIGNvbnN0IGJhc2UgPSBQYXRoLmRpcm5hbWUodGhpcy5jb25maWcuc2VsZl9wYXRoKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBzdG9yYWdlS2V5cyA9IE9iamVjdC5rZXlzKHN0b3JhZ2VzKTtcbiAgICB0aGlzLmxvZ2dlci50cmFjZShgbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gYmFzZTogJHtiYXNlfSBrZXlzICR7c3RvcmFnZUtleXN9YCk7XG5cbiAgICBhc3luYy5lYWNoU2VyaWVzKFxuICAgICAgc3RvcmFnZUtleXMsXG4gICAgICBmdW5jdGlvbihzdG9yYWdlLCBjYikge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHN0b3JhZ2VLZXlzLmluZGV4T2Yoc3RvcmFnZSk7XG4gICAgICAgIGNvbnN0IGJhc2UyID0gUGF0aC5qb2luKHBvc2l0aW9uICE9PSAwID8gc3RvcmFnZUtleXNbMF0gOiAnJyk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLnJlc29sdmUoYmFzZSwgYmFzZTIsIHN0b3JhZ2UpO1xuICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IHN0b3JhZ2VQYXRoLCBzdG9yYWdlIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggcGF0aDogQHtzdG9yYWdlUGF0aH0gOiBAe3N0b3JhZ2V9Jyk7XG4gICAgICAgIGZzLnJlYWRkaXIoc3RvcmFnZVBhdGgsIChlcnIsIGZpbGVzKSA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgZnVuY3Rpb24oZmlsZSwgY2IpIHtcbiAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBmaWxlIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggZmlsZSBwYXRoOiBAe2ZpbGV9Jyk7XG4gICAgICAgICAgICAgIGlmIChzdG9yYWdlS2V5cy5pbmNsdWRlcyhmaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYigpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGZpbGUubWF0Y2goL15ALykpIHtcbiAgICAgICAgICAgICAgICAvLyBzY29wZWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTG9jYXRpb24gPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBmaWxlTG9jYXRpb24gfSwgJ2xvY2FsLXN0b3JhZ2U6IFtzZWFyY2hdIHNlYXJjaCBzY29wZWQgZmlsZSBsb2NhdGlvbjogQHtmaWxlTG9jYXRpb259Jyk7XG4gICAgICAgICAgICAgICAgZnMucmVhZGRpcihmaWxlTG9jYXRpb24sIGZ1bmN0aW9uKGVyciwgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAoZmlsZTIsIGNiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlTmFtZShmaWxlMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gUGF0aC5yZXNvbHZlKGJhc2UsIHN0b3JhZ2UsIGZpbGUsIGZpbGUyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZnMuc3RhdChwYWNrYWdlUGF0aCwgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGAke2ZpbGV9LyR7ZmlsZTJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYWNrYWdlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBzdGF0cy5tdGltZS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWNrYWdlKGl0ZW0sIGNiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGVOYW1lKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZTIgPSBQYXRoLmpvaW4ocG9zaXRpb24gIT09IDAgPyBzdG9yYWdlS2V5c1swXSA6ICcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlUGF0aCA9IFBhdGgucmVzb2x2ZShiYXNlLCBiYXNlMiwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBwYWNrYWdlUGF0aCB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIGZpbGUgbG9jYXRpb246IEB7cGFja2FnZVBhdGh9Jyk7XG4gICAgICAgICAgICAgICAgZnMuc3RhdChwYWNrYWdlUGF0aCwgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25QYWNrYWdlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYWNrYWdlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBzZWxmLl9nZXRUaW1lKHN0YXRzLm10aW1lLmdldFRpbWUoKSwgc3RhdHMubXRpbWUpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNiKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYlxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG9uRW5kXG4gICAgKTtcbiAgfVxuXG4gIF9nZXRUaW1lKHRpbWU6IG51bWJlciwgbXRpbWU6IERhdGUpIHtcbiAgICByZXR1cm4gdGltZSA/IHRpbWUgOiBtdGltZTtcbiAgfVxuXG4gIF9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpIHtcbiAgICBjb25zdCBzdG9yYWdlcyA9IHt9O1xuXG4gICAgLy8gYWRkIGN1c3RvbSBzdG9yYWdlIGlmIGV4aXN0XG4gICAgaWYgKHRoaXMuY29uZmlnLnN0b3JhZ2UpIHtcbiAgICAgIHN0b3JhZ2VzW3RoaXMuY29uZmlnLnN0b3JhZ2VdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBhY2thZ2VzIH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmIChwYWNrYWdlcykge1xuICAgICAgY29uc3QgbGlzdFBhY2thZ2VzQ29uZiA9IE9iamVjdC5rZXlzKHBhY2thZ2VzIHx8IHt9KTtcblxuICAgICAgbGlzdFBhY2thZ2VzQ29uZi5tYXAocGtnID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHBhY2thZ2VzW3BrZ10uc3RvcmFnZTtcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICBzdG9yYWdlc1tzdG9yYWdlXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmFnZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcmV0dXJuIHtFcnJvcnwqfVxuICAgKi9cbiAgcmVtb3ZlKG5hbWU6IHN0cmluZywgY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5nZXQoKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjYihuZXcgRXJyb3IoJ2Vycm9yIG9uIGdldCcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGtnTmFtZSA9IGRhdGEuaW5kZXhPZihuYW1lKTtcbiAgICAgIGlmIChwa2dOYW1lICE9PSAtMSkge1xuICAgICAgICB0aGlzLmRhdGEubGlzdC5zcGxpY2UocGtnTmFtZSwgMSk7XG4gICAgICB9XG5cbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBkYXRhYmFzZSBlbGVtZW50cy5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBnZXQoY2I6IENhbGxiYWNrKSB7XG4gICAgY2IobnVsbCwgdGhpcy5kYXRhLmxpc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNyb25pemUge2NyZWF0ZX0gZGF0YWJhc2Ugd2hldGhlciBkb2VzIG5vdCBleGlzdC5cbiAgICogQHJldHVybiB7RXJyb3J8Kn1cbiAgICovXG4gIF9zeW5jKCkge1xuICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0RhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNoZWNrIGVycm9yIG1lc3NhZ2UgcHJpbnRlZCBkdXJpbmcgc3RhcnR1cCB0byBwcmV2ZW50IGRhdGEgbG9zcy4nKTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ1ZlcmRhY2NpbyBkYXRhYmFzZSBpcyBsb2NrZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciB0byBjaGVja291dCBsb2dzIGR1cmluZyB2ZXJkYWNjaW8gc3RhcnR1cC4nKTtcbiAgICB9XG4gICAgLy8gVXNlcyBzeW5jIHRvIHByZXZlbnQgdWdseSByYWNlIGNvbmRpdGlvblxuICAgIHRyeSB7XG4gICAgICBta2RpcnAuc3luYyhQYXRoLmRpcm5hbWUodGhpcy5wYXRoKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBwZXJoYXBzIGEgbG9nZ2VyIGluc3RhbmNlP1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5wYXRoLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gIH1cblxuICBnZXRQYWNrYWdlU3RvcmFnZShwYWNrYWdlTmFtZTogc3RyaW5nKTogSVBhY2thZ2VTdG9yYWdlIHtcbiAgICBjb25zdCBwYWNrYWdlQWNjZXNzID0gdGhpcy5jb25maWcuZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zdCBwYWNrYWdlUGF0aDogc3RyaW5nID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlUGF0aChwYWNrYWdlQWNjZXNzID8gcGFja2FnZUFjY2Vzcy5zdG9yYWdlIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChfLmlzU3RyaW5nKHBhY2thZ2VQYXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKHsgbmFtZTogcGFja2FnZU5hbWUgfSwgJ3RoaXMgcGFja2FnZSBoYXMgbm8gc3RvcmFnZSBkZWZpbmVkOiBAe25hbWV9Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLmpvaW4oUGF0aC5yZXNvbHZlKFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5zZWxmX3BhdGggfHwgJycpLCBwYWNrYWdlUGF0aCksIHBhY2thZ2VOYW1lKTtcblxuICAgIHJldHVybiBuZXcgTG9jYWxEcml2ZXIocGFja2FnZVN0b3JhZ2VQYXRoLCB0aGlzLmxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoZSByaWdodCBsb2NhbCBzdG9yYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZ2V0TG9jYWxTdG9yYWdlUGF0aChzdG9yYWdlOiBzdHJpbmcgfCB2b2lkKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbG9iYWxDb25maWdTdG9yYWdlID0gdGhpcy5jb25maWcgPyB0aGlzLmNvbmZpZy5zdG9yYWdlIDogdW5kZWZpbmVkO1xuICAgIGlmIChfLmlzTmlsKGdsb2JhbENvbmZpZ1N0b3JhZ2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbCBzdG9yYWdlIGlzIHJlcXVpcmVkIGZvciB0aGlzIHBsdWdpbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc05pbChzdG9yYWdlKSA9PT0gZmFsc2UgJiYgXy5pc1N0cmluZyhzdG9yYWdlKSkge1xuICAgICAgICByZXR1cm4gUGF0aC5qb2luKGdsb2JhbENvbmZpZ1N0b3JhZ2UgYXMgc3RyaW5nLCBzdG9yYWdlIGFzIHN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnbG9iYWxDb25maWdTdG9yYWdlIGFzIHN0cmluZztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGxvY2FsIGRhdGFiYXNlIHBhdGguXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQHJldHVybiB7c3RyaW5nfFN0cmluZ3wqfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2J1aWxkU3RvcmFnZVBhdGgoY29uZmlnOiBDb25maWcpIHtcbiAgICBjb25zdCBkYkdlblBhdGggPSBmdW5jdGlvbihkYk5hbWU6IHN0cmluZykge1xuICAgICAgcmV0dXJuIFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKGNvbmZpZy5zZWxmX3BhdGggfHwgJycpLCBjb25maWcuc3RvcmFnZSBhcyBzdHJpbmcsIGRiTmFtZSkpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaW5vcGlhZGJQYXRoOiBzdHJpbmcgPSBkYkdlblBhdGgoREVQUkVDQVRFRF9EQl9OQU1FKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzaW5vcGlhZGJQYXRoKSkge1xuICAgICAgcmV0dXJuIHNpbm9waWFkYlBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRiR2VuUGF0aChEQl9OQU1FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBsb2NhbCBwYWNrYWdlcy5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgX2ZldGNoTG9jYWxQYWNrYWdlcygpOiBMb2NhbFN0b3JhZ2Uge1xuICAgIGNvbnN0IGxpc3Q6IFN0b3JhZ2VMaXN0ID0gW107XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZSA9IHsgbGlzdCwgc2VjcmV0OiAnJyB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRiID0gbG9hZFByaXZhdGVQYWNrYWdlcyh0aGlzLnBhdGgsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgcmV0dXJuIGRiO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gcmVhZEZpbGVTeW5jIGlzIHBsYXRmb3JtIHNwZWNpZmljLCBtYWNPUywgTGludXggYW5kIFdpbmRvd3MgdGhyb3duIGFuIGVycm9yXG4gICAgICAvLyBPbmx5IHJlY3JlYXRlIGlmIGZpbGUgbm90IGZvdW5kIHRvIHByZXZlbnQgZGF0YSBsb3NzXG4gICAgICBpZiAoZXJyLmNvZGUgIT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlYWQgcGFja2FnZSBkYXRhYmFzZSBmaWxlLCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIHByaW50ZWQgYmVsb3c6XFxuJywgYEZpbGUgUGF0aDogJHt0aGlzLnBhdGh9XFxuXFxuICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbXB0eURhdGFiYXNlO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2NhbERhdGFiYXNlO1xuIl19

@@ -0,7 +1,8 @@

/// <reference types="node" />
import { HttpError } from 'http-errors';
import { ReadTarball } from '@verdaccio/streams';
import { Callback, Logger, Package, ILocalPackageManager, CallbackError, IUploadTarball } from '@verdaccio/types';
export declare const fileExist: string;
export declare const noSuchFile: string;
export declare const resourceNotAvailable: string;
import { Callback, Logger, Package, ILocalPackageManager, IUploadTarball } from '@verdaccio/types';
export declare const fileExist = "EEXISTS";
export declare const noSuchFile = "ENOENT";
export declare const resourceNotAvailable = "EAGAIN";
export declare const pkgFileName = "package.json";

@@ -36,4 +37,4 @@ export declare const fSError: (message: string, code?: number) => HttpError;

updatePackage(name: string, updateHandler: Callback, onWrite: Callback, transformPackage: Function, onEnd: Callback): void;
deletePackage(fileName: string, callback: CallbackError): void;
removePackage(callback: CallbackError): void;
deletePackage(fileName: string, callback: (err: NodeJS.ErrnoException | null) => void): void;
removePackage(callback: (err: NodeJS.ErrnoException | null) => void): void;
createPackage(name: string, value: Package, cb: Function): void;

@@ -40,0 +41,0 @@ savePackage(name: string, value: Package, cb: Function): void;

@@ -362,2 +362,2 @@ "use strict";

exports.default = LocalFS;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1mcy50cyJdLCJuYW1lcyI6WyJmaWxlRXhpc3QiLCJub1N1Y2hGaWxlIiwicmVzb3VyY2VOb3RBdmFpbGFibGUiLCJwa2dGaWxlTmFtZSIsImZTRXJyb3IiLCJtZXNzYWdlIiwiY29kZSIsImVyciIsIkVycm9yQ29kZSIsImdldDUwMyIsImdldDQwNCIsInRlbXBGaWxlIiwic3RyIiwiU3RyaW5nIiwiTWF0aCIsInJhbmRvbSIsInN1YnN0ciIsInJlbmFtZVRtcCIsInNyYyIsImRzdCIsIl9jYiIsImNiIiwiZnMiLCJ1bmxpbmsiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJyZW5hbWUiLCJ0bXAiLCJMb2NhbEZTIiwiY29uc3RydWN0b3IiLCJwYXRoIiwibG9nZ2VyIiwidXBkYXRlUGFja2FnZSIsIm5hbWUiLCJ1cGRhdGVIYW5kbGVyIiwib25Xcml0ZSIsInRyYW5zZm9ybVBhY2thZ2UiLCJvbkVuZCIsIl9sb2NrQW5kUmVhZEpTT04iLCJqc29uIiwibG9ja2VkIiwic2VsZiIsInVuTG9ja0NhbGxiYWNrIiwibG9ja0Vycm9yIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJfdW5sb2NrSlNPTiIsImFwcGx5IiwiXyIsImlzTmlsIiwiZGVsZXRlUGFja2FnZSIsImZpbGVOYW1lIiwiY2FsbGJhY2siLCJfZ2V0U3RvcmFnZSIsInJlbW92ZVBhY2thZ2UiLCJybWRpciIsImNyZWF0ZVBhY2thZ2UiLCJ2YWx1ZSIsIl9jcmVhdGVGaWxlIiwiX2NvbnZlcnRUb1N0cmluZyIsInNhdmVQYWNrYWdlIiwiX3dyaXRlRmlsZSIsInJlYWRQYWNrYWdlIiwiX3JlYWRTdG9yYWdlRmlsZSIsInRoZW4iLCJyZXMiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJ3cml0ZVRhcmJhbGwiLCJ1cGxvYWRTdHJlYW0iLCJVcGxvYWRUYXJiYWxsIiwiX2VuZGVkIiwib24iLCJwYXRoTmFtZSIsImV4aXN0cyIsImVtaXQiLCJ0ZW1wb3JhbE5hbWUiLCJqb2luIiwicmVwbGFjZSIsImZpbGUiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbW92ZVRlbXBGaWxlIiwib3BlbmVkIiwicGlwZSIsImRvbmUiLCJvbmVuZCIsImVuZCIsImFib3J0IiwicmVhZFRhcmJhbGwiLCJyZWFkVGFyYmFsbFN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFN0cmVhbSIsImNyZWF0ZVJlYWRTdHJlYW0iLCJmZCIsImZzdGF0Iiwic3RhdHMiLCJzaXplIiwiY2xvc2UiLCJjb250ZW50cyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEZpbGUiLCJzdHJpbmdpZnkiLCJzdG9yYWdlUGF0aCIsImRlc3QiLCJjcmVhdGVUZW1wRmlsZSIsInRlbXBGaWxlUGF0aCIsIndyaXRlRmlsZSIsImRpcm5hbWUiLCJsb2NrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQUdPLE1BQU1BLFNBQWlCLEdBQUcsU0FBMUI7O0FBQ0EsTUFBTUMsVUFBa0IsR0FBRyxRQUEzQjs7QUFDQSxNQUFNQyxvQkFBNEIsR0FBRyxRQUFyQzs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsY0FBcEI7OztBQUVBLE1BQU1DLE9BQU8sR0FBRyxVQUFTQyxPQUFULEVBQTBCQyxJQUFZLEdBQUcsR0FBekMsRUFBeUQ7QUFDOUUsUUFBTUMsR0FBYyxHQUFHLHlCQUFZRCxJQUFaLEVBQWtCRCxPQUFsQixDQUF2QixDQUQ4RSxDQUU5RTs7QUFDQUUsRUFBQUEsR0FBRyxDQUFDRCxJQUFKLEdBQVdELE9BQVg7QUFFQSxTQUFPRSxHQUFQO0FBQ0QsQ0FOTTs7O0FBUUEsTUFBTUMsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxNQUFNLEVBQUUsTUFBTTtBQUNaLFdBQU9MLE9BQU8sQ0FBQyxrQ0FBRCxFQUFxQyxHQUFyQyxDQUFkO0FBQ0QsR0FIc0I7QUFJdkJNLEVBQUFBLE1BQU0sRUFBRSxNQUFNO0FBQ1osV0FBT04sT0FBTyxDQUFDLDJCQUFELEVBQThCLEdBQTlCLENBQWQ7QUFDRDtBQU5zQixDQUFsQjs7O0FBU1AsTUFBTU8sUUFBUSxHQUFHLFVBQVNDLEdBQVQsRUFBYztBQUM3QixTQUFRLEdBQUVBLEdBQUksT0FBTUMsTUFBTSxDQUFDQyxJQUFJLENBQUNDLE1BQUwsRUFBRCxDQUFOLENBQXNCQyxNQUF0QixDQUE2QixDQUE3QixDQUFnQyxFQUFwRDtBQUNELENBRkQ7O0FBSUEsTUFBTUMsU0FBUyxHQUFHLFVBQVNDLEdBQVQsRUFBY0MsR0FBZCxFQUFtQkMsR0FBbkIsRUFBd0I7QUFDeEMsUUFBTUMsRUFBRSxHQUFHZCxHQUFHLElBQUk7QUFDaEIsUUFBSUEsR0FBSixFQUFTO0FBQ1BlLGtCQUFHQyxNQUFILENBQVVMLEdBQVYsRUFBZSxZQUFXLENBQUUsQ0FBNUI7QUFDRDs7QUFDREUsSUFBQUEsR0FBRyxDQUFDYixHQUFELENBQUg7QUFDRCxHQUxEOztBQU9BLE1BQUlpQixPQUFPLENBQUNDLFFBQVIsS0FBcUIsT0FBekIsRUFBa0M7QUFDaEMsV0FBT0gsWUFBR0ksTUFBSCxDQUFVUixHQUFWLEVBQWVDLEdBQWYsRUFBb0JFLEVBQXBCLENBQVA7QUFDRCxHQVZ1QyxDQVl4QztBQUNBOzs7QUFDQSxRQUFNTSxHQUFHLEdBQUdoQixRQUFRLENBQUNRLEdBQUQsQ0FBcEI7O0FBQ0FHLGNBQUdJLE1BQUgsQ0FBVVAsR0FBVixFQUFlUSxHQUFmLEVBQW9CLFVBQVNwQixHQUFULEVBQWM7QUFDaENlLGdCQUFHSSxNQUFILENBQVVSLEdBQVYsRUFBZUMsR0FBZixFQUFvQkUsRUFBcEI7O0FBQ0EsUUFBSSxDQUFDZCxHQUFMLEVBQVU7QUFDUmUsa0JBQUdDLE1BQUgsQ0FBVUksR0FBVixFQUFlLE1BQU0sQ0FBRSxDQUF2QjtBQUNEO0FBQ0YsR0FMRDtBQU1ELENBckJEOztBQXlCZSxNQUFNQyxPQUFOLENBQWdEO0FBSTdEQyxFQUFBQSxXQUFXLENBQUNDLElBQUQsRUFBZUMsTUFBZixFQUErQjtBQUFBOztBQUFBOztBQUN4QyxTQUFLRCxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLE1BQWQ7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVBQyxFQUFBQSxhQUFhLENBQUNDLElBQUQsRUFBZUMsYUFBZixFQUF3Q0MsT0FBeEMsRUFBMkRDLGdCQUEzRCxFQUF1RkMsS0FBdkYsRUFBd0c7QUFDbkgsU0FBS0MsZ0JBQUwsQ0FBc0JuQyxXQUF0QixFQUFtQyxDQUFDSSxHQUFELEVBQU1nQyxJQUFOLEtBQWU7QUFDaEQsVUFBSUMsTUFBTSxHQUFHLEtBQWI7QUFDQSxZQUFNQyxJQUFJLEdBQUcsSUFBYixDQUZnRCxDQUdoRDs7QUFDQSxZQUFNQyxjQUFjLEdBQUcsVUFBU0MsU0FBVCxFQUEyQjtBQUNoRCxjQUFNQyxLQUFLLEdBQUdDLFNBQWQ7O0FBRUEsWUFBSUwsTUFBSixFQUFZO0FBQ1ZDLFVBQUFBLElBQUksQ0FBQ0ssV0FBTCxDQUFpQjNDLFdBQWpCLEVBQThCLFlBQVc7QUFDdkM7QUFDQWtDLFlBQUFBLEtBQUssQ0FBQ1UsS0FBTixDQUFZSixTQUFaLEVBQXVCQyxLQUF2QjtBQUNELFdBSEQ7QUFJRCxTQUxELE1BS087QUFDTFAsVUFBQUEsS0FBSyxDQUFDLEdBQUdPLEtBQUosQ0FBTDtBQUNEO0FBQ0YsT0FYRDs7QUFhQSxVQUFJLENBQUNyQyxHQUFMLEVBQVU7QUFDUmlDLFFBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7O0FBRUQsVUFBSVEsZ0JBQUVDLEtBQUYsQ0FBUTFDLEdBQVIsTUFBaUIsS0FBckIsRUFBNEI7QUFDMUIsWUFBSUEsR0FBRyxDQUFDRCxJQUFKLEtBQWFKLG9CQUFqQixFQUF1QztBQUNyQyxpQkFBT3dDLGNBQWMsQ0FBQ2xDLFNBQVMsQ0FBQ0MsTUFBVixFQUFELENBQXJCO0FBQ0QsU0FGRCxNQUVPLElBQUlGLEdBQUcsQ0FBQ0QsSUFBSixLQUFhTCxVQUFqQixFQUE2QjtBQUNsQyxpQkFBT3lDLGNBQWMsQ0FBQ2xDLFNBQVMsQ0FBQ0UsTUFBVixFQUFELENBQXJCO0FBQ0QsU0FGTSxNQUVBO0FBQ0wsaUJBQU9nQyxjQUFjLENBQUNuQyxHQUFELENBQXJCO0FBQ0Q7QUFDRjs7QUFFRDJCLE1BQUFBLGFBQWEsQ0FBQ0ssSUFBRCxFQUFPaEMsR0FBRyxJQUFJO0FBQ3pCLFlBQUlBLEdBQUosRUFBUztBQUNQLGlCQUFPbUMsY0FBYyxDQUFDbkMsR0FBRCxDQUFyQjtBQUNEOztBQUNENEIsUUFBQUEsT0FBTyxDQUFDRixJQUFELEVBQU9HLGdCQUFnQixDQUFDRyxJQUFELENBQXZCLEVBQStCRyxjQUEvQixDQUFQO0FBQ0QsT0FMWSxDQUFiO0FBTUQsS0FyQ0Q7QUFzQ0Q7O0FBRURRLEVBQUFBLGFBQWEsQ0FBQ0MsUUFBRCxFQUFtQkMsUUFBbkIsRUFBNEM7QUFDdkQsV0FBTzlCLFlBQUdDLE1BQUgsQ0FBVSxLQUFLOEIsV0FBTCxDQUFpQkYsUUFBakIsQ0FBVixFQUFzQ0MsUUFBdEMsQ0FBUDtBQUNEOztBQUVERSxFQUFBQSxhQUFhLENBQUNGLFFBQUQsRUFBZ0M7QUFDM0M5QixnQkFBR2lDLEtBQUgsQ0FBUyxLQUFLRixXQUFMLENBQWlCLEdBQWpCLENBQVQsRUFBZ0NELFFBQWhDO0FBQ0Q7O0FBRURJLEVBQUFBLGFBQWEsQ0FBQ3ZCLElBQUQsRUFBZXdCLEtBQWYsRUFBK0JwQyxFQUEvQixFQUE2QztBQUN4RCxTQUFLcUMsV0FBTCxDQUFpQixLQUFLTCxXQUFMLENBQWlCbEQsV0FBakIsQ0FBakIsRUFBZ0QsS0FBS3dELGdCQUFMLENBQXNCRixLQUF0QixDQUFoRCxFQUE4RXBDLEVBQTlFO0FBQ0Q7O0FBRUR1QyxFQUFBQSxXQUFXLENBQUMzQixJQUFELEVBQWV3QixLQUFmLEVBQStCcEMsRUFBL0IsRUFBNkM7QUFDdEQsU0FBS3dDLFVBQUwsQ0FBZ0IsS0FBS1IsV0FBTCxDQUFpQmxELFdBQWpCLENBQWhCLEVBQStDLEtBQUt3RCxnQkFBTCxDQUFzQkYsS0FBdEIsQ0FBL0MsRUFBNkVwQyxFQUE3RTtBQUNEOztBQUVEeUMsRUFBQUEsV0FBVyxDQUFDN0IsSUFBRCxFQUFlWixFQUFmLEVBQTZCO0FBQ3RDLFNBQUswQyxnQkFBTCxDQUFzQixLQUFLVixXQUFMLENBQWlCbEQsV0FBakIsQ0FBdEIsRUFBcUQ2RCxJQUFyRCxDQUNFLFVBQVNDLEdBQVQsRUFBYztBQUNaLFVBQUk7QUFDRixjQUFNQyxJQUFTLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXSCxHQUFHLENBQUNJLFFBQUosQ0FBYSxNQUFiLENBQVgsQ0FBbEI7QUFFQWhELFFBQUFBLEVBQUUsQ0FBQyxJQUFELEVBQU82QyxJQUFQLENBQUY7QUFDRCxPQUpELENBSUUsT0FBTzNELEdBQVAsRUFBWTtBQUNaYyxRQUFBQSxFQUFFLENBQUNkLEdBQUQsQ0FBRjtBQUNEO0FBQ0YsS0FUSCxFQVVFLFVBQVNBLEdBQVQsRUFBYztBQUNaLGFBQU9jLEVBQUUsQ0FBQ2QsR0FBRCxDQUFUO0FBQ0QsS0FaSDtBQWNEOztBQUVEK0QsRUFBQUEsWUFBWSxDQUFDckMsSUFBRCxFQUErQjtBQUN6QyxVQUFNc0MsWUFBWSxHQUFHLElBQUlDLHNCQUFKLENBQWtCLEVBQWxCLENBQXJCO0FBRUEsUUFBSUMsTUFBTSxHQUFHLENBQWI7QUFDQUYsSUFBQUEsWUFBWSxDQUFDRyxFQUFiLENBQWdCLEtBQWhCLEVBQXVCLFlBQVc7QUFDaENELE1BQUFBLE1BQU0sR0FBRyxDQUFUO0FBQ0QsS0FGRDs7QUFJQSxVQUFNRSxRQUFnQixHQUFHLEtBQUt0QixXQUFMLENBQWlCcEIsSUFBakIsQ0FBekI7O0FBRUFYLGdCQUFHc0QsTUFBSCxDQUFVRCxRQUFWLEVBQW9CQyxNQUFNLElBQUk7QUFDNUIsVUFBSUEsTUFBSixFQUFZO0FBQ1ZMLFFBQUFBLFlBQVksQ0FBQ00sSUFBYixDQUFrQixPQUFsQixFQUEyQnpFLE9BQU8sQ0FBQ0osU0FBRCxDQUFsQztBQUNELE9BRkQsTUFFTztBQUNMLGNBQU04RSxZQUFZLEdBQUdoRCxjQUFLaUQsSUFBTCxDQUFVLEtBQUtqRCxJQUFmLEVBQXNCLEdBQUVHLElBQUssUUFBT3BCLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxNQUFMLEVBQUQsQ0FBTixDQUFzQmlFLE9BQXRCLENBQThCLE1BQTlCLEVBQXNDLEVBQXRDLENBQTBDLEVBQTlFLENBQXJCOztBQUNBLGNBQU1DLElBQUksR0FBRzNELFlBQUc0RCxpQkFBSCxDQUFxQkosWUFBckIsQ0FBYjs7QUFDQSxjQUFNSyxjQUFjLEdBQUcsTUFBTTdELFlBQUdDLE1BQUgsQ0FBVXVELFlBQVYsRUFBd0IsWUFBWSxDQUNoRSxDQUQ0QixDQUE3Qjs7QUFFQSxZQUFJTSxNQUFNLEdBQUcsS0FBYjtBQUNBYixRQUFBQSxZQUFZLENBQUNjLElBQWIsQ0FBa0JKLElBQWxCOztBQUVBVixRQUFBQSxZQUFZLENBQUNlLElBQWIsR0FBb0IsWUFBWTtBQUM1QixnQkFBTUMsS0FBSyxHQUFHLFlBQVk7QUFDdEJOLFlBQUFBLElBQUksQ0FBQ1AsRUFBTCxDQUFRLE9BQVIsRUFBaUIsWUFBWTtBQUN6QnpELGNBQUFBLFNBQVMsQ0FBQzZELFlBQUQsRUFBZUgsUUFBZixFQUF5QixVQUFVcEUsR0FBVixFQUFlO0FBQzdDLG9CQUFJQSxHQUFKLEVBQVM7QUFDTGdFLGtCQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsT0FBbEIsRUFBMkJ0RSxHQUEzQjtBQUNILGlCQUZELE1BRU87QUFDSGdFLGtCQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsU0FBbEI7QUFDSDtBQUNKLGVBTlEsQ0FBVDtBQU9ILGFBUkQ7QUFTQUksWUFBQUEsSUFBSSxDQUFDTyxHQUFMO0FBQ0gsV0FYRDs7QUFZQSxjQUFJZixNQUFKLEVBQVk7QUFDUmMsWUFBQUEsS0FBSztBQUNSLFdBRkQsTUFFTztBQUNIaEIsWUFBQUEsWUFBWSxDQUFDRyxFQUFiLENBQWdCLEtBQWhCLEVBQXVCYSxLQUF2QjtBQUNIO0FBQ0osU0FsQkQ7O0FBb0JBaEIsUUFBQUEsWUFBWSxDQUFDa0IsS0FBYixHQUFxQixZQUFZO0FBQzdCLGNBQUlMLE1BQUosRUFBWTtBQUNSQSxZQUFBQSxNQUFNLEdBQUcsS0FBVDtBQUNBSCxZQUFBQSxJQUFJLENBQUNQLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLFlBQVk7QUFDekJTLGNBQUFBLGNBQWM7QUFDakIsYUFGRDtBQUdILFdBTEQsTUFLTztBQUNIO0FBQ0FBLFlBQUFBLGNBQWM7QUFDakI7O0FBQ0RGLFVBQUFBLElBQUksQ0FBQ08sR0FBTDtBQUNILFNBWEQ7O0FBYUFQLFFBQUFBLElBQUksQ0FBQ1AsRUFBTCxDQUFRLE1BQVIsRUFBZ0IsWUFBWTtBQUN4QlUsVUFBQUEsTUFBTSxHQUFHLElBQVQsQ0FEd0IsQ0FFeEI7O0FBQ0FiLFVBQUFBLFlBQVksQ0FBQ00sSUFBYixDQUFrQixNQUFsQjtBQUNILFNBSkQ7QUFNQUksUUFBQUEsSUFBSSxDQUFDUCxFQUFMLENBQVEsT0FBUixFQUFpQixVQUFVbkUsR0FBVixFQUFlO0FBQzVCZ0UsVUFBQUEsWUFBWSxDQUFDTSxJQUFiLENBQWtCLE9BQWxCLEVBQTJCdEUsR0FBM0I7QUFDSCxTQUZEO0FBR0Q7QUFDRixLQXRERDs7QUF3REEsV0FBT2dFLFlBQVA7QUFDRDs7QUFFRG1CLEVBQUFBLFdBQVcsQ0FBQ3pELElBQUQsRUFBZTtBQUN4QixVQUFNMEMsUUFBZ0IsR0FBRyxLQUFLdEIsV0FBTCxDQUFpQnBCLElBQWpCLENBQXpCOztBQUNBLFVBQU0wRCxpQkFBaUIsR0FBRyxJQUFJQyxvQkFBSixDQUFnQixFQUFoQixDQUExQjs7QUFFQSxVQUFNQyxVQUFVLEdBQUd2RSxZQUFHd0UsZ0JBQUgsQ0FBb0JuQixRQUFwQixDQUFuQjs7QUFFQWtCLElBQUFBLFVBQVUsQ0FBQ25CLEVBQVgsQ0FBYyxPQUFkLEVBQXVCLFVBQVNuRSxHQUFULEVBQWM7QUFDbkNvRixNQUFBQSxpQkFBaUIsQ0FBQ2QsSUFBbEIsQ0FBdUIsT0FBdkIsRUFBZ0N0RSxHQUFoQztBQUNELEtBRkQ7QUFJQXNGLElBQUFBLFVBQVUsQ0FBQ25CLEVBQVgsQ0FBYyxNQUFkLEVBQXNCLFVBQVNxQixFQUFULEVBQWE7QUFDakN6RSxrQkFBRzBFLEtBQUgsQ0FBU0QsRUFBVCxFQUFhLFVBQVN4RixHQUFULEVBQWMwRixLQUFkLEVBQXFCO0FBQ2hDLFlBQUlqRCxnQkFBRUMsS0FBRixDQUFRMUMsR0FBUixNQUFpQixLQUFyQixFQUE0QjtBQUMxQixpQkFBT29GLGlCQUFpQixDQUFDZCxJQUFsQixDQUF1QixPQUF2QixFQUFnQ3RFLEdBQWhDLENBQVA7QUFDRDs7QUFDRG9GLFFBQUFBLGlCQUFpQixDQUFDZCxJQUFsQixDQUF1QixnQkFBdkIsRUFBeUNvQixLQUFLLENBQUNDLElBQS9DO0FBQ0FQLFFBQUFBLGlCQUFpQixDQUFDZCxJQUFsQixDQUF1QixNQUF2QjtBQUNBZ0IsUUFBQUEsVUFBVSxDQUFDUixJQUFYLENBQWdCTSxpQkFBaEI7QUFDRCxPQVBEO0FBUUQsS0FURDs7QUFXQUEsSUFBQUEsaUJBQWlCLENBQUNGLEtBQWxCLEdBQTBCLFlBQVc7QUFDbkNJLE1BQUFBLFVBQVUsQ0FBQ00sS0FBWDtBQUNELEtBRkQ7O0FBSUEsV0FBT1IsaUJBQVA7QUFDRDs7QUFFRGpDLEVBQUFBLFdBQVcsQ0FBQ3pCLElBQUQsRUFBZW1FLFFBQWYsRUFBOEJoRCxRQUE5QixFQUFrRDtBQUMzRDlCLGdCQUFHc0QsTUFBSCxDQUFVM0MsSUFBVixFQUFnQjJDLE1BQU0sSUFBSTtBQUN4QixVQUFJQSxNQUFKLEVBQVk7QUFDVixlQUFPeEIsUUFBUSxDQUFDaEQsT0FBTyxDQUFDSixTQUFELENBQVIsQ0FBZjtBQUNEOztBQUNELFdBQUs2RCxVQUFMLENBQWdCNUIsSUFBaEIsRUFBc0JtRSxRQUF0QixFQUFnQ2hELFFBQWhDO0FBQ0QsS0FMRDtBQU1EOztBQUVEVyxFQUFBQSxnQkFBZ0IsQ0FBQzlCLElBQUQsRUFBNkI7QUFDM0MsV0FBTyxJQUFJb0UsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUN0Q2pGLGtCQUFHa0YsUUFBSCxDQUFZdkUsSUFBWixFQUFrQixDQUFDMUIsR0FBRCxFQUFNMkQsSUFBTixLQUFlO0FBQy9CLFlBQUkzRCxHQUFKLEVBQVM7QUFDUGdHLFVBQUFBLE1BQU0sQ0FBQ2hHLEdBQUQsQ0FBTjtBQUNELFNBRkQsTUFFTztBQUNMK0YsVUFBQUEsT0FBTyxDQUFDcEMsSUFBRCxDQUFQO0FBQ0Q7QUFDRixPQU5EO0FBT0QsS0FSTSxDQUFQO0FBU0Q7O0FBRURQLEVBQUFBLGdCQUFnQixDQUFDRixLQUFELEVBQXlCO0FBQ3ZDLFdBQU9VLElBQUksQ0FBQ3NDLFNBQUwsQ0FBZWhELEtBQWYsRUFBc0IsSUFBdEIsRUFBNEIsSUFBNUIsQ0FBUDtBQUNEOztBQUVESixFQUFBQSxXQUFXLENBQUNGLFFBQWdCLEdBQUcsRUFBcEIsRUFBd0I7QUFDakMsVUFBTXVELFdBQW1CLEdBQUc1RSxjQUFLaUQsSUFBTCxDQUFVLEtBQUtqRCxJQUFmLEVBQXFCcUIsUUFBckIsQ0FBNUI7O0FBRUEsV0FBT3VELFdBQVA7QUFDRDs7QUFFRDdDLEVBQUFBLFVBQVUsQ0FBQzhDLElBQUQsRUFBZXpDLElBQWYsRUFBNkI3QyxFQUE3QixFQUEyQztBQUNuRCxVQUFNdUYsY0FBYyxHQUFHdkYsRUFBRSxJQUFJO0FBQzNCLFlBQU13RixZQUFZLEdBQUdsRyxRQUFRLENBQUNnRyxJQUFELENBQTdCOztBQUVBckYsa0JBQUd3RixTQUFILENBQWFELFlBQWIsRUFBMkIzQyxJQUEzQixFQUFpQzNELEdBQUcsSUFBSTtBQUN0QyxZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT2MsRUFBRSxDQUFDZCxHQUFELENBQVQ7QUFDRDs7QUFDRFUsUUFBQUEsU0FBUyxDQUFDNEYsWUFBRCxFQUFlRixJQUFmLEVBQXFCdEYsRUFBckIsQ0FBVDtBQUNELE9BTEQ7QUFNRCxLQVREOztBQVdBdUYsSUFBQUEsY0FBYyxDQUFDckcsR0FBRyxJQUFJO0FBQ3BCLFVBQUlBLEdBQUcsSUFBSUEsR0FBRyxDQUFDRCxJQUFKLEtBQWFMLFVBQXhCLEVBQW9DO0FBQ2xDLDZCQUFPNkIsY0FBS2lGLE9BQUwsQ0FBYUosSUFBYixDQUFQLEVBQTJCLFVBQVNwRyxHQUFULEVBQWM7QUFDdkMsY0FBSUEsR0FBSixFQUFTO0FBQ1AsbUJBQU9jLEVBQUUsQ0FBQ2QsR0FBRCxDQUFUO0FBQ0Q7O0FBQ0RxRyxVQUFBQSxjQUFjLENBQUN2RixFQUFELENBQWQ7QUFDRCxTQUxEO0FBTUQsT0FQRCxNQU9PO0FBQ0xBLFFBQUFBLEVBQUUsQ0FBQ2QsR0FBRCxDQUFGO0FBQ0Q7QUFDRixLQVhhLENBQWQ7QUFZRDs7QUFFRCtCLEVBQUFBLGdCQUFnQixDQUFDTCxJQUFELEVBQWVaLEVBQWYsRUFBNkI7QUFDM0MsVUFBTThCLFFBQWdCLEdBQUcsS0FBS0UsV0FBTCxDQUFpQnBCLElBQWpCLENBQXpCOztBQUVBLCtCQUNFa0IsUUFERixFQUVFO0FBQ0U2RCxNQUFBQSxJQUFJLEVBQUUsSUFEUjtBQUVFNUMsTUFBQUEsS0FBSyxFQUFFO0FBRlQsS0FGRixFQU1FLFVBQVM3RCxHQUFULEVBQWMwRCxHQUFkLEVBQW1CO0FBQ2pCLFVBQUkxRCxHQUFKLEVBQVM7QUFDUCxlQUFPYyxFQUFFLENBQUNkLEdBQUQsQ0FBVDtBQUNEOztBQUNELGFBQU9jLEVBQUUsQ0FBQyxJQUFELEVBQU80QyxHQUFQLENBQVQ7QUFDRCxLQVhIO0FBYUQ7O0FBRURuQixFQUFBQSxXQUFXLENBQUNiLElBQUQsRUFBZVosRUFBZixFQUE2QjtBQUN0QyxpQ0FBVyxLQUFLZ0MsV0FBTCxDQUFpQnBCLElBQWpCLENBQVgsRUFBbUNaLEVBQW5DO0FBQ0Q7O0FBaFI0RCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5cbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJztcbmltcG9ydCBjcmVhdGVFcnJvciBmcm9tICdodHRwLWVycm9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3IgfSBmcm9tICdodHRwLWVycm9ycyc7XG5pbXBvcnQgeyBVcGxvYWRUYXJiYWxsLCBSZWFkVGFyYmFsbCB9IGZyb20gJ0B2ZXJkYWNjaW8vc3RyZWFtcyc7XG5pbXBvcnQgeyB1bmxvY2tGaWxlLCByZWFkRmlsZSB9IGZyb20gJ0B2ZXJkYWNjaW8vZmlsZS1sb2NraW5nJztcbmltcG9ydCB7IENhbGxiYWNrLCBMb2dnZXIsIFBhY2thZ2UsIElMb2NhbFBhY2thZ2VNYW5hZ2VyLCBDYWxsYmFja0Vycm9yLCBJVXBsb2FkVGFyYmFsbCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZmlsZUV4aXN0OiBzdHJpbmcgPSAnRUVYSVNUUyc7XG5leHBvcnQgY29uc3Qgbm9TdWNoRmlsZTogc3RyaW5nID0gJ0VOT0VOVCc7XG5leHBvcnQgY29uc3QgcmVzb3VyY2VOb3RBdmFpbGFibGU6IHN0cmluZyA9ICdFQUdBSU4nO1xuZXhwb3J0IGNvbnN0IHBrZ0ZpbGVOYW1lID0gJ3BhY2thZ2UuanNvbic7XG5cbmV4cG9ydCBjb25zdCBmU0Vycm9yID0gZnVuY3Rpb24obWVzc2FnZTogc3RyaW5nLCBjb2RlOiBudW1iZXIgPSA0MDkpOiBIdHRwRXJyb3Ige1xuICBjb25zdCBlcnI6IEh0dHBFcnJvciA9IGNyZWF0ZUVycm9yKGNvZGUsIG1lc3NhZ2UpO1xuICAvLyAkRmxvd0ZpeE1lXG4gIGVyci5jb2RlID0gbWVzc2FnZTtcblxuICByZXR1cm4gZXJyO1xufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yQ29kZSA9IHtcbiAgZ2V0NTAzOiAoKSA9PiB7XG4gICAgcmV0dXJuIGZTRXJyb3IoJ3Jlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlJywgNTAwKTtcbiAgfSxcbiAgZ2V0NDA0OiAoKSA9PiB7XG4gICAgcmV0dXJuIGZTRXJyb3IoJ25vIHN1Y2ggcGFja2FnZSBhdmFpbGFibGUnLCA0MDQpO1xuICB9XG59O1xuXG5jb25zdCB0ZW1wRmlsZSA9IGZ1bmN0aW9uKHN0cikge1xuICByZXR1cm4gYCR7c3RyfS50bXAke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHIoMil9YDtcbn07XG5cbmNvbnN0IHJlbmFtZVRtcCA9IGZ1bmN0aW9uKHNyYywgZHN0LCBfY2IpIHtcbiAgY29uc3QgY2IgPSBlcnIgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGZzLnVubGluayhzcmMsIGZ1bmN0aW9uKCkge30pO1xuICAgIH1cbiAgICBfY2IoZXJyKTtcbiAgfTtcblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSAhPT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBmcy5yZW5hbWUoc3JjLCBkc3QsIGNiKTtcbiAgfVxuXG4gIC8vIHdpbmRvd3MgY2FuJ3QgcmVtb3ZlIG9wZW5lZCBmaWxlLFxuICAvLyBidXQgaXQgc2VlbSB0byBiZSBhYmxlIHRvIHJlbmFtZSBpdFxuICBjb25zdCB0bXAgPSB0ZW1wRmlsZShkc3QpO1xuICBmcy5yZW5hbWUoZHN0LCB0bXAsIGZ1bmN0aW9uKGVycikge1xuICAgIGZzLnJlbmFtZShzcmMsIGRzdCwgY2IpO1xuICAgIGlmICghZXJyKSB7XG4gICAgICBmcy51bmxpbmsodG1wLCAoKSA9PiB7fSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmV4cG9ydCB0eXBlIElMb2NhbEZTUGFja2FnZU1hbmFnZXIgPSBJTG9jYWxQYWNrYWdlTWFuYWdlciAmIHsgcGF0aDogc3RyaW5nIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsRlMgaW1wbGVtZW50cyBJTG9jYWxGU1BhY2thZ2VNYW5hZ2VyIHtcbiAgcGF0aDogc3RyaW5nO1xuICBsb2dnZXI6IExvZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcsIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgfVxuXG4gIC8qKlxuICAgICogIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHVwZGF0ZSB0aGUgcGFja2FnZSB0aHJlYWQtc2FmZWx5XG4gICAgICBBbGdvcml0aG06XG4gICAgICAxLiBsb2NrIHBhY2thZ2UuanNvbiBmb3Igd3JpdGluZ1xuICAgICAgMi4gcmVhZCBwYWNrYWdlLmpzb25cbiAgICAgIDMuIHVwZGF0ZUZuKHBrZywgY2IpLCBhbmQgd2FpdCBmb3IgY2JcbiAgICAgIDQuIHdyaXRlIHBhY2thZ2UuanNvbi50bXBcbiAgICAgIDUuIG1vdmUgcGFja2FnZS5qc29uLnRtcCBwYWNrYWdlLmpzb25cbiAgICAgIDYuIGNhbGxiYWNrKGVycj8pXG4gICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICAqIEBwYXJhbSB7Kn0gdXBkYXRlSGFuZGxlclxuICAgICogQHBhcmFtIHsqfSBvbldyaXRlXG4gICAgKiBAcGFyYW0geyp9IHRyYW5zZm9ybVBhY2thZ2VcbiAgICAqIEBwYXJhbSB7Kn0gb25FbmRcbiAgICAqL1xuICB1cGRhdGVQYWNrYWdlKG5hbWU6IHN0cmluZywgdXBkYXRlSGFuZGxlcjogQ2FsbGJhY2ssIG9uV3JpdGU6IENhbGxiYWNrLCB0cmFuc2Zvcm1QYWNrYWdlOiBGdW5jdGlvbiwgb25FbmQ6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5fbG9ja0FuZFJlYWRKU09OKHBrZ0ZpbGVOYW1lLCAoZXJyLCBqc29uKSA9PiB7XG4gICAgICBsZXQgbG9ja2VkID0gZmFsc2U7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIC8vIGNhbGxiYWNrIHRoYXQgY2xlYW5zIHVwIGxvY2sgZmlyc3RcbiAgICAgIGNvbnN0IHVuTG9ja0NhbGxiYWNrID0gZnVuY3Rpb24obG9ja0Vycm9yOiBFcnJvcikge1xuICAgICAgICBjb25zdCBfYXJncyA9IGFyZ3VtZW50cztcblxuICAgICAgICBpZiAobG9ja2VkKSB7XG4gICAgICAgICAgc2VsZi5fdW5sb2NrSlNPTihwa2dGaWxlTmFtZSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgYW55IGVycm9yIGZyb20gdGhlIHVubG9ja1xuICAgICAgICAgICAgb25FbmQuYXBwbHkobG9ja0Vycm9yLCBfYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25FbmQoLi4uX2FyZ3MpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoIWVycikge1xuICAgICAgICBsb2NrZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IHJlc291cmNlTm90QXZhaWxhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKEVycm9yQ29kZS5nZXQ1MDMoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgICByZXR1cm4gdW5Mb2NrQ2FsbGJhY2soRXJyb3JDb2RlLmdldDQwNCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdW5Mb2NrQ2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB1cGRhdGVIYW5kbGVyKGpzb24sIGVyciA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gdW5Mb2NrQ2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBvbldyaXRlKG5hbWUsIHRyYW5zZm9ybVBhY2thZ2UoanNvbiksIHVuTG9ja0NhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlUGFja2FnZShmaWxlTmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2tFcnJvcikge1xuICAgIHJldHVybiBmcy51bmxpbmsodGhpcy5fZ2V0U3RvcmFnZShmaWxlTmFtZSksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlbW92ZVBhY2thZ2UoY2FsbGJhY2s6IENhbGxiYWNrRXJyb3IpOiB2b2lkIHtcbiAgICBmcy5ybWRpcih0aGlzLl9nZXRTdG9yYWdlKCcuJyksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGNyZWF0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCB2YWx1ZTogUGFja2FnZSwgY2I6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fY3JlYXRlRmlsZSh0aGlzLl9nZXRTdG9yYWdlKHBrZ0ZpbGVOYW1lKSwgdGhpcy5fY29udmVydFRvU3RyaW5nKHZhbHVlKSwgY2IpO1xuICB9XG5cbiAgc2F2ZVBhY2thZ2UobmFtZTogc3RyaW5nLCB2YWx1ZTogUGFja2FnZSwgY2I6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fd3JpdGVGaWxlKHRoaXMuX2dldFN0b3JhZ2UocGtnRmlsZU5hbWUpLCB0aGlzLl9jb252ZXJ0VG9TdHJpbmcodmFsdWUpLCBjYik7XG4gIH1cblxuICByZWFkUGFja2FnZShuYW1lOiBzdHJpbmcsIGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX3JlYWRTdG9yYWdlRmlsZSh0aGlzLl9nZXRTdG9yYWdlKHBrZ0ZpbGVOYW1lKSkudGhlbihcbiAgICAgIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IEpTT04ucGFyc2UocmVzLnRvU3RyaW5nKCd1dGY4JykpO1xuXG4gICAgICAgICAgY2IobnVsbCwgZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNiKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlVGFyYmFsbChuYW1lOiBzdHJpbmcpOiBJVXBsb2FkVGFyYmFsbCB7XG4gICAgY29uc3QgdXBsb2FkU3RyZWFtID0gbmV3IFVwbG9hZFRhcmJhbGwoe30pO1xuXG4gICAgbGV0IF9lbmRlZCA9IDA7XG4gICAgdXBsb2FkU3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcbiAgICAgIF9lbmRlZCA9IDE7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXRoTmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0U3RvcmFnZShuYW1lKTtcblxuICAgIGZzLmV4aXN0cyhwYXRoTmFtZSwgZXhpc3RzID0+IHtcbiAgICAgIGlmIChleGlzdHMpIHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZlNFcnJvcihmaWxlRXhpc3QpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlbXBvcmFsTmFtZSA9IHBhdGguam9pbih0aGlzLnBhdGgsIGAke25hbWV9LnRtcC0ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9eMFxcLi8sICcnKX1gKTtcbiAgICAgICAgY29uc3QgZmlsZSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRlbXBvcmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZVRlbXBGaWxlID0gKCkgPT4gZnMudW5saW5rKHRlbXBvcmFsTmFtZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG9wZW5lZCA9IGZhbHNlO1xuICAgICAgICB1cGxvYWRTdHJlYW0ucGlwZShmaWxlKTtcblxuICAgICAgICB1cGxvYWRTdHJlYW0uZG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG9uZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZpbGUub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZW5hbWVUbXAodGVtcG9yYWxOYW1lLCBwYXRoTmFtZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGZpbGUuZW5kKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKF9lbmRlZCkge1xuICAgICAgICAgICAgICAgIG9uZW5kKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5vbignZW5kJywgb25lbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHVwbG9hZFN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgICAgICBvcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmaWxlLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlVGVtcEZpbGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGZpbGUgZG9lcyBub3QgcmVjaWV2ZSBhbnkgYnl0ZSBuZXZlciBpcyBvcGVuZWQgYW5kIGhhcyB0byBiZSByZW1vdmVkIGFueXdheS5cbiAgICAgICAgICAgICAgICByZW1vdmVUZW1wRmlsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsZS5lbmQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBmaWxlLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgb3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIHJlLWVtaXR0aW5nIG9wZW4gYmVjYXVzZSBpdCdzIGhhbmRsZWQgaW4gc3RvcmFnZS5qc1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ29wZW4nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZmlsZS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cGxvYWRTdHJlYW07XG4gIH1cblxuICByZWFkVGFyYmFsbChuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXRoTmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0U3RvcmFnZShuYW1lKTtcbiAgICBjb25zdCByZWFkVGFyYmFsbFN0cmVhbSA9IG5ldyBSZWFkVGFyYmFsbCh7fSk7XG5cbiAgICBjb25zdCByZWFkU3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoTmFtZSk7XG5cbiAgICByZWFkU3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVycikge1xuICAgICAgcmVhZFRhcmJhbGxTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH0pO1xuXG4gICAgcmVhZFN0cmVhbS5vbignb3BlbicsIGZ1bmN0aW9uKGZkKSB7XG4gICAgICBmcy5mc3RhdChmZCwgZnVuY3Rpb24oZXJyLCBzdGF0cykge1xuICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiByZWFkVGFyYmFsbFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZFRhcmJhbGxTdHJlYW0uZW1pdCgnY29udGVudC1sZW5ndGgnLCBzdGF0cy5zaXplKTtcbiAgICAgICAgcmVhZFRhcmJhbGxTdHJlYW0uZW1pdCgnb3BlbicpO1xuICAgICAgICByZWFkU3RyZWFtLnBpcGUocmVhZFRhcmJhbGxTdHJlYW0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZWFkVGFyYmFsbFN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVhZFN0cmVhbS5jbG9zZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gcmVhZFRhcmJhbGxTdHJlYW07XG4gIH1cblxuICBfY3JlYXRlRmlsZShuYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBhbnksIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGZzLmV4aXN0cyhuYW1lLCBleGlzdHMgPT4ge1xuICAgICAgaWYgKGV4aXN0cykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZlNFcnJvcihmaWxlRXhpc3QpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3dyaXRlRmlsZShuYW1lLCBjb250ZW50cywgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWRTdG9yYWdlRmlsZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmcy5yZWFkRmlsZShuYW1lLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9jb252ZXJ0VG9TdHJpbmcodmFsdWU6IFBhY2thZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgJ1xcdCcpO1xuICB9XG5cbiAgX2dldFN0b3JhZ2UoZmlsZU5hbWU6IHN0cmluZyA9ICcnKSB7XG4gICAgY29uc3Qgc3RvcmFnZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbih0aGlzLnBhdGgsIGZpbGVOYW1lKTtcblxuICAgIHJldHVybiBzdG9yYWdlUGF0aDtcbiAgfVxuXG4gIF93cml0ZUZpbGUoZGVzdDogc3RyaW5nLCBkYXRhOiBzdHJpbmcsIGNiOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGNyZWF0ZVRlbXBGaWxlID0gY2IgPT4ge1xuICAgICAgY29uc3QgdGVtcEZpbGVQYXRoID0gdGVtcEZpbGUoZGVzdCk7XG5cbiAgICAgIGZzLndyaXRlRmlsZSh0ZW1wRmlsZVBhdGgsIGRhdGEsIGVyciA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZW5hbWVUbXAodGVtcEZpbGVQYXRoLCBkZXN0LCBjYik7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY3JlYXRlVGVtcEZpbGUoZXJyID0+IHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgbWtkaXJwKHBhdGguZGlybmFtZShkZXN0KSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNyZWF0ZVRlbXBGaWxlKGNiKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYihlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX2xvY2tBbmRSZWFkSlNPTihuYW1lOiBzdHJpbmcsIGNiOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGZpbGVOYW1lOiBzdHJpbmcgPSB0aGlzLl9nZXRTdG9yYWdlKG5hbWUpO1xuXG4gICAgcmVhZEZpbGUoXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgbG9jazogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IHRydWVcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbihlcnIsIHJlcykge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNiKG51bGwsIHJlcyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIF91bmxvY2tKU09OKG5hbWU6IHN0cmluZywgY2I6IEZ1bmN0aW9uKSB7XG4gICAgdW5sb2NrRmlsZSh0aGlzLl9nZXRTdG9yYWdlKG5hbWUpLCBjYik7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1mcy50cyJdLCJuYW1lcyI6WyJmaWxlRXhpc3QiLCJub1N1Y2hGaWxlIiwicmVzb3VyY2VOb3RBdmFpbGFibGUiLCJwa2dGaWxlTmFtZSIsImZTRXJyb3IiLCJtZXNzYWdlIiwiY29kZSIsImVyciIsIkVycm9yQ29kZSIsImdldDUwMyIsImdldDQwNCIsInRlbXBGaWxlIiwic3RyIiwiU3RyaW5nIiwiTWF0aCIsInJhbmRvbSIsInN1YnN0ciIsInJlbmFtZVRtcCIsInNyYyIsImRzdCIsIl9jYiIsImNiIiwiZnMiLCJ1bmxpbmsiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJyZW5hbWUiLCJ0bXAiLCJMb2NhbEZTIiwiY29uc3RydWN0b3IiLCJwYXRoIiwibG9nZ2VyIiwidXBkYXRlUGFja2FnZSIsIm5hbWUiLCJ1cGRhdGVIYW5kbGVyIiwib25Xcml0ZSIsInRyYW5zZm9ybVBhY2thZ2UiLCJvbkVuZCIsIl9sb2NrQW5kUmVhZEpTT04iLCJqc29uIiwibG9ja2VkIiwic2VsZiIsInVuTG9ja0NhbGxiYWNrIiwibG9ja0Vycm9yIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJfdW5sb2NrSlNPTiIsImFwcGx5IiwiXyIsImlzTmlsIiwiZGVsZXRlUGFja2FnZSIsImZpbGVOYW1lIiwiY2FsbGJhY2siLCJfZ2V0U3RvcmFnZSIsInJlbW92ZVBhY2thZ2UiLCJybWRpciIsImNyZWF0ZVBhY2thZ2UiLCJ2YWx1ZSIsIl9jcmVhdGVGaWxlIiwiX2NvbnZlcnRUb1N0cmluZyIsInNhdmVQYWNrYWdlIiwiX3dyaXRlRmlsZSIsInJlYWRQYWNrYWdlIiwiX3JlYWRTdG9yYWdlRmlsZSIsInRoZW4iLCJyZXMiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJ3cml0ZVRhcmJhbGwiLCJ1cGxvYWRTdHJlYW0iLCJVcGxvYWRUYXJiYWxsIiwiX2VuZGVkIiwib24iLCJwYXRoTmFtZSIsImV4aXN0cyIsImVtaXQiLCJ0ZW1wb3JhbE5hbWUiLCJqb2luIiwicmVwbGFjZSIsImZpbGUiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbW92ZVRlbXBGaWxlIiwib3BlbmVkIiwicGlwZSIsImRvbmUiLCJvbmVuZCIsImVuZCIsImFib3J0IiwicmVhZFRhcmJhbGwiLCJyZWFkVGFyYmFsbFN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFN0cmVhbSIsImNyZWF0ZVJlYWRTdHJlYW0iLCJmZCIsImZzdGF0Iiwic3RhdHMiLCJzaXplIiwiY2xvc2UiLCJjb250ZW50cyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEZpbGUiLCJzdHJpbmdpZnkiLCJzdG9yYWdlUGF0aCIsImRlc3QiLCJjcmVhdGVUZW1wRmlsZSIsInRlbXBGaWxlUGF0aCIsIndyaXRlRmlsZSIsImRpcm5hbWUiLCJsb2NrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQUdPLE1BQU1BLFNBQVMsR0FBRyxTQUFsQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUcsUUFBbkI7O0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsUUFBN0I7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHLGNBQXBCOzs7QUFJQSxNQUFNQyxPQUFPLEdBQUcsVUFBU0MsT0FBVCxFQUEwQkMsSUFBWSxHQUFHLEdBQXpDLEVBQXlEO0FBQzlFLFFBQU1DLEdBQWMsR0FBRyx5QkFBWUQsSUFBWixFQUFrQkQsT0FBbEIsQ0FBdkIsQ0FEOEUsQ0FFOUU7O0FBQ0FFLEVBQUFBLEdBQUcsQ0FBQ0QsSUFBSixHQUFXRCxPQUFYO0FBRUEsU0FBT0UsR0FBUDtBQUNELENBTk07OztBQVFBLE1BQU1DLFNBQVMsR0FBRztBQUN2QkMsRUFBQUEsTUFBTSxFQUFFLE1BQU07QUFDWixXQUFPTCxPQUFPLENBQUMsa0NBQUQsRUFBcUMsR0FBckMsQ0FBZDtBQUNELEdBSHNCO0FBSXZCTSxFQUFBQSxNQUFNLEVBQUUsTUFBTTtBQUNaLFdBQU9OLE9BQU8sQ0FBQywyQkFBRCxFQUE4QixHQUE5QixDQUFkO0FBQ0Q7QUFOc0IsQ0FBbEI7OztBQVNQLE1BQU1PLFFBQVEsR0FBRyxVQUFTQyxHQUFULEVBQWM7QUFDN0IsU0FBUSxHQUFFQSxHQUFJLE9BQU1DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxNQUFMLEVBQUQsQ0FBTixDQUFzQkMsTUFBdEIsQ0FBNkIsQ0FBN0IsQ0FBZ0MsRUFBcEQ7QUFDRCxDQUZEOztBQUlBLE1BQU1DLFNBQVMsR0FBRyxVQUFTQyxHQUFULEVBQWNDLEdBQWQsRUFBbUJDLEdBQW5CLEVBQXdCO0FBQ3hDLFFBQU1DLEVBQUUsR0FBR2QsR0FBRyxJQUFJO0FBQ2hCLFFBQUlBLEdBQUosRUFBUztBQUNQZSxrQkFBR0MsTUFBSCxDQUFVTCxHQUFWLEVBQWUsWUFBVyxDQUFFLENBQTVCO0FBQ0Q7O0FBQ0RFLElBQUFBLEdBQUcsQ0FBQ2IsR0FBRCxDQUFIO0FBQ0QsR0FMRDs7QUFPQSxNQUFJaUIsT0FBTyxDQUFDQyxRQUFSLEtBQXFCLE9BQXpCLEVBQWtDO0FBQ2hDLFdBQU9ILFlBQUdJLE1BQUgsQ0FBVVIsR0FBVixFQUFlQyxHQUFmLEVBQW9CRSxFQUFwQixDQUFQO0FBQ0QsR0FWdUMsQ0FZeEM7QUFDQTs7O0FBQ0EsUUFBTU0sR0FBRyxHQUFHaEIsUUFBUSxDQUFDUSxHQUFELENBQXBCOztBQUNBRyxjQUFHSSxNQUFILENBQVVQLEdBQVYsRUFBZVEsR0FBZixFQUFvQixVQUFTcEIsR0FBVCxFQUFjO0FBQ2hDZSxnQkFBR0ksTUFBSCxDQUFVUixHQUFWLEVBQWVDLEdBQWYsRUFBb0JFLEVBQXBCOztBQUNBLFFBQUksQ0FBQ2QsR0FBTCxFQUFVO0FBQ1JlLGtCQUFHQyxNQUFILENBQVVJLEdBQVYsRUFBZSxNQUFNLENBQUUsQ0FBdkI7QUFDRDtBQUNGLEdBTEQ7QUFNRCxDQXJCRDs7QUF5QmUsTUFBTUMsT0FBTixDQUFnRDtBQUk3REMsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQWVDLE1BQWYsRUFBK0I7QUFBQTs7QUFBQTs7QUFDeEMsU0FBS0QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQUMsRUFBQUEsYUFBYSxDQUFDQyxJQUFELEVBQWVDLGFBQWYsRUFBd0NDLE9BQXhDLEVBQTJEQyxnQkFBM0QsRUFBdUZDLEtBQXZGLEVBQXdHO0FBQ25ILFNBQUtDLGdCQUFMLENBQXNCbkMsV0FBdEIsRUFBbUMsQ0FBQ0ksR0FBRCxFQUFNZ0MsSUFBTixLQUFlO0FBQ2hELFVBQUlDLE1BQU0sR0FBRyxLQUFiO0FBQ0EsWUFBTUMsSUFBSSxHQUFHLElBQWIsQ0FGZ0QsQ0FHaEQ7O0FBQ0EsWUFBTUMsY0FBYyxHQUFHLFVBQVNDLFNBQVQsRUFBMkI7QUFDaEQsY0FBTUMsS0FBSyxHQUFHQyxTQUFkOztBQUVBLFlBQUlMLE1BQUosRUFBWTtBQUNWQyxVQUFBQSxJQUFJLENBQUNLLFdBQUwsQ0FBaUIzQyxXQUFqQixFQUE4QixZQUFXO0FBQ3ZDO0FBQ0FrQyxZQUFBQSxLQUFLLENBQUNVLEtBQU4sQ0FBWUosU0FBWixFQUF1QkMsS0FBdkI7QUFDRCxXQUhEO0FBSUQsU0FMRCxNQUtPO0FBQ0xQLFVBQUFBLEtBQUssQ0FBQyxHQUFHTyxLQUFKLENBQUw7QUFDRDtBQUNGLE9BWEQ7O0FBYUEsVUFBSSxDQUFDckMsR0FBTCxFQUFVO0FBQ1JpQyxRQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEOztBQUVELFVBQUlRLGdCQUFFQyxLQUFGLENBQVExQyxHQUFSLE1BQWlCLEtBQXJCLEVBQTRCO0FBQzFCLFlBQUlBLEdBQUcsQ0FBQ0QsSUFBSixLQUFhSixvQkFBakIsRUFBdUM7QUFDckMsaUJBQU93QyxjQUFjLENBQUNsQyxTQUFTLENBQUNDLE1BQVYsRUFBRCxDQUFyQjtBQUNELFNBRkQsTUFFTyxJQUFJRixHQUFHLENBQUNELElBQUosS0FBYUwsVUFBakIsRUFBNkI7QUFDbEMsaUJBQU95QyxjQUFjLENBQUNsQyxTQUFTLENBQUNFLE1BQVYsRUFBRCxDQUFyQjtBQUNELFNBRk0sTUFFQTtBQUNMLGlCQUFPZ0MsY0FBYyxDQUFDbkMsR0FBRCxDQUFyQjtBQUNEO0FBQ0Y7O0FBRUQyQixNQUFBQSxhQUFhLENBQUNLLElBQUQsRUFBT2hDLEdBQUcsSUFBSTtBQUN6QixZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT21DLGNBQWMsQ0FBQ25DLEdBQUQsQ0FBckI7QUFDRDs7QUFDRDRCLFFBQUFBLE9BQU8sQ0FBQ0YsSUFBRCxFQUFPRyxnQkFBZ0IsQ0FBQ0csSUFBRCxDQUF2QixFQUErQkcsY0FBL0IsQ0FBUDtBQUNELE9BTFksQ0FBYjtBQU1ELEtBckNEO0FBc0NEOztBQUVEUSxFQUFBQSxhQUFhLENBQUNDLFFBQUQsRUFBbUJDLFFBQW5CLEVBQTBFO0FBQ3JGLFdBQU85QixZQUFHQyxNQUFILENBQVUsS0FBSzhCLFdBQUwsQ0FBaUJGLFFBQWpCLENBQVYsRUFBc0NDLFFBQXRDLENBQVA7QUFDRDs7QUFFREUsRUFBQUEsYUFBYSxDQUFDRixRQUFELEVBQThEO0FBQ3pFOUIsZ0JBQUdpQyxLQUFILENBQVMsS0FBS0YsV0FBTCxDQUFpQixHQUFqQixDQUFULEVBQWdDRCxRQUFoQztBQUNEOztBQUVESSxFQUFBQSxhQUFhLENBQUN2QixJQUFELEVBQWV3QixLQUFmLEVBQStCcEMsRUFBL0IsRUFBNkM7QUFDeEQsU0FBS3FDLFdBQUwsQ0FBaUIsS0FBS0wsV0FBTCxDQUFpQmxELFdBQWpCLENBQWpCLEVBQWdELEtBQUt3RCxnQkFBTCxDQUFzQkYsS0FBdEIsQ0FBaEQsRUFBOEVwQyxFQUE5RTtBQUNEOztBQUVEdUMsRUFBQUEsV0FBVyxDQUFDM0IsSUFBRCxFQUFld0IsS0FBZixFQUErQnBDLEVBQS9CLEVBQTZDO0FBQ3RELFNBQUt3QyxVQUFMLENBQWdCLEtBQUtSLFdBQUwsQ0FBaUJsRCxXQUFqQixDQUFoQixFQUErQyxLQUFLd0QsZ0JBQUwsQ0FBc0JGLEtBQXRCLENBQS9DLEVBQTZFcEMsRUFBN0U7QUFDRDs7QUFFRHlDLEVBQUFBLFdBQVcsQ0FBQzdCLElBQUQsRUFBZVosRUFBZixFQUE2QjtBQUN0QyxTQUFLMEMsZ0JBQUwsQ0FBc0IsS0FBS1YsV0FBTCxDQUFpQmxELFdBQWpCLENBQXRCLEVBQXFENkQsSUFBckQsQ0FDRSxVQUFTQyxHQUFULEVBQWM7QUFDWixVQUFJO0FBQ0YsY0FBTUMsSUFBUyxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0gsR0FBRyxDQUFDSSxRQUFKLENBQWEsTUFBYixDQUFYLENBQWxCO0FBRUFoRCxRQUFBQSxFQUFFLENBQUMsSUFBRCxFQUFPNkMsSUFBUCxDQUFGO0FBQ0QsT0FKRCxDQUlFLE9BQU8zRCxHQUFQLEVBQVk7QUFDWmMsUUFBQUEsRUFBRSxDQUFDZCxHQUFELENBQUY7QUFDRDtBQUNGLEtBVEgsRUFVRSxVQUFTQSxHQUFULEVBQWM7QUFDWixhQUFPYyxFQUFFLENBQUNkLEdBQUQsQ0FBVDtBQUNELEtBWkg7QUFjRDs7QUFFRCtELEVBQUFBLFlBQVksQ0FBQ3JDLElBQUQsRUFBK0I7QUFDekMsVUFBTXNDLFlBQVksR0FBRyxJQUFJQyxzQkFBSixDQUFrQixFQUFsQixDQUFyQjtBQUVBLFFBQUlDLE1BQU0sR0FBRyxDQUFiO0FBQ0FGLElBQUFBLFlBQVksQ0FBQ0csRUFBYixDQUFnQixLQUFoQixFQUF1QixZQUFXO0FBQ2hDRCxNQUFBQSxNQUFNLEdBQUcsQ0FBVDtBQUNELEtBRkQ7O0FBSUEsVUFBTUUsUUFBZ0IsR0FBRyxLQUFLdEIsV0FBTCxDQUFpQnBCLElBQWpCLENBQXpCOztBQUVBWCxnQkFBR3NELE1BQUgsQ0FBVUQsUUFBVixFQUFvQkMsTUFBTSxJQUFJO0FBQzVCLFVBQUlBLE1BQUosRUFBWTtBQUNWTCxRQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsT0FBbEIsRUFBMkJ6RSxPQUFPLENBQUNKLFNBQUQsQ0FBbEM7QUFDRCxPQUZELE1BRU87QUFDTCxjQUFNOEUsWUFBWSxHQUFHaEQsY0FBS2lELElBQUwsQ0FBVSxLQUFLakQsSUFBZixFQUFzQixHQUFFRyxJQUFLLFFBQU9wQixNQUFNLENBQUNDLElBQUksQ0FBQ0MsTUFBTCxFQUFELENBQU4sQ0FBc0JpRSxPQUF0QixDQUE4QixNQUE5QixFQUFzQyxFQUF0QyxDQUEwQyxFQUE5RSxDQUFyQjs7QUFDQSxjQUFNQyxJQUFJLEdBQUczRCxZQUFHNEQsaUJBQUgsQ0FBcUJKLFlBQXJCLENBQWI7O0FBQ0EsY0FBTUssY0FBYyxHQUFHLE1BQU03RCxZQUFHQyxNQUFILENBQVV1RCxZQUFWLEVBQXdCLFlBQVcsQ0FBRSxDQUFyQyxDQUE3Qjs7QUFDQSxZQUFJTSxNQUFNLEdBQUcsS0FBYjtBQUNBYixRQUFBQSxZQUFZLENBQUNjLElBQWIsQ0FBa0JKLElBQWxCOztBQUVBVixRQUFBQSxZQUFZLENBQUNlLElBQWIsR0FBb0IsWUFBVztBQUM3QixnQkFBTUMsS0FBSyxHQUFHLFlBQVc7QUFDdkJOLFlBQUFBLElBQUksQ0FBQ1AsRUFBTCxDQUFRLE9BQVIsRUFBaUIsWUFBVztBQUMxQnpELGNBQUFBLFNBQVMsQ0FBQzZELFlBQUQsRUFBZUgsUUFBZixFQUF5QixVQUFTcEUsR0FBVCxFQUFjO0FBQzlDLG9CQUFJQSxHQUFKLEVBQVM7QUFDUGdFLGtCQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsT0FBbEIsRUFBMkJ0RSxHQUEzQjtBQUNELGlCQUZELE1BRU87QUFDTGdFLGtCQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsU0FBbEI7QUFDRDtBQUNGLGVBTlEsQ0FBVDtBQU9ELGFBUkQ7QUFTQUksWUFBQUEsSUFBSSxDQUFDTyxHQUFMO0FBQ0QsV0FYRDs7QUFZQSxjQUFJZixNQUFKLEVBQVk7QUFDVmMsWUFBQUEsS0FBSztBQUNOLFdBRkQsTUFFTztBQUNMaEIsWUFBQUEsWUFBWSxDQUFDRyxFQUFiLENBQWdCLEtBQWhCLEVBQXVCYSxLQUF2QjtBQUNEO0FBQ0YsU0FsQkQ7O0FBb0JBaEIsUUFBQUEsWUFBWSxDQUFDa0IsS0FBYixHQUFxQixZQUFXO0FBQzlCLGNBQUlMLE1BQUosRUFBWTtBQUNWQSxZQUFBQSxNQUFNLEdBQUcsS0FBVDtBQUNBSCxZQUFBQSxJQUFJLENBQUNQLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLFlBQVc7QUFDMUJTLGNBQUFBLGNBQWM7QUFDZixhQUZEO0FBR0QsV0FMRCxNQUtPO0FBQ0w7QUFDQUEsWUFBQUEsY0FBYztBQUNmOztBQUNERixVQUFBQSxJQUFJLENBQUNPLEdBQUw7QUFDRCxTQVhEOztBQWFBUCxRQUFBQSxJQUFJLENBQUNQLEVBQUwsQ0FBUSxNQUFSLEVBQWdCLFlBQVc7QUFDekJVLFVBQUFBLE1BQU0sR0FBRyxJQUFULENBRHlCLENBRXpCOztBQUNBYixVQUFBQSxZQUFZLENBQUNNLElBQWIsQ0FBa0IsTUFBbEI7QUFDRCxTQUpEO0FBTUFJLFFBQUFBLElBQUksQ0FBQ1AsRUFBTCxDQUFRLE9BQVIsRUFBaUIsVUFBU25FLEdBQVQsRUFBYztBQUM3QmdFLFVBQUFBLFlBQVksQ0FBQ00sSUFBYixDQUFrQixPQUFsQixFQUEyQnRFLEdBQTNCO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0FyREQ7O0FBdURBLFdBQU9nRSxZQUFQO0FBQ0Q7O0FBRURtQixFQUFBQSxXQUFXLENBQUN6RCxJQUFELEVBQWU7QUFDeEIsVUFBTTBDLFFBQWdCLEdBQUcsS0FBS3RCLFdBQUwsQ0FBaUJwQixJQUFqQixDQUF6Qjs7QUFDQSxVQUFNMEQsaUJBQWlCLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0IsRUFBaEIsQ0FBMUI7O0FBRUEsVUFBTUMsVUFBVSxHQUFHdkUsWUFBR3dFLGdCQUFILENBQW9CbkIsUUFBcEIsQ0FBbkI7O0FBRUFrQixJQUFBQSxVQUFVLENBQUNuQixFQUFYLENBQWMsT0FBZCxFQUF1QixVQUFTbkUsR0FBVCxFQUFjO0FBQ25Db0YsTUFBQUEsaUJBQWlCLENBQUNkLElBQWxCLENBQXVCLE9BQXZCLEVBQWdDdEUsR0FBaEM7QUFDRCxLQUZEO0FBSUFzRixJQUFBQSxVQUFVLENBQUNuQixFQUFYLENBQWMsTUFBZCxFQUFzQixVQUFTcUIsRUFBVCxFQUFhO0FBQ2pDekUsa0JBQUcwRSxLQUFILENBQVNELEVBQVQsRUFBYSxVQUFTeEYsR0FBVCxFQUFjMEYsS0FBZCxFQUFxQjtBQUNoQyxZQUFJakQsZ0JBQUVDLEtBQUYsQ0FBUTFDLEdBQVIsTUFBaUIsS0FBckIsRUFBNEI7QUFDMUIsaUJBQU9vRixpQkFBaUIsQ0FBQ2QsSUFBbEIsQ0FBdUIsT0FBdkIsRUFBZ0N0RSxHQUFoQyxDQUFQO0FBQ0Q7O0FBQ0RvRixRQUFBQSxpQkFBaUIsQ0FBQ2QsSUFBbEIsQ0FBdUIsZ0JBQXZCLEVBQXlDb0IsS0FBSyxDQUFDQyxJQUEvQztBQUNBUCxRQUFBQSxpQkFBaUIsQ0FBQ2QsSUFBbEIsQ0FBdUIsTUFBdkI7QUFDQWdCLFFBQUFBLFVBQVUsQ0FBQ1IsSUFBWCxDQUFnQk0saUJBQWhCO0FBQ0QsT0FQRDtBQVFELEtBVEQ7O0FBV0FBLElBQUFBLGlCQUFpQixDQUFDRixLQUFsQixHQUEwQixZQUFXO0FBQ25DSSxNQUFBQSxVQUFVLENBQUNNLEtBQVg7QUFDRCxLQUZEOztBQUlBLFdBQU9SLGlCQUFQO0FBQ0Q7O0FBRURqQyxFQUFBQSxXQUFXLENBQUN6QixJQUFELEVBQWVtRSxRQUFmLEVBQThCaEQsUUFBOUIsRUFBa0Q7QUFDM0Q5QixnQkFBR3NELE1BQUgsQ0FBVTNDLElBQVYsRUFBZ0IyQyxNQUFNLElBQUk7QUFDeEIsVUFBSUEsTUFBSixFQUFZO0FBQ1YsZUFBT3hCLFFBQVEsQ0FBQ2hELE9BQU8sQ0FBQ0osU0FBRCxDQUFSLENBQWY7QUFDRDs7QUFDRCxXQUFLNkQsVUFBTCxDQUFnQjVCLElBQWhCLEVBQXNCbUUsUUFBdEIsRUFBZ0NoRCxRQUFoQztBQUNELEtBTEQ7QUFNRDs7QUFFRFcsRUFBQUEsZ0JBQWdCLENBQUM5QixJQUFELEVBQTZCO0FBQzNDLFdBQU8sSUFBSW9FLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdENqRixrQkFBR2tGLFFBQUgsQ0FBWXZFLElBQVosRUFBa0IsQ0FBQzFCLEdBQUQsRUFBTTJELElBQU4sS0FBZTtBQUMvQixZQUFJM0QsR0FBSixFQUFTO0FBQ1BnRyxVQUFBQSxNQUFNLENBQUNoRyxHQUFELENBQU47QUFDRCxTQUZELE1BRU87QUFDTCtGLFVBQUFBLE9BQU8sQ0FBQ3BDLElBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FORDtBQU9ELEtBUk0sQ0FBUDtBQVNEOztBQUVEUCxFQUFBQSxnQkFBZ0IsQ0FBQ0YsS0FBRCxFQUF5QjtBQUN2QyxXQUFPVSxJQUFJLENBQUNzQyxTQUFMLENBQWVoRCxLQUFmLEVBQXNCLElBQXRCLEVBQTRCLElBQTVCLENBQVA7QUFDRDs7QUFFREosRUFBQUEsV0FBVyxDQUFDRixRQUFnQixHQUFHLEVBQXBCLEVBQXdCO0FBQ2pDLFVBQU11RCxXQUFtQixHQUFHNUUsY0FBS2lELElBQUwsQ0FBVSxLQUFLakQsSUFBZixFQUFxQnFCLFFBQXJCLENBQTVCOztBQUVBLFdBQU91RCxXQUFQO0FBQ0Q7O0FBRUQ3QyxFQUFBQSxVQUFVLENBQUM4QyxJQUFELEVBQWV6QyxJQUFmLEVBQTZCN0MsRUFBN0IsRUFBMkM7QUFDbkQsVUFBTXVGLGNBQWMsR0FBR3ZGLEVBQUUsSUFBSTtBQUMzQixZQUFNd0YsWUFBWSxHQUFHbEcsUUFBUSxDQUFDZ0csSUFBRCxDQUE3Qjs7QUFFQXJGLGtCQUFHd0YsU0FBSCxDQUFhRCxZQUFiLEVBQTJCM0MsSUFBM0IsRUFBaUMzRCxHQUFHLElBQUk7QUFDdEMsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9jLEVBQUUsQ0FBQ2QsR0FBRCxDQUFUO0FBQ0Q7O0FBQ0RVLFFBQUFBLFNBQVMsQ0FBQzRGLFlBQUQsRUFBZUYsSUFBZixFQUFxQnRGLEVBQXJCLENBQVQ7QUFDRCxPQUxEO0FBTUQsS0FURDs7QUFXQXVGLElBQUFBLGNBQWMsQ0FBQ3JHLEdBQUcsSUFBSTtBQUNwQixVQUFJQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0QsSUFBSixLQUFhTCxVQUF4QixFQUFvQztBQUNsQyw2QkFBTzZCLGNBQUtpRixPQUFMLENBQWFKLElBQWIsQ0FBUCxFQUEyQixVQUFTcEcsR0FBVCxFQUFjO0FBQ3ZDLGNBQUlBLEdBQUosRUFBUztBQUNQLG1CQUFPYyxFQUFFLENBQUNkLEdBQUQsQ0FBVDtBQUNEOztBQUNEcUcsVUFBQUEsY0FBYyxDQUFDdkYsRUFBRCxDQUFkO0FBQ0QsU0FMRDtBQU1ELE9BUEQsTUFPTztBQUNMQSxRQUFBQSxFQUFFLENBQUNkLEdBQUQsQ0FBRjtBQUNEO0FBQ0YsS0FYYSxDQUFkO0FBWUQ7O0FBRUQrQixFQUFBQSxnQkFBZ0IsQ0FBQ0wsSUFBRCxFQUFlWixFQUFmLEVBQTZCO0FBQzNDLFVBQU04QixRQUFnQixHQUFHLEtBQUtFLFdBQUwsQ0FBaUJwQixJQUFqQixDQUF6Qjs7QUFFQSwrQkFDRWtCLFFBREYsRUFFRTtBQUNFNkQsTUFBQUEsSUFBSSxFQUFFLElBRFI7QUFFRTVDLE1BQUFBLEtBQUssRUFBRTtBQUZULEtBRkYsRUFNRSxVQUFTN0QsR0FBVCxFQUFjMEQsR0FBZCxFQUFtQjtBQUNqQixVQUFJMUQsR0FBSixFQUFTO0FBQ1AsZUFBT2MsRUFBRSxDQUFDZCxHQUFELENBQVQ7QUFDRDs7QUFDRCxhQUFPYyxFQUFFLENBQUMsSUFBRCxFQUFPNEMsR0FBUCxDQUFUO0FBQ0QsS0FYSDtBQWFEOztBQUVEbkIsRUFBQUEsV0FBVyxDQUFDYixJQUFELEVBQWVaLEVBQWYsRUFBNkI7QUFDdEMsaUNBQVcsS0FBS2dDLFdBQUwsQ0FBaUJwQixJQUFqQixDQUFYLEVBQW1DWixFQUFuQztBQUNEOztBQS9RNEQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWtkaXJwIGZyb20gJ21rZGlycCc7XG5pbXBvcnQgY3JlYXRlRXJyb3IgZnJvbSAnaHR0cC1lcnJvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yIH0gZnJvbSAnaHR0cC1lcnJvcnMnO1xuaW1wb3J0IHsgVXBsb2FkVGFyYmFsbCwgUmVhZFRhcmJhbGwgfSBmcm9tICdAdmVyZGFjY2lvL3N0cmVhbXMnO1xuaW1wb3J0IHsgdW5sb2NrRmlsZSwgcmVhZEZpbGUgfSBmcm9tICdAdmVyZGFjY2lvL2ZpbGUtbG9ja2luZyc7XG5pbXBvcnQgeyBDYWxsYmFjaywgTG9nZ2VyLCBQYWNrYWdlLCBJTG9jYWxQYWNrYWdlTWFuYWdlciwgQ2FsbGJhY2tFcnJvciwgSVVwbG9hZFRhcmJhbGwgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGZpbGVFeGlzdCA9ICdFRVhJU1RTJztcbmV4cG9ydCBjb25zdCBub1N1Y2hGaWxlID0gJ0VOT0VOVCc7XG5leHBvcnQgY29uc3QgcmVzb3VyY2VOb3RBdmFpbGFibGUgPSAnRUFHQUlOJztcbmV4cG9ydCBjb25zdCBwa2dGaWxlTmFtZSA9ICdwYWNrYWdlLmpzb24nO1xuXG50eXBlIENhbGxiYWNrRlMgPSBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsO1xuXG5leHBvcnQgY29uc3QgZlNFcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2U6IHN0cmluZywgY29kZTogbnVtYmVyID0gNDA5KTogSHR0cEVycm9yIHtcbiAgY29uc3QgZXJyOiBIdHRwRXJyb3IgPSBjcmVhdGVFcnJvcihjb2RlLCBtZXNzYWdlKTtcbiAgLy8gJEZsb3dGaXhNZVxuICBlcnIuY29kZSA9IG1lc3NhZ2U7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvckNvZGUgPSB7XG4gIGdldDUwMzogKCkgPT4ge1xuICAgIHJldHVybiBmU0Vycm9yKCdyZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZScsIDUwMCk7XG4gIH0sXG4gIGdldDQwNDogKCkgPT4ge1xuICAgIHJldHVybiBmU0Vycm9yKCdubyBzdWNoIHBhY2thZ2UgYXZhaWxhYmxlJywgNDA0KTtcbiAgfVxufTtcblxuY29uc3QgdGVtcEZpbGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgcmV0dXJuIGAke3N0cn0udG1wJHtTdHJpbmcoTWF0aC5yYW5kb20oKSkuc3Vic3RyKDIpfWA7XG59O1xuXG5jb25zdCByZW5hbWVUbXAgPSBmdW5jdGlvbihzcmMsIGRzdCwgX2NiKSB7XG4gIGNvbnN0IGNiID0gZXJyID0+IHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBmcy51bmxpbmsoc3JjLCBmdW5jdGlvbigpIHt9KTtcbiAgICB9XG4gICAgX2NiKGVycik7XG4gIH07XG5cbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gIT09ICd3aW4zMicpIHtcbiAgICByZXR1cm4gZnMucmVuYW1lKHNyYywgZHN0LCBjYik7XG4gIH1cblxuICAvLyB3aW5kb3dzIGNhbid0IHJlbW92ZSBvcGVuZWQgZmlsZSxcbiAgLy8gYnV0IGl0IHNlZW0gdG8gYmUgYWJsZSB0byByZW5hbWUgaXRcbiAgY29uc3QgdG1wID0gdGVtcEZpbGUoZHN0KTtcbiAgZnMucmVuYW1lKGRzdCwgdG1wLCBmdW5jdGlvbihlcnIpIHtcbiAgICBmcy5yZW5hbWUoc3JjLCBkc3QsIGNiKTtcbiAgICBpZiAoIWVycikge1xuICAgICAgZnMudW5saW5rKHRtcCwgKCkgPT4ge30pO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgdHlwZSBJTG9jYWxGU1BhY2thZ2VNYW5hZ2VyID0gSUxvY2FsUGFja2FnZU1hbmFnZXIgJiB7IHBhdGg6IHN0cmluZyB9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NhbEZTIGltcGxlbWVudHMgSUxvY2FsRlNQYWNrYWdlTWFuYWdlciB7XG4gIHBhdGg6IHN0cmluZztcbiAgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgY29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBsb2dnZXI6IExvZ2dlcikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gIH1cblxuICAvKipcbiAgICAqICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byB1cGRhdGUgdGhlIHBhY2thZ2UgdGhyZWFkLXNhZmVseVxuICAgICAgQWxnb3JpdGhtOlxuICAgICAgMS4gbG9jayBwYWNrYWdlLmpzb24gZm9yIHdyaXRpbmdcbiAgICAgIDIuIHJlYWQgcGFja2FnZS5qc29uXG4gICAgICAzLiB1cGRhdGVGbihwa2csIGNiKSwgYW5kIHdhaXQgZm9yIGNiXG4gICAgICA0LiB3cml0ZSBwYWNrYWdlLmpzb24udG1wXG4gICAgICA1LiBtb3ZlIHBhY2thZ2UuanNvbi50bXAgcGFja2FnZS5qc29uXG4gICAgICA2LiBjYWxsYmFjayhlcnI/KVxuICAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAgKiBAcGFyYW0geyp9IHVwZGF0ZUhhbmRsZXJcbiAgICAqIEBwYXJhbSB7Kn0gb25Xcml0ZVxuICAgICogQHBhcmFtIHsqfSB0cmFuc2Zvcm1QYWNrYWdlXG4gICAgKiBAcGFyYW0geyp9IG9uRW5kXG4gICAgKi9cbiAgdXBkYXRlUGFja2FnZShuYW1lOiBzdHJpbmcsIHVwZGF0ZUhhbmRsZXI6IENhbGxiYWNrLCBvbldyaXRlOiBDYWxsYmFjaywgdHJhbnNmb3JtUGFja2FnZTogRnVuY3Rpb24sIG9uRW5kOiBDYWxsYmFjaykge1xuICAgIHRoaXMuX2xvY2tBbmRSZWFkSlNPTihwa2dGaWxlTmFtZSwgKGVyciwganNvbikgPT4ge1xuICAgICAgbGV0IGxvY2tlZCA9IGZhbHNlO1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAvLyBjYWxsYmFjayB0aGF0IGNsZWFucyB1cCBsb2NrIGZpcnN0XG4gICAgICBjb25zdCB1bkxvY2tDYWxsYmFjayA9IGZ1bmN0aW9uKGxvY2tFcnJvcjogRXJyb3IpIHtcbiAgICAgICAgY29uc3QgX2FyZ3MgPSBhcmd1bWVudHM7XG5cbiAgICAgICAgaWYgKGxvY2tlZCkge1xuICAgICAgICAgIHNlbGYuX3VubG9ja0pTT04ocGtnRmlsZU5hbWUsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgLy8gaWdub3JlIGFueSBlcnJvciBmcm9tIHRoZSB1bmxvY2tcbiAgICAgICAgICAgIG9uRW5kLmFwcGx5KGxvY2tFcnJvciwgX2FyZ3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uRW5kKC4uLl9hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgbG9ja2VkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSByZXNvdXJjZU5vdEF2YWlsYWJsZSkge1xuICAgICAgICAgIHJldHVybiB1bkxvY2tDYWxsYmFjayhFcnJvckNvZGUuZ2V0NTAzKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKEVycm9yQ29kZS5nZXQ0MDQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlSGFuZGxlcihqc29uLCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgb25Xcml0ZShuYW1lLCB0cmFuc2Zvcm1QYWNrYWdlKGpzb24pLCB1bkxvY2tDYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZVBhY2thZ2UoZmlsZU5hbWU6IHN0cmluZywgY2FsbGJhY2s6IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiB8IG51bGwpID0+IHZvaWQpIHtcbiAgICByZXR1cm4gZnMudW5saW5rKHRoaXMuX2dldFN0b3JhZ2UoZmlsZU5hbWUpLCBjYWxsYmFjayk7XG4gIH1cblxuICByZW1vdmVQYWNrYWdlKGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgZnMucm1kaXIodGhpcy5fZ2V0U3RvcmFnZSgnLicpLCBjYWxsYmFjayk7XG4gIH1cblxuICBjcmVhdGVQYWNrYWdlKG5hbWU6IHN0cmluZywgdmFsdWU6IFBhY2thZ2UsIGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX2NyZWF0ZUZpbGUodGhpcy5fZ2V0U3RvcmFnZShwa2dGaWxlTmFtZSksIHRoaXMuX2NvbnZlcnRUb1N0cmluZyh2YWx1ZSksIGNiKTtcbiAgfVxuXG4gIHNhdmVQYWNrYWdlKG5hbWU6IHN0cmluZywgdmFsdWU6IFBhY2thZ2UsIGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX3dyaXRlRmlsZSh0aGlzLl9nZXRTdG9yYWdlKHBrZ0ZpbGVOYW1lKSwgdGhpcy5fY29udmVydFRvU3RyaW5nKHZhbHVlKSwgY2IpO1xuICB9XG5cbiAgcmVhZFBhY2thZ2UobmFtZTogc3RyaW5nLCBjYjogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9yZWFkU3RvcmFnZUZpbGUodGhpcy5fZ2V0U3RvcmFnZShwa2dGaWxlTmFtZSkpLnRoZW4oXG4gICAgICBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKHJlcy50b1N0cmluZygndXRmOCcpKTtcblxuICAgICAgICAgIGNiKG51bGwsIGRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjYihlcnIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB3cml0ZVRhcmJhbGwobmFtZTogc3RyaW5nKTogSVVwbG9hZFRhcmJhbGwge1xuICAgIGNvbnN0IHVwbG9hZFN0cmVhbSA9IG5ldyBVcGxvYWRUYXJiYWxsKHt9KTtcblxuICAgIGxldCBfZW5kZWQgPSAwO1xuICAgIHVwbG9hZFN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICBfZW5kZWQgPSAxO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0aE5hbWU6IHN0cmluZyA9IHRoaXMuX2dldFN0b3JhZ2UobmFtZSk7XG5cbiAgICBmcy5leGlzdHMocGF0aE5hbWUsIGV4aXN0cyA9PiB7XG4gICAgICBpZiAoZXhpc3RzKSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGZTRXJyb3IoZmlsZUV4aXN0KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZW1wb3JhbE5hbWUgPSBwYXRoLmpvaW4odGhpcy5wYXRoLCBgJHtuYW1lfS50bXAtJHtTdHJpbmcoTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXjBcXC4vLCAnJyl9YCk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBmcy5jcmVhdGVXcml0ZVN0cmVhbSh0ZW1wb3JhbE5hbWUpO1xuICAgICAgICBjb25zdCByZW1vdmVUZW1wRmlsZSA9ICgpID0+IGZzLnVubGluayh0ZW1wb3JhbE5hbWUsIGZ1bmN0aW9uKCkge30pO1xuICAgICAgICBsZXQgb3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5waXBlKGZpbGUpO1xuXG4gICAgICAgIHVwbG9hZFN0cmVhbS5kb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc3Qgb25lbmQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZpbGUub24oJ2Nsb3NlJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJlbmFtZVRtcCh0ZW1wb3JhbE5hbWUsIHBhdGhOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbGUuZW5kKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoX2VuZGVkKSB7XG4gICAgICAgICAgICBvbmVuZCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0ub24oJ2VuZCcsIG9uZW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdXBsb2FkU3RyZWFtLmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICBmaWxlLm9uKCdjbG9zZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZW1vdmVUZW1wRmlsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBmaWxlIGRvZXMgbm90IHJlY2lldmUgYW55IGJ5dGUgbmV2ZXIgaXMgb3BlbmVkIGFuZCBoYXMgdG8gYmUgcmVtb3ZlZCBhbnl3YXkuXG4gICAgICAgICAgICByZW1vdmVUZW1wRmlsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmaWxlLmVuZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZpbGUub24oJ29wZW4nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBvcGVuZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIHJlLWVtaXR0aW5nIG9wZW4gYmVjYXVzZSBpdCdzIGhhbmRsZWQgaW4gc3RvcmFnZS5qc1xuICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZpbGUub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICB9XG5cbiAgcmVhZFRhcmJhbGwobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0aE5hbWU6IHN0cmluZyA9IHRoaXMuX2dldFN0b3JhZ2UobmFtZSk7XG4gICAgY29uc3QgcmVhZFRhcmJhbGxTdHJlYW0gPSBuZXcgUmVhZFRhcmJhbGwoe30pO1xuXG4gICAgY29uc3QgcmVhZFN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aE5hbWUpO1xuXG4gICAgcmVhZFN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9KTtcblxuICAgIHJlYWRTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbihmZCkge1xuICAgICAgZnMuZnN0YXQoZmQsIGZ1bmN0aW9uKGVyciwgc3RhdHMpIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gcmVhZFRhcmJhbGxTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmVtaXQoJ2NvbnRlbnQtbGVuZ3RoJywgc3RhdHMuc2l6ZSk7XG4gICAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmVtaXQoJ29wZW4nKTtcbiAgICAgICAgcmVhZFN0cmVhbS5waXBlKHJlYWRUYXJiYWxsU3RyZWFtKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlYWRTdHJlYW0uY2xvc2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlYWRUYXJiYWxsU3RyZWFtO1xuICB9XG5cbiAgX2NyZWF0ZUZpbGUobmFtZTogc3RyaW5nLCBjb250ZW50czogYW55LCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBmcy5leGlzdHMobmFtZSwgZXhpc3RzID0+IHtcbiAgICAgIGlmIChleGlzdHMpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZTRXJyb3IoZmlsZUV4aXN0KSk7XG4gICAgICB9XG4gICAgICB0aGlzLl93cml0ZUZpbGUobmFtZSwgY29udGVudHMsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZWFkU3RvcmFnZUZpbGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZnMucmVhZEZpbGUobmFtZSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfY29udmVydFRvU3RyaW5nKHZhbHVlOiBQYWNrYWdlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsICdcXHQnKTtcbiAgfVxuXG4gIF9nZXRTdG9yYWdlKGZpbGVOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnN0IHN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4odGhpcy5wYXRoLCBmaWxlTmFtZSk7XG5cbiAgICByZXR1cm4gc3RvcmFnZVBhdGg7XG4gIH1cblxuICBfd3JpdGVGaWxlKGRlc3Q6IHN0cmluZywgZGF0YTogc3RyaW5nLCBjYjogRnVuY3Rpb24pIHtcbiAgICBjb25zdCBjcmVhdGVUZW1wRmlsZSA9IGNiID0+IHtcbiAgICAgIGNvbnN0IHRlbXBGaWxlUGF0aCA9IHRlbXBGaWxlKGRlc3QpO1xuXG4gICAgICBmcy53cml0ZUZpbGUodGVtcEZpbGVQYXRoLCBkYXRhLCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVuYW1lVG1wKHRlbXBGaWxlUGF0aCwgZGVzdCwgY2IpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNyZWF0ZVRlbXBGaWxlKGVyciA9PiB7XG4gICAgICBpZiAoZXJyICYmIGVyci5jb2RlID09PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgIG1rZGlycChwYXRoLmRpcm5hbWUoZGVzdCksIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjcmVhdGVUZW1wRmlsZShjYik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF9sb2NrQW5kUmVhZEpTT04obmFtZTogc3RyaW5nLCBjYjogRnVuY3Rpb24pIHtcbiAgICBjb25zdCBmaWxlTmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0U3RvcmFnZShuYW1lKTtcblxuICAgIHJlYWRGaWxlKFxuICAgICAgZmlsZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGxvY2s6IHRydWUsXG4gICAgICAgIHBhcnNlOiB0cnVlXG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24oZXJyLCByZXMpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYihudWxsLCByZXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBfdW5sb2NrSlNPTihuYW1lOiBzdHJpbmcsIGNiOiBGdW5jdGlvbikge1xuICAgIHVubG9ja0ZpbGUodGhpcy5fZ2V0U3RvcmFnZShuYW1lKSwgY2IpO1xuICB9XG59XG4iXX0=
export declare function getFileStats(packagePath: string): any;
export declare function readDirectory(packagePath: string): Promise<any>;
export declare function findPackages(storagePath: string, validationHandler: Function): Promise<{}>;
export declare function findPackages(storagePath: string, validationHandler: Function): Promise<unknown>;

@@ -93,2 +93,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJnZXRGaWxlU3RhdHMiLCJwYWNrYWdlUGF0aCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnMiLCJzdGF0IiwiZXJyIiwic3RhdHMiLCJfIiwiaXNOaWwiLCJyZWFkRGlyZWN0b3J5IiwicmVhZGRpciIsInNjb3BlZFBhY2thZ2VzIiwiaGFzU2NvcGUiLCJmaWxlIiwibWF0Y2giLCJmaW5kUGFja2FnZXMiLCJzdG9yYWdlUGF0aCIsInZhbGlkYXRpb25IYW5kbGVyIiwibGlzdFBhY2thZ2VzIiwic2NvcGVQYXRoIiwicGF0aCIsInN0b3JhZ2VEaXJzIiwiZGlyZWN0b3J5Iiwic2NvcGVEaXJlY3RvcnkiLCJzY29wZWREaXJOYW1lIiwicHVzaCIsIm5hbWUiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFTyxTQUFTQSxZQUFULENBQXNCQyxXQUF0QixFQUFnRDtBQUNyRCxTQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdENDLGdCQUFHQyxJQUFILENBQVFMLFdBQVIsRUFBcUIsQ0FBQ00sR0FBRCxFQUFNQyxLQUFOLEtBQWdCO0FBQ25DLFVBQUlDLGdCQUFFQyxLQUFGLENBQVFILEdBQVIsTUFBaUIsS0FBckIsRUFBNEI7QUFDMUIsZUFBT0gsTUFBTSxDQUFDRyxHQUFELENBQWI7QUFDRDs7QUFDREosTUFBQUEsT0FBTyxDQUFDSyxLQUFELENBQVA7QUFDRCxLQUxEO0FBTUQsR0FQTSxDQUFQO0FBUUQ7O0FBRU0sU0FBU0csYUFBVCxDQUF1QlYsV0FBdkIsRUFBMEQ7QUFDL0QsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDQyxnQkFBR08sT0FBSCxDQUFXWCxXQUFYLEVBQXdCLENBQUNNLEdBQUQsRUFBTU0sY0FBTixLQUF5QjtBQUMvQyxVQUFJSixnQkFBRUMsS0FBRixDQUFRSCxHQUFSLE1BQWlCLEtBQXJCLEVBQTRCO0FBQzFCLGVBQU9ILE1BQU0sQ0FBQ0csR0FBRCxDQUFiO0FBQ0Q7O0FBRURKLE1BQUFBLE9BQU8sQ0FBQ1UsY0FBRCxDQUFQO0FBQ0QsS0FORDtBQU9ELEdBUk0sQ0FBUDtBQVNEOztBQUVELFNBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQWdDO0FBQzlCLFNBQU9BLElBQUksQ0FBQ0MsS0FBTCxDQUFXLElBQVgsQ0FBUDtBQUNEOztBQUVNLGVBQWVDLFlBQWYsQ0FBNEJDLFdBQTVCLEVBQWlEQyxpQkFBakQsRUFBOEU7QUFDbkYsUUFBTUMsWUFBd0IsR0FBRyxFQUFqQztBQUNBLFNBQU8sSUFBSWxCLE9BQUosQ0FBWSxPQUFPQyxPQUFQLEVBQWdCQyxNQUFoQixLQUEyQjtBQUM1QyxRQUFJO0FBQ0YsWUFBTWlCLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixDQUFsQjs7QUFDQSxZQUFNSyxXQUFXLEdBQUcsTUFBTVosYUFBYSxDQUFDVSxTQUFELENBQXZDOztBQUNBLFdBQUssTUFBTUcsU0FBWCxJQUF3QkQsV0FBeEIsRUFBcUM7QUFDbkM7QUFDQSxZQUFJVCxRQUFRLENBQUNVLFNBQUQsQ0FBWixFQUF5QjtBQUN2QjtBQUNBLGdCQUFNQyxjQUFjLEdBQUdILGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQXZCOztBQUNBLGdCQUFNWCxjQUFjLEdBQUcsTUFBTUYsYUFBYSxDQUFDYyxjQUFELENBQTFDOztBQUNBLGVBQUssTUFBTUMsYUFBWCxJQUE0QmIsY0FBNUIsRUFBNEM7QUFDMUMsZ0JBQUlNLGlCQUFpQixDQUFDTyxhQUFELENBQXJCLEVBQXNDO0FBQ3BDO0FBQ0Esb0JBQU1MLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixFQUEwQk0sU0FBMUIsRUFBcUNFLGFBQXJDLENBQWxCLENBRm9DLENBR3BDOzs7QUFDQU4sY0FBQUEsWUFBWSxDQUFDTyxJQUFiLENBQWtCO0FBQ2hCQyxnQkFBQUEsSUFBSSxFQUFHLEdBQUVKLFNBQVUsSUFBR0UsYUFBYyxFQURwQjtBQUVoQkosZ0JBQUFBLElBQUksRUFBRUQ7QUFGVSxlQUFsQjtBQUlEO0FBQ0Y7QUFDRixTQWZELE1BZU87QUFDTDtBQUNBLGNBQUlGLGlCQUFpQixDQUFDSyxTQUFELENBQXJCLEVBQWtDO0FBQ2hDLGtCQUFNSCxTQUFTLEdBQUdDLGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQWxCOztBQUNBSixZQUFBQSxZQUFZLENBQUNPLElBQWIsQ0FBa0I7QUFDaEJDLGNBQUFBLElBQUksRUFBRUosU0FEVTtBQUVoQkYsY0FBQUEsSUFBSSxFQUFFRDtBQUZVLGFBQWxCO0FBSUQ7QUFDRjtBQUNGO0FBQ0YsS0EvQkQsQ0ErQkUsT0FBT1EsS0FBUCxFQUFjO0FBQ2R6QixNQUFBQSxNQUFNLENBQUN5QixLQUFELENBQU47QUFDRDs7QUFFRDFCLElBQUFBLE9BQU8sQ0FBQ2lCLFlBQUQsQ0FBUDtBQUNELEdBckNNLENBQVA7QUFzQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN0YXRzKHBhY2thZ2VQYXRoOiBzdHJpbmcpOiBhbnkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLnN0YXQocGFja2FnZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHN0YXRzKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGlyZWN0b3J5KHBhY2thZ2VQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLnJlYWRkaXIocGFja2FnZVBhdGgsIChlcnIsIHNjb3BlZFBhY2thZ2VzKSA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoc2NvcGVkUGFja2FnZXMpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFzU2NvcGUoZmlsZTogc3RyaW5nKSB7XG4gIHJldHVybiBmaWxlLm1hdGNoKC9eQC8pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFBhY2thZ2VzKHN0b3JhZ2VQYXRoOiBzdHJpbmcsIHZhbGlkYXRpb25IYW5kbGVyOiBGdW5jdGlvbikge1xuICBjb25zdCBsaXN0UGFja2FnZXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2NvcGVQYXRoID0gcGF0aC5yZXNvbHZlKHN0b3JhZ2VQYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VEaXJzID0gYXdhaXQgcmVhZERpcmVjdG9yeShzY29wZVBhdGgpO1xuICAgICAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2Ygc3RvcmFnZURpcnMpIHtcbiAgICAgICAgLy8gd2UgY2hlY2sgd2hldGhlciBoYXMgMm5kIGxldmVsXG4gICAgICAgIGlmIChoYXNTY29wZShkaXJlY3RvcnkpKSB7XG4gICAgICAgICAgLy8gd2UgcmVhZCBkaXJlY3RvcnkgbXVsdGlwbGVcbiAgICAgICAgICBjb25zdCBzY29wZURpcmVjdG9yeSA9IHBhdGgucmVzb2x2ZShzdG9yYWdlUGF0aCwgZGlyZWN0b3J5KTtcbiAgICAgICAgICBjb25zdCBzY29wZWRQYWNrYWdlcyA9IGF3YWl0IHJlYWREaXJlY3Rvcnkoc2NvcGVEaXJlY3RvcnkpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc2NvcGVkRGlyTmFtZSBvZiBzY29wZWRQYWNrYWdlcykge1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25IYW5kbGVyKHNjb3BlZERpck5hbWUpKSB7XG4gICAgICAgICAgICAgIC8vIHdlIGJ1aWxkIHRoZSBjb21wbGV0ZSBzY29wZSBwYXRoXG4gICAgICAgICAgICAgIGNvbnN0IHNjb3BlUGF0aCA9IHBhdGgucmVzb2x2ZShzdG9yYWdlUGF0aCwgZGlyZWN0b3J5LCBzY29wZWREaXJOYW1lKTtcbiAgICAgICAgICAgICAgLy8gbGlzdCBjb250ZW50IG9mIHN1Y2ggZGlyZWN0b3J5XG4gICAgICAgICAgICAgIGxpc3RQYWNrYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtkaXJlY3Rvcnl9LyR7c2NvcGVkRGlyTmFtZX1gLFxuICAgICAgICAgICAgICAgIHBhdGg6IHNjb3BlUGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIHJlYWQgYXMgc2luZ2xlIGxldmVsXG4gICAgICAgICAgaWYgKHZhbGlkYXRpb25IYW5kbGVyKGRpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjb3BlUGF0aCA9IHBhdGgucmVzb2x2ZShzdG9yYWdlUGF0aCwgZGlyZWN0b3J5KTtcbiAgICAgICAgICAgIGxpc3RQYWNrYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogZGlyZWN0b3J5LFxuICAgICAgICAgICAgICBwYXRoOiBzY29wZVBhdGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIHJlc29sdmUobGlzdFBhY2thZ2VzKTtcbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJnZXRGaWxlU3RhdHMiLCJwYWNrYWdlUGF0aCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnMiLCJzdGF0IiwiZXJyIiwic3RhdHMiLCJfIiwiaXNOaWwiLCJyZWFkRGlyZWN0b3J5IiwicmVhZGRpciIsInNjb3BlZFBhY2thZ2VzIiwiaGFzU2NvcGUiLCJmaWxlIiwibWF0Y2giLCJmaW5kUGFja2FnZXMiLCJzdG9yYWdlUGF0aCIsInZhbGlkYXRpb25IYW5kbGVyIiwibGlzdFBhY2thZ2VzIiwic2NvcGVQYXRoIiwicGF0aCIsInN0b3JhZ2VEaXJzIiwiZGlyZWN0b3J5Iiwic2NvcGVEaXJlY3RvcnkiLCJzY29wZWREaXJOYW1lIiwicHVzaCIsIm5hbWUiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFTyxTQUFTQSxZQUFULENBQXNCQyxXQUF0QixFQUFnRDtBQUNyRCxTQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdENDLGdCQUFHQyxJQUFILENBQVFMLFdBQVIsRUFBcUIsQ0FBQ00sR0FBRCxFQUFNQyxLQUFOLEtBQWdCO0FBQ25DLFVBQUlDLGdCQUFFQyxLQUFGLENBQVFILEdBQVIsTUFBaUIsS0FBckIsRUFBNEI7QUFDMUIsZUFBT0gsTUFBTSxDQUFDRyxHQUFELENBQWI7QUFDRDs7QUFDREosTUFBQUEsT0FBTyxDQUFDSyxLQUFELENBQVA7QUFDRCxLQUxEO0FBTUQsR0FQTSxDQUFQO0FBUUQ7O0FBRU0sU0FBU0csYUFBVCxDQUF1QlYsV0FBdkIsRUFBMEQ7QUFDL0QsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDQyxnQkFBR08sT0FBSCxDQUFXWCxXQUFYLEVBQXdCLENBQUNNLEdBQUQsRUFBTU0sY0FBTixLQUF5QjtBQUMvQyxVQUFJSixnQkFBRUMsS0FBRixDQUFRSCxHQUFSLE1BQWlCLEtBQXJCLEVBQTRCO0FBQzFCLGVBQU9ILE1BQU0sQ0FBQ0csR0FBRCxDQUFiO0FBQ0Q7O0FBRURKLE1BQUFBLE9BQU8sQ0FBQ1UsY0FBRCxDQUFQO0FBQ0QsS0FORDtBQU9ELEdBUk0sQ0FBUDtBQVNEOztBQUVELFNBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQWdDO0FBQzlCLFNBQU9BLElBQUksQ0FBQ0MsS0FBTCxDQUFXLElBQVgsQ0FBUDtBQUNEOztBQUVNLGVBQWVDLFlBQWYsQ0FBNEJDLFdBQTVCLEVBQWlEQyxpQkFBakQsRUFBOEU7QUFDbkYsUUFBTUMsWUFBbUIsR0FBRyxFQUE1QjtBQUNBLFNBQU8sSUFBSWxCLE9BQUosQ0FBWSxPQUFPQyxPQUFQLEVBQWdCQyxNQUFoQixLQUEyQjtBQUM1QyxRQUFJO0FBQ0YsWUFBTWlCLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixDQUFsQjs7QUFDQSxZQUFNSyxXQUFXLEdBQUcsTUFBTVosYUFBYSxDQUFDVSxTQUFELENBQXZDOztBQUNBLFdBQUssTUFBTUcsU0FBWCxJQUF3QkQsV0FBeEIsRUFBcUM7QUFDbkM7QUFDQSxZQUFJVCxRQUFRLENBQUNVLFNBQUQsQ0FBWixFQUF5QjtBQUN2QjtBQUNBLGdCQUFNQyxjQUFjLEdBQUdILGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQXZCOztBQUNBLGdCQUFNWCxjQUFjLEdBQUcsTUFBTUYsYUFBYSxDQUFDYyxjQUFELENBQTFDOztBQUNBLGVBQUssTUFBTUMsYUFBWCxJQUE0QmIsY0FBNUIsRUFBNEM7QUFDMUMsZ0JBQUlNLGlCQUFpQixDQUFDTyxhQUFELENBQXJCLEVBQXNDO0FBQ3BDO0FBQ0Esb0JBQU1MLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixFQUEwQk0sU0FBMUIsRUFBcUNFLGFBQXJDLENBQWxCLENBRm9DLENBR3BDOzs7QUFDQU4sY0FBQUEsWUFBWSxDQUFDTyxJQUFiLENBQWtCO0FBQ2hCQyxnQkFBQUEsSUFBSSxFQUFHLEdBQUVKLFNBQVUsSUFBR0UsYUFBYyxFQURwQjtBQUVoQkosZ0JBQUFBLElBQUksRUFBRUQ7QUFGVSxlQUFsQjtBQUlEO0FBQ0Y7QUFDRixTQWZELE1BZU87QUFDTDtBQUNBLGNBQUlGLGlCQUFpQixDQUFDSyxTQUFELENBQXJCLEVBQWtDO0FBQ2hDLGtCQUFNSCxTQUFTLEdBQUdDLGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQWxCOztBQUNBSixZQUFBQSxZQUFZLENBQUNPLElBQWIsQ0FBa0I7QUFDaEJDLGNBQUFBLElBQUksRUFBRUosU0FEVTtBQUVoQkYsY0FBQUEsSUFBSSxFQUFFRDtBQUZVLGFBQWxCO0FBSUQ7QUFDRjtBQUNGO0FBQ0YsS0EvQkQsQ0ErQkUsT0FBT1EsS0FBUCxFQUFjO0FBQ2R6QixNQUFBQSxNQUFNLENBQUN5QixLQUFELENBQU47QUFDRDs7QUFFRDFCLElBQUFBLE9BQU8sQ0FBQ2lCLFlBQUQsQ0FBUDtBQUNELEdBckNNLENBQVA7QUFzQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN0YXRzKHBhY2thZ2VQYXRoOiBzdHJpbmcpOiBhbnkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLnN0YXQocGFja2FnZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHN0YXRzKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGlyZWN0b3J5KHBhY2thZ2VQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLnJlYWRkaXIocGFja2FnZVBhdGgsIChlcnIsIHNjb3BlZFBhY2thZ2VzKSA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoc2NvcGVkUGFja2FnZXMpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFzU2NvcGUoZmlsZTogc3RyaW5nKSB7XG4gIHJldHVybiBmaWxlLm1hdGNoKC9eQC8pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFBhY2thZ2VzKHN0b3JhZ2VQYXRoOiBzdHJpbmcsIHZhbGlkYXRpb25IYW5kbGVyOiBGdW5jdGlvbikge1xuICBjb25zdCBsaXN0UGFja2FnZXM6IGFueVtdID0gW107XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlUGF0aCA9IHBhdGgucmVzb2x2ZShzdG9yYWdlUGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlRGlycyA9IGF3YWl0IHJlYWREaXJlY3Rvcnkoc2NvcGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIHN0b3JhZ2VEaXJzKSB7XG4gICAgICAgIC8vIHdlIGNoZWNrIHdoZXRoZXIgaGFzIDJuZCBsZXZlbFxuICAgICAgICBpZiAoaGFzU2NvcGUoZGlyZWN0b3J5KSkge1xuICAgICAgICAgIC8vIHdlIHJlYWQgZGlyZWN0b3J5IG11bHRpcGxlXG4gICAgICAgICAgY29uc3Qgc2NvcGVEaXJlY3RvcnkgPSBwYXRoLnJlc29sdmUoc3RvcmFnZVBhdGgsIGRpcmVjdG9yeSk7XG4gICAgICAgICAgY29uc3Qgc2NvcGVkUGFja2FnZXMgPSBhd2FpdCByZWFkRGlyZWN0b3J5KHNjb3BlRGlyZWN0b3J5KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHNjb3BlZERpck5hbWUgb2Ygc2NvcGVkUGFja2FnZXMpIHtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uSGFuZGxlcihzY29wZWREaXJOYW1lKSkge1xuICAgICAgICAgICAgICAvLyB3ZSBidWlsZCB0aGUgY29tcGxldGUgc2NvcGUgcGF0aFxuICAgICAgICAgICAgICBjb25zdCBzY29wZVBhdGggPSBwYXRoLnJlc29sdmUoc3RvcmFnZVBhdGgsIGRpcmVjdG9yeSwgc2NvcGVkRGlyTmFtZSk7XG4gICAgICAgICAgICAgIC8vIGxpc3QgY29udGVudCBvZiBzdWNoIGRpcmVjdG9yeVxuICAgICAgICAgICAgICBsaXN0UGFja2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogYCR7ZGlyZWN0b3J5fS8ke3Njb3BlZERpck5hbWV9YCxcbiAgICAgICAgICAgICAgICBwYXRoOiBzY29wZVBhdGhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG90aGVyd2lzZSB3ZSByZWFkIGFzIHNpbmdsZSBsZXZlbFxuICAgICAgICAgIGlmICh2YWxpZGF0aW9uSGFuZGxlcihkaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICBjb25zdCBzY29wZVBhdGggPSBwYXRoLnJlc29sdmUoc3RvcmFnZVBhdGgsIGRpcmVjdG9yeSk7XG4gICAgICAgICAgICBsaXN0UGFja2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGRpcmVjdG9yeSxcbiAgICAgICAgICAgICAgcGF0aDogc2NvcGVQYXRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKGxpc3RQYWNrYWdlcyk7XG4gIH0pO1xufVxuIl19
{
"name": "@verdaccio/local-storage",
"version": "2.1.0",
"version": "2.2.1",
"description": "local storage implementation",

@@ -8,4 +8,4 @@ "main": "lib/index.js",

"release": "standard-version -a -s",
"test": "npm run lint && jest",
"lint": "eslint .",
"test": "jest",
"lint": "eslint . --ext .js,.ts",
"commitmsg": "commitlint -e $GIT_PARAMS",

@@ -22,6 +22,6 @@ "type-check": "tsc --noEmit",

"dependencies": {
"@verdaccio/file-locking": "1.0.0",
"@verdaccio/streams": "2.0.0-beta.0",
"async": "3.0.1-0",
"http-errors": "1.7.2",
"@verdaccio/file-locking": "1.0.3",
"@verdaccio/streams": "2.0.0",
"async": "3.1.0",
"http-errors": "1.7.3",
"lodash": "4.17.11",

@@ -31,26 +31,22 @@ "mkdirp": "0.5.1"

"devDependencies": {
"@commitlint/cli": "7.5.2",
"@commitlint/config-conventional": "7.5.0",
"@commitlint/cli": "8.0.0",
"@commitlint/config-conventional": "8.0.0",
"@types/http-errors": "1.6.1",
"@types/jest": "24.0.11",
"@types/lodash": "^4.14.123",
"@types/jest": "24.0.15",
"@types/lodash": "^4.14.135",
"@types/minimatch": "^3.0.3",
"@types/node": "11.12.1",
"@typescript-eslint/eslint-plugin": "1.5.0",
"@verdaccio/babel-preset": "0.1.0",
"@types/node": "12.0.10",
"@typescript-eslint/eslint-plugin": "1.11.0",
"@verdaccio/babel-preset": "0.2.1",
"@verdaccio/eslint-config": "0.0.1",
"@verdaccio/types": "5.0.0-beta.4",
"codecov": "3.2.0",
"codecov": "3.5.0",
"cross-env": "5.2.0",
"eslint": "5.15.3",
"eslint-config-google": "0.12.0",
"eslint-config-prettier": "4.1.0",
"eslint-plugin-jest": "22.4.1",
"eslint-plugin-prettier": "3.0.1",
"husky": "0.14.3",
"jest": "24.5.0",
"jest": "24.8.0",
"minimatch": "3.0.4",
"prettier": "1.16.4",
"rmdir-sync": "1.0.1",
"standard-version": "5.0.2",
"typescript": "3.2.1"
"standard-version": "6.0.1",
"typescript": "3.5.2"
},

@@ -57,0 +53,0 @@ "publishConfig": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc