@fjall/util 0.27.13 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,9 @@ export declare class Config {
39
39
  * Find the fjall config directory by walking up the directory tree
40
40
  * @returns The path to the fjall config directory or null if not found
41
41
  */
42
- private static findConfigDirectory;
42
+ static findConfigDirectory(): string | null;
43
+ static getFjallDirectoryOrDefault(): string;
44
+ static getFjallSubPath(subPath: string): string | null;
43
45
  /**
44
46
  * Load config file into memory as a raw JSON string
45
47
  * @returns Config as JSON string or NULL if no config file accessible
@@ -59,6 +59,16 @@ class Config {
59
59
  }
60
60
  return null;
61
61
  }
62
+ static getFjallDirectoryOrDefault() {
63
+ return Config.findConfigDirectory() || "./fjall";
64
+ }
65
+ static getFjallSubPath(subPath) {
66
+ const fjallDir = Config.findConfigDirectory();
67
+ if (!fjallDir)
68
+ return null;
69
+ const path = require("path");
70
+ return path.join(fjallDir, subPath);
71
+ }
62
72
  /**
63
73
  * Load config file into memory as a raw JSON string
64
74
  * @returns Config as JSON string or NULL if no config file accessible
@@ -308,4 +318,4 @@ class Config {
308
318
  }
309
319
  }
310
320
  exports.Config = Config;
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsd0VBSXVDO0FBQ3ZDLG9EQUEwRTtBQUMxRSx3RUFLdUM7QUFnQ3ZDOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFhLE1BQU07SUFLakIsWUFDRSxVQUFtQixFQUNuQixzQkFBa0MsRUFDbEMsd0JBQStDO1FBRS9DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVTtZQUMxQixDQUFDLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQztnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixRQUFRLEVBQUUsRUFBRTtnQkFDWixnQkFBZ0IsRUFBRSxFQUFFO2FBQ3JCLENBQUM7UUFFTixJQUFJLENBQUMsc0JBQXNCLEdBQUcsc0JBQXNCO1lBQ2xELENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0I7WUFDdEQsQ0FBQyxDQUFDLHdCQUF3QjtZQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLG1CQUFtQjtRQUNoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjtRQUU5QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFB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e1xuICBBY2NvdW50LFxuICBMaXN0QWNjb3VudHNDb21tYW5kLFxuICBPcmdhbml6YXRpb25zQ2xpZW50LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LW9yZ2FuaXphdGlvbnNcIjtcbmltcG9ydCB7IFNUU0NsaWVudCwgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zdHNcIjtcbmltcG9ydCB7XG4gIENvc3RFeHBsb3JlckNsaWVudCxcbiAgTGlzdENvc3RBbGxvY2F0aW9uVGFnc0NvbW1hbmQsXG4gIEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmQsXG4gIEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmRJbnB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1jb3N0LWV4cGxvcmVyXCI7XG5cbnR5cGUgUHJvdmlkZXIgPSBcImF3c1wiO1xuXG50eXBlIFNlcnZpY2VDb25maWcgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBudW1iZXI7XG4gIG9wdGlvbnM/OiBvYmplY3Q7XG59O1xuXG50eXBlIFByb3ZpZGVyQWNjb3VudCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xufTtcblxudHlwZSBSb290Q29uZmlnID0ge1xuICB2ZXJzaW9uPzogbnVtYmVyO1xuICBkZXZlbG9wbWVudD86IGJvb2xlYW47XG4gIHNlcnZpY2VzPzogeyBba2V5OiBzdHJpbmddOiBTZXJ2aWNlQ29uZmlnIH07XG4gIHByb3ZpZGVyPzogUHJvdmlkZXI7XG4gIHByb3ZpZGVyQWNjb3VudHM/OiBQcm92aWRlckFjY291bnRbXTtcbiAgcHJpbWFyeVJlZ2lvbj86IHN0cmluZztcbiAgc2Vjb25kYXJ5UmVnaW9ucz86IHN0cmluZ1tdO1xufTtcblxudHlwZSBDb3N0QWxsb2NhdGlvblRhZ3MgPSB7XG4gIFRhZ0tleTogc3RyaW5nO1xuICBTdGF0dXM6IHN0cmluZztcbn07XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgYmFzZS12ZXJzaW9uIG9mIGFueSBuZXdseSBjcmVhdGVkIGNvbmZpZyBmaWxlXG4gKi9cbmNvbnN0IEJBU0VfQ09ORklHX1ZFUlNJT04gPSAwLjE7XG5cbi8qKlxuICogQ29uZmlnIGNsYXNzIGZvciBsb2FkaW5nIGFuZCBzYXZpbmcgZmphbGwtY29uZmlnLmpzb24gZmlsZVxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlnIHtcbiAgcm9vdENvbmZpZzogUm9vdENvbmZpZztcbiAgZXhpc3RpbmdBY2NvdW50c0NvbmZpZzogQWNjb3VudFtdO1xuICBjb3N0QWxsb2NhdGlvblRhZ3NDb25maWc6IENvc3RBbGxvY2F0aW9uVGFnc1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RDb25maWc/OiBvYmplY3QsXG4gICAgZXhpc3RpbmdBY2NvdW50c0NvbmZpZz86IEFjY291bnRbXSxcbiAgICBjb3N0QWxsb2NhdGlvblRhZ3NDb25maWc/OiBDb3N0QWxsb2NhdGlvblRhZ3NbXVxuICApIHtcbiAgICB0aGlzLnJvb3RDb25maWcgPSByb290Q29uZmlnXG4gICAgICA/IHJvb3RDb25maWdcbiAgICAgIDoge1xuICAgICAgICAgIHZlcnNpb246IEJBU0VfQ09ORklHX1ZFUlNJT04sXG4gICAgICAgICAgc2VydmljZXM6IHt9LFxuICAgICAgICAgIHByb3ZpZGVyQWNjb3VudHM6IFtdLFxuICAgICAgICB9O1xuXG4gICAgdGhpcy5leGlzdGluZ0FjY291bnRzQ29uZmlnID0gZXhpc3RpbmdBY2NvdW50c0NvbmZpZ1xuICAgICAgPyBleGlzdGluZ0FjY291bnRzQ29uZmlnXG4gICAgICA6IFtdO1xuXG4gICAgdGhpcy5jb3N0QWxsb2NhdGlvblRhZ3NDb25maWcgPSBjb3N0QWxsb2NhdGlvblRhZ3NDb25maWdcbiAgICAgID8gY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnXG4gICAgICA6IFtdO1xuICB9XG5cbiAgaXNEZXZlbG9wbWVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJvb3RDb25maWc/LmRldmVsb3BtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIGZqYWxsIGNvbmZpZyBkaXJlY3RvcnkgYnkgd2Fsa2luZyB1cCB0aGUgZGlyZWN0b3J5IHRyZWVcbiAgICogQHJldHVybnMgVGhlIHBhdGggdG8gdGhlIGZqYWxsIGNvbmZpZyBkaXJlY3Rvcnkgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGZpbmRDb25maWdEaXJlY3RvcnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuXG4gICAgbGV0IGN1cnJlbnREaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG1heERlcHRoID0gMTA7IC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcHNcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4RGVwdGg7IGkrKykge1xuICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBkaXJlY3RvcnkgY29udGFpbnMgZmphbGwgY29uZmlnIGZpbGVzXG4gICAgICBjb25zdCBmamFsbERpciA9IHBhdGguam9pbihjdXJyZW50RGlyLCBcImZqYWxsXCIpO1xuICAgICAgY29uc3QgY29uZmlnRmlsZSA9IHBhdGguam9pbihmamFsbERpciwgXCJmamFsbC1jb25maWcuanNvblwiKTtcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZqYWxsRGlyO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IGRpcmVjdG9yeSBJUyB0aGUgZmphbGwgY29uZmlnIGRpcmVjdG9yeVxuICAgICAgY29uc3QgZGlyZWN0Q29uZmlnRmlsZSA9IHBhdGguam9pbihjdXJyZW50RGlyLCBcImZqYWxsLWNvbmZpZy5qc29uXCIpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoZGlyZWN0Q29uZmlnRmlsZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnREaXI7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vdmUgdXAgb25lIGRpcmVjdG9yeVxuICAgICAgY29uc3QgcGFyZW50RGlyID0gcGF0aC5kaXJuYW1lKGN1cnJlbnREaXIpO1xuICAgICAgaWYgKHBhcmVudERpciA9PT0gY3VycmVudERpcikgYnJlYWs7IC8vIFJlYWNoZWQgZmlsZXN5c3RlbSByb290XG4gICAgICBjdXJyZW50RGlyID0gcGFyZW50RGlyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgY29uZmlnIGZpbGUgaW50byBtZW1vcnkgYXMgYSByYXcgSlNPTiBzdHJpbmdcbiAgICogQHJldHVybnMgQ29uZmlnIGFzIEpTT04gc3RyaW5nIG9yIE5VTEwgaWYgbm8gY29uZmlnIGZpbGUgYWNjZXNzaWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZENvbmZpZ0ZpbGUoY29uZmlnRmlsZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGZzLmFjY2Vzc1N5bmMoY29uZmlnRmlsZSwgZnMuY29uc3RhbnRzLlJfT0sgfCBmcy5jb25zdGFudHMuV19PSyk7XG5cbiAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoY29uZmlnRmlsZSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgLy8gICBgRXhwZWN0ZWQgZmlsZSAnJHtjb25maWdGaWxlfScgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90IGJlIHJlYWQuYFxuICAgICAgLy8gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBmaWxlXG4gICAqXG4gICAqIEByZXR1cm5zIExvYWRlZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgbG9hZENvbmZpZygpOiBDb25maWcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWdEaXIgPSBDb25maWcuZmluZENvbmZpZ0RpcmVjdG9yeSgpO1xuICAgICAgaWYgKCFjb25maWdEaXIpIHtcbiAgICAgICAgLy8gUmV0dXJuIGRlZmF1bHQgY29uZmlnIGlmIG5vIGNvbmZpZyBkaXJlY3RvcnkgZm91bmRcbiAgICAgICAgcmV0dXJuIG5ldyBDb25maWcoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgICAgY29uc3Qgcm9vdENvbmZpZ0pzb24gPSBDb25maWcubG9hZENvbmZpZ0ZpbGUoXG4gICAgICAgIHBhdGguam9pbihjb25maWdEaXIsIFwiZmphbGwtY29uZmlnLmpzb25cIilcbiAgICAgICk7XG4gICAgICBjb25zdCBleGlzdGluZ0FjY291bnRKc29uID0gQ29uZmlnLmxvYWRDb25maWdGaWxlKFxuICAgICAgICBwYXRoLmpvaW4oY29uZmlnRGlyLCBcImFjY291bnRzLWNvbmZpZy5qc29uXCIpXG4gICAgICApO1xuICAgICAgY29uc3QgY29zdEFsbG9jYXRpb25UYWdzSnNvbiA9IENvbmZpZy5sb2FkQ29uZmlnRmlsZShcbiAgICAgICAgcGF0aC5qb2luKGNvbmZpZ0RpciwgXCJjb3N0LWFsbG9jYXRpb24tdGFncy1jb25maWcuanNvblwiKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgcm9vdENvbmZpZyA9IHJvb3RDb25maWdKc29uXG4gICAgICAgID8gSlNPTi5wYXJzZShyb290Q29uZmlnSnNvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBleGlzdGluZ0FjY291bnRzQ29uZmlnID0gZXhpc3RpbmdBY2NvdW50SnNvblxuICAgICAgICA/IEpTT04ucGFyc2UoZXhpc3RpbmdBY2NvdW50SnNvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBjb3N0QWxsb2NhdGlvblRhZ3NDb25maWcgPSBjb3N0QWxsb2NhdGlvblRhZ3NKc29uXG4gICAgICAgID8gSlNPTi5wYXJzZShjb3N0QWxsb2NhdGlvblRhZ3NKc29uKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIG5ldyBDb25maWcoXG4gICAgICAgIHJvb3RDb25maWcsXG4gICAgICAgIGV4aXN0aW5nQWNjb3VudHNDb25maWcsXG4gICAgICAgIGNvc3RBbGxvY2F0aW9uVGFnc0NvbmZpZ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gcGFyc2UgY29uZmlnIGZpbGUuIEFib3J0aW5nLlwiLCBlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGNvbmZpZ3VyYXRpb24gdG8gZmlsZVxuICAgKi9cbiAgc2F2ZUNvbmZpZygpIHtcbiAgICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgY29uc3QgY29uZmlnRGlyID1cbiAgICAgIENvbmZpZy5maW5kQ29uZmlnRGlyZWN0b3J5KCkgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiZmphbGxcIik7XG5cbiAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xuICAgIGZzLm1rZGlyU3luYyhjb25maWdEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgcm9vdEpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnJvb3RDb25maWcsIG51bGwsIDIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKGNvbmZpZ0RpciwgXCJmamFsbC1jb25maWcuanNvblwiKSwgcm9vdEpzb25TdHJpbmcpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdBY2NvdW50c0pzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHRoaXMuZXhpc3RpbmdBY2NvdW50c0NvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICAyXG4gICAgKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKGNvbmZpZ0RpciwgXCJhY2NvdW50cy1jb25maWcuanNvblwiKSxcbiAgICAgIGV4aXN0aW5nQWNjb3VudHNKc29uU3RyaW5nXG4gICAgKTtcblxuICAgIGNvbnN0IGNvc3RBbGxvY2F0aW9uVGFnc0pzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnLFxuICAgICAgbnVsbCxcbiAgICAgIDJcbiAgICApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oY29uZmlnRGlyLCBcImNvc3QtYWxsb2NhdGlvbi10YWdzLWNvbmZpZy5qc29uXCIpLFxuICAgICAgY29zdEFsbG9jYXRpb25UYWdzSnNvblN0cmluZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzY2hlbWEgdmVyc2lvbiB1c2VkIGZvciB0aGlzIGNvbmZpZyBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFNjaGVtYSBWZXJzaW9uXG4gICAqL1xuICBzZXRWZXJzaW9uKHZlcnNpb246IG51bWJlcikge1xuICAgIHRoaXMucm9vdENvbmZpZy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgc2VydmljZSB0byB0aGUgY29uZmlnIGZpbGVcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKi9cbiAgYWRkU2VydmljZShzZXJ2aWNlS2V5OiBzdHJpbmcsIGNvbmZpZzogU2VydmljZUNvbmZpZykge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSB0aGlzLnJvb3RDb25maWcuc2VydmljZXMgPSB7fTtcbiAgICB0aGlzLnJvb3RDb25maWcuc2VydmljZXNbc2VydmljZUtleV0gPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbmZpZyBvcHRpb25zIG9uIGEgcHJldmlvdXNseSBkZWZpbmVkIHNlcnZpY2VcbiAgICpcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBzZXRcbiAgICovXG4gIHNldFNlcnZpY2VPcHRpb24oc2VydmljZUtleTogc3RyaW5nLCBjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5zZXJ2aWNlcykgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzID0ge307XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldO1xuICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldID0geyAuLi5zZXJ2aWNlLCAuLi5jb25maWcgfTtcbiAgfVxuXG4gIGdldFNlcnZpY2VDb25maWcoc2VydmljZUtleTogc3RyaW5nKTogU2VydmljZUNvbmZpZyB8IG51bGwge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldIHx8IG51bGw7XG4gIH1cblxuICBzZXRQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIpIHtcbiAgICB0aGlzLnJvb3RDb25maWcucHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgfVxuXG4gIGFkZFByb3ZpZGVyQWNjb3VudChhY2NvdW50OiBQcm92aWRlckFjY291bnQpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKVxuICAgICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMgPSBbXTtcblxuICAgIC8vIGVuc3VyZSBhY2NvdW50IG5hbWUgaXMgYWx3YXlzIGxvd2VyY2FzZVxuICAgIGFjY291bnQubmFtZSA9IGFjY291bnQubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMucHVzaChhY2NvdW50KTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVE9ETzogRml4IG51bGwgZXJyb3JcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMuZmluZChcbiAgICAgIChhY2NvdW50KSA9PlxuICAgICAgICBhY2NvdW50Lm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gYWNjb3VudE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICk7XG4gIH1cblxuICBnZXRQcm92aWRlckFjY291bnRCeUlkKGFjY291bnRJZDogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnJvb3RDb25maWcucHJvdmlkZXJBY2NvdW50cykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjb3VudCkgPT4gYWNjb3VudC5pZCA9PT0gYWNjb3VudElkXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3ZpZGVyQWNjb3VudEVudmlyb25tZW50cyhhY2NvdW50VHlwZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiByZWFkb25seSBzdHJpbmdbXTtcbiAgfSkge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgW2Vudmlyb25tZW50VHlwZSwgYWNjb3VudE5hbWVzXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgIGFjY291bnRUeXBlc1xuICAgICkpIHtcbiAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgYWNjb3VudE5hbWVzKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZSk7XG4gICAgICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAgICAgYWNjb3VudC5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50VHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEV4aXN0aW5nQWNjb3VudHMocmVnaW9uOiBzdHJpbmcpIHtcbiAgICAvLyBNYWtlIEFQSSBDYWxsXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IE9yZ2FuaXphdGlvbnNDbGllbnQoe1xuICAgICAgcmVnaW9uOiByZWdpb24sXG4gICAgfSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBMaXN0QWNjb3VudHNDb21tYW5kKHtcbiAgICAgIE1heFJlc3VsdHM6IE51bWJlcihcIjIwXCIpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChyZXF1ZXN0KTtcbiAgICB0aGlzLmV4aXN0aW5nQWNjb3VudHNDb25maWcgPSByZXNwb25zZS5BY2NvdW50cyB8fCBbXTtcbiAgfVxuXG4gIGdldEV4aXN0aW5nQWNjb3VudHMoKTogQWNjb3VudFtdIHtcbiAgICByZXR1cm4gdGhpcy5leGlzdGluZ0FjY291bnRzQ29uZmlnO1xuICB9XG5cbiAgYXN5bmMgZ2V0QVdTQWNjb3VudElkKCkge1xuICAgIGNvbnN0IHN0c0NsaWVudCA9IG5ldyBTVFNDbGllbnQoe30pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKHJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlPy5BY2NvdW50IHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldFByaW1hcnlSZWdpb24ocmVnaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvb3RDb25maWcucHJpbWFyeVJlZ2lvbiA9IHJlZ2lvbjtcbiAgfVxuXG4gIHNldFNlY29uZGFyeVJlZ2lvbnMocmVnaW9uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnJvb3RDb25maWcuc2Vjb25kYXJ5UmVnaW9ucyA9IHJlZ2lvbnM7XG4gIH1cblxuICBnZXRQcmltYXJ5UmVnaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5wcmltYXJ5UmVnaW9uO1xuICB9XG5cbiAgZ2V0U2Vjb25kYXJ5UmVnaW9ucygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5zZWNvbmRhcnlSZWdpb25zO1xuICB9XG5cbiAgYXN5bmMgc2V0Q29zdEFsbG9jYXRpb25UYWdzKFxuICAgIGNvc3RBbGxvY2F0aW9uVGFnczogQ29zdEFsbG9jYXRpb25UYWdzW11cbiAgKTogUHJvbWlzZTx7IGVuYWJsZWQ6IGJvb2xlYW47IGhhc1RhZ3M6IGJvb2xlYW4gfT4ge1xuICAgIC8vIElmIGNvc3QgZXhwbG9yZXIgaXMgbm90IGVuYWJsZWQsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheVxuICAgIGNvbnN0IGlzQ29zdEV4cGxvcmVyRW5hYmxlZCA9IGF3YWl0IHRoaXMuaXNBV1NDb3N0RXhwbG9yZXJFbmFibGVkKCk7XG4gICAgaWYgKCFpc0Nvc3RFeHBsb3JlckVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnID0gW107XG4gICAgICByZXR1cm4geyBlbmFibGVkOiBmYWxzZSwgaGFzVGFnczogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29zdEV4cGxvcmVyQ2xpZW50KHsgcmVnaW9uOiBcInVzLWVhc3QtMVwiIH0pOyAvLyBDb3N0IGV4cGxvcmVyIG9ubHkgZXhpc3RzIGluIHVzLWVhc3QtMVxuXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBMaXN0Q29zdEFsbG9jYXRpb25UYWdzQ29tbWFuZCh7fSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcblxuICAgIC8vIFRhcmdldCBzcGVjaWZpYyB1c2VyLWRlZmluZWQgdGFnc1xuICAgIGNvbnN0IHRhcmdldFVzZXJUYWdzID0gW1xuICAgICAgXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpvd25lclwiLFxuICAgIF07XG5cbiAgICAvLyBGaWx0ZXIgYW5kIHByb2Nlc3MgdGFnc1xuICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnID0gKHJlc3BvbnNlLkNvc3RBbGxvY2F0aW9uVGFncyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoKHRhZykgPT4ge1xuICAgICAgICAvLyBTa2lwIHRhZ3Mgd2l0aG91dCBhIGtleVxuICAgICAgICBpZiAoIXRhZy5UYWdLZXkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBLZWVwIGFsbCBBV1MtZ2VuZXJhdGVkIHRhZ3NcbiAgICAgICAgaWYgKHRhZy5UeXBlID09PSBcIkFXU0dlbmVyYXRlZFwiKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAvLyBLZWVwIG9ubHkgc3BlY2lmaWMgdXNlci1kZWZpbmVkIHRhZ3NcbiAgICAgICAgcmV0dXJuIHRhcmdldFVzZXJUYWdzLmluY2x1ZGVzKHRhZy5UYWdLZXkpO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKHRhZykgPT4gKHtcbiAgICAgICAgVGFnS2V5OiB0YWcuVGFnS2V5IHx8IFwiXCIsXG4gICAgICAgIFN0YXR1czogdGFnLlN0YXR1cyB8fCBcIlVua25vd25cIixcbiAgICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgaGFzVGFnczogdGhpcy5jb3N0QWxsb2NhdGlvblRhZ3NDb25maWcubGVuZ3RoID4gMCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaXNBV1NDb3N0RXhwbG9yZXJFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29zdEV4cGxvcmVyQ2xpZW50KHsgcmVnaW9uOiBcInVzLWVhc3QtMVwiIH0pO1xuXG4gICAgICAvLyBNYWtlIGEgc2ltcGxlIEFQSSBjYWxsIHRvIGNoZWNrIGlmIENvc3QgRXhwbG9yZXIgaXMgYWNjZXNzaWJsZVxuICAgICAgY29uc3QgaW5wdXQ6IEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmRJbnB1dCA9IHtcbiAgICAgICAgVGltZVBlcmlvZDoge1xuICAgICAgICAgIFN0YXJ0OiB0aGlzLmdldERhdGVYRGF5c0FnbygzMCksXG4gICAgICAgICAgRW5kOiB0aGlzLmdldEZvcm1hdHRlZERhdGUobmV3IERhdGUoKSksXG4gICAgICAgIH0sXG4gICAgICAgIERpbWVuc2lvbjogXCJTRVJWSUNFXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmQoaW5wdXQpO1xuICAgICAgYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmIChlcnJvci5fX3R5cGUgPT09IFwiRGF0YVVuYXZhaWxhYmxlRXhjZXB0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkNvc3QgRXhwbG9yZXIgZGF0YSBpcyBub3QgYXZhaWxhYmxlIHlldC4gVGhlIHNlcnZpY2UgbWlnaHQgYmUgZW5hYmxlZCBidXQgc3RpbGwgcHJlcGFyaW5nIGRhdGEuXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIFNlcnZpY2UgaXMgZW5hYmxlZCBidXQgZGF0YSBub3QgcmVhZHlcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IuX190eXBlID09PSBcIlVucmVjb2duaXplZENsaWVudEV4Y2VwdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJDb3N0IEV4cGxvcmVyIGlzIG5vdCBlbmFibGVkIGZvciB0aGlzIGFjY291bnQgb3IgY3JlZGVudGlhbHMgYXJlIGludmFsaWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgXCJUaXA6IENoZWNrIGlmIHlvdSd2ZSBlbmFibGUgaXQgaW4gdGhlIEFXUyBCaWxsaW5nIGNvbnNvbGUuXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNoZWNraW5nIENvc3QgRXhwbG9yZXIgc3RhdHVzOlwiLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXREYXRlWERheXNBZ28oZGF5czogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXlzKTtcbiAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWREYXRlKGRhdGUpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkRGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgfVxuXG4gIGdldENvc3RBbGxvY2F0aW9uVGFncygpOiBDb3N0QWxsb2NhdGlvblRhZ3NbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnO1xuICB9XG59XG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsd0VBSXVDO0FBQ3ZDLG9EQUEwRTtBQUMxRSx3RUFLdUM7QUFnQ3ZDOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFhLE1BQU07SUFLakIsWUFDRSxVQUFtQixFQUNuQixzQkFBa0MsRUFDbEMsd0JBQStDO1FBRS9DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVTtZQUMxQixDQUFDLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQztnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixRQUFRLEVBQUUsRUFBRTtnQkFDWixnQkFBZ0IsRUFBRSxFQUFFO2FBQ3JCLENBQUM7UUFFTixJQUFJLENBQUMsc0JBQXNCLEdBQUcsc0JBQXNCO1lBQ2xELENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0I7WUFDdEQsQ0FBQyxDQUFDLHdCQUF3QjtZQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQjtRQUMvQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjtRQUU5QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFB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SUFBSSxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVU7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBaFpELHdCQWdaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHtcbiAgQWNjb3VudCxcbiAgTGlzdEFjY291bnRzQ29tbWFuZCxcbiAgT3JnYW5pemF0aW9uc0NsaWVudCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1vcmdhbml6YXRpb25zXCI7XG5pbXBvcnQgeyBTVFNDbGllbnQsIEdldENhbGxlcklkZW50aXR5Q29tbWFuZCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc3RzXCI7XG5pbXBvcnQge1xuICBDb3N0RXhwbG9yZXJDbGllbnQsXG4gIExpc3RDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kLFxuICBHZXREaW1lbnNpb25WYWx1ZXNDb21tYW5kLFxuICBHZXREaW1lbnNpb25WYWx1ZXNDb21tYW5kSW5wdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtY29zdC1leHBsb3JlclwiO1xuXG50eXBlIFByb3ZpZGVyID0gXCJhd3NcIjtcblxudHlwZSBTZXJ2aWNlQ29uZmlnID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogbnVtYmVyO1xuICBvcHRpb25zPzogb2JqZWN0O1xufTtcblxudHlwZSBQcm92aWRlckFjY291bnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbn07XG5cbnR5cGUgUm9vdENvbmZpZyA9IHtcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgZGV2ZWxvcG1lbnQ/OiBib29sZWFuO1xuICBzZXJ2aWNlcz86IHsgW2tleTogc3RyaW5nXTogU2VydmljZUNvbmZpZyB9O1xuICBwcm92aWRlcj86IFByb3ZpZGVyO1xuICBwcm92aWRlckFjY291bnRzPzogUHJvdmlkZXJBY2NvdW50W107XG4gIHByaW1hcnlSZWdpb24/OiBzdHJpbmc7XG4gIHNlY29uZGFyeVJlZ2lvbnM/OiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgQ29zdEFsbG9jYXRpb25UYWdzID0ge1xuICBUYWdLZXk6IHN0cmluZztcbiAgU3RhdHVzOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFRoZSBjdXJyZW50IGJhc2UtdmVyc2lvbiBvZiBhbnkgbmV3bHkgY3JlYXRlZCBjb25maWcgZmlsZVxuICovXG5jb25zdCBCQVNFX0NPTkZJR19WRVJTSU9OID0gMC4xO1xuXG4vKipcbiAqIENvbmZpZyBjbGFzcyBmb3IgbG9hZGluZyBhbmQgc2F2aW5nIGZqYWxsLWNvbmZpZy5qc29uIGZpbGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIHJvb3RDb25maWc6IFJvb3RDb25maWc7XG4gIGV4aXN0aW5nQWNjb3VudHNDb25maWc6IEFjY291bnRbXTtcbiAgY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnOiBDb3N0QWxsb2NhdGlvblRhZ3NbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByb290Q29uZmlnPzogb2JqZWN0LFxuICAgIGV4aXN0aW5nQWNjb3VudHNDb25maWc/OiBBY2NvdW50W10sXG4gICAgY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnPzogQ29zdEFsbG9jYXRpb25UYWdzW11cbiAgKSB7XG4gICAgdGhpcy5yb290Q29uZmlnID0gcm9vdENvbmZpZ1xuICAgICAgPyByb290Q29uZmlnXG4gICAgICA6IHtcbiAgICAgICAgICB2ZXJzaW9uOiBCQVNFX0NPTkZJR19WRVJTSU9OLFxuICAgICAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgICAgICBwcm92aWRlckFjY291bnRzOiBbXSxcbiAgICAgICAgfTtcblxuICAgIHRoaXMuZXhpc3RpbmdBY2NvdW50c0NvbmZpZyA9IGV4aXN0aW5nQWNjb3VudHNDb25maWdcbiAgICAgID8gZXhpc3RpbmdBY2NvdW50c0NvbmZpZ1xuICAgICAgOiBbXTtcblxuICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnID0gY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnXG4gICAgICA/IGNvc3RBbGxvY2F0aW9uVGFnc0NvbmZpZ1xuICAgICAgOiBbXTtcbiAgfVxuXG4gIGlzRGV2ZWxvcG1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yb290Q29uZmlnPy5kZXZlbG9wbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBmamFsbCBjb25maWcgZGlyZWN0b3J5IGJ5IHdhbGtpbmcgdXAgdGhlIGRpcmVjdG9yeSB0cmVlXG4gICAqIEByZXR1cm5zIFRoZSBwYXRoIHRvIHRoZSBmamFsbCBjb25maWcgZGlyZWN0b3J5IG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRDb25maWdEaXJlY3RvcnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuXG4gICAgbGV0IGN1cnJlbnREaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG1heERlcHRoID0gMTA7IC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcHNcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4RGVwdGg7IGkrKykge1xuICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBkaXJlY3RvcnkgY29udGFpbnMgZmphbGwgY29uZmlnIGZpbGVzXG4gICAgICBjb25zdCBmamFsbERpciA9IHBhdGguam9pbihjdXJyZW50RGlyLCBcImZqYWxsXCIpO1xuICAgICAgY29uc3QgY29uZmlnRmlsZSA9IHBhdGguam9pbihmamFsbERpciwgXCJmamFsbC1jb25maWcuanNvblwiKTtcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZqYWxsRGlyO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IGRpcmVjdG9yeSBJUyB0aGUgZmphbGwgY29uZmlnIGRpcmVjdG9yeVxuICAgICAgY29uc3QgZGlyZWN0Q29uZmlnRmlsZSA9IHBhdGguam9pbihjdXJyZW50RGlyLCBcImZqYWxsLWNvbmZpZy5qc29uXCIpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoZGlyZWN0Q29uZmlnRmlsZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnREaXI7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vdmUgdXAgb25lIGRpcmVjdG9yeVxuICAgICAgY29uc3QgcGFyZW50RGlyID0gcGF0aC5kaXJuYW1lKGN1cnJlbnREaXIpO1xuICAgICAgaWYgKHBhcmVudERpciA9PT0gY3VycmVudERpcikgYnJlYWs7IC8vIFJlYWNoZWQgZmlsZXN5c3RlbSByb290XG4gICAgICBjdXJyZW50RGlyID0gcGFyZW50RGlyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGamFsbERpcmVjdG9yeU9yRGVmYXVsdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBDb25maWcuZmluZENvbmZpZ0RpcmVjdG9yeSgpIHx8IFwiLi9mamFsbFwiO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGamFsbFN1YlBhdGgoc3ViUGF0aDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZmphbGxEaXIgPSBDb25maWcuZmluZENvbmZpZ0RpcmVjdG9yeSgpO1xuICAgIGlmICghZmphbGxEaXIpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHJldHVybiBwYXRoLmpvaW4oZmphbGxEaXIsIHN1YlBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgY29uZmlnIGZpbGUgaW50byBtZW1vcnkgYXMgYSByYXcgSlNPTiBzdHJpbmdcbiAgICogQHJldHVybnMgQ29uZmlnIGFzIEpTT04gc3RyaW5nIG9yIE5VTEwgaWYgbm8gY29uZmlnIGZpbGUgYWNjZXNzaWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZENvbmZpZ0ZpbGUoY29uZmlnRmlsZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGZzLmFjY2Vzc1N5bmMoY29uZmlnRmlsZSwgZnMuY29uc3RhbnRzLlJfT0sgfCBmcy5jb25zdGFudHMuV19PSyk7XG5cbiAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoY29uZmlnRmlsZSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgLy8gICBgRXhwZWN0ZWQgZmlsZSAnJHtjb25maWdGaWxlfScgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90IGJlIHJlYWQuYFxuICAgICAgLy8gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBmaWxlXG4gICAqXG4gICAqIEByZXR1cm5zIExvYWRlZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgbG9hZENvbmZpZygpOiBDb25maWcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWdEaXIgPSBDb25maWcuZmluZENvbmZpZ0RpcmVjdG9yeSgpO1xuICAgICAgaWYgKCFjb25maWdEaXIpIHtcbiAgICAgICAgLy8gUmV0dXJuIGRlZmF1bHQgY29uZmlnIGlmIG5vIGNvbmZpZyBkaXJlY3RvcnkgZm91bmRcbiAgICAgICAgcmV0dXJuIG5ldyBDb25maWcoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgICAgY29uc3Qgcm9vdENvbmZpZ0pzb24gPSBDb25maWcubG9hZENvbmZpZ0ZpbGUoXG4gICAgICAgIHBhdGguam9pbihjb25maWdEaXIsIFwiZmphbGwtY29uZmlnLmpzb25cIilcbiAgICAgICk7XG4gICAgICBjb25zdCBleGlzdGluZ0FjY291bnRKc29uID0gQ29uZmlnLmxvYWRDb25maWdGaWxlKFxuICAgICAgICBwYXRoLmpvaW4oY29uZmlnRGlyLCBcImFjY291bnRzLWNvbmZpZy5qc29uXCIpXG4gICAgICApO1xuICAgICAgY29uc3QgY29zdEFsbG9jYXRpb25UYWdzSnNvbiA9IENvbmZpZy5sb2FkQ29uZmlnRmlsZShcbiAgICAgICAgcGF0aC5qb2luKGNvbmZpZ0RpciwgXCJjb3N0LWFsbG9jYXRpb24tdGFncy1jb25maWcuanNvblwiKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgcm9vdENvbmZpZyA9IHJvb3RDb25maWdKc29uXG4gICAgICAgID8gSlNPTi5wYXJzZShyb290Q29uZmlnSnNvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBleGlzdGluZ0FjY291bnRzQ29uZmlnID0gZXhpc3RpbmdBY2NvdW50SnNvblxuICAgICAgICA/IEpTT04ucGFyc2UoZXhpc3RpbmdBY2NvdW50SnNvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBjb3N0QWxsb2NhdGlvblRhZ3NDb25maWcgPSBjb3N0QWxsb2NhdGlvblRhZ3NKc29uXG4gICAgICAgID8gSlNPTi5wYXJzZShjb3N0QWxsb2NhdGlvblRhZ3NKc29uKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIG5ldyBDb25maWcoXG4gICAgICAgIHJvb3RDb25maWcsXG4gICAgICAgIGV4aXN0aW5nQWNjb3VudHNDb25maWcsXG4gICAgICAgIGNvc3RBbGxvY2F0aW9uVGFnc0NvbmZpZ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gcGFyc2UgY29uZmlnIGZpbGUuIEFib3J0aW5nLlwiLCBlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGNvbmZpZ3VyYXRpb24gdG8gZmlsZVxuICAgKi9cbiAgc2F2ZUNvbmZpZygpIHtcbiAgICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgY29uc3QgY29uZmlnRGlyID1cbiAgICAgIENvbmZpZy5maW5kQ29uZmlnRGlyZWN0b3J5KCkgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiZmphbGxcIik7XG5cbiAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xuICAgIGZzLm1rZGlyU3luYyhjb25maWdEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgcm9vdEpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnJvb3RDb25maWcsIG51bGwsIDIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKGNvbmZpZ0RpciwgXCJmamFsbC1jb25maWcuanNvblwiKSwgcm9vdEpzb25TdHJpbmcpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdBY2NvdW50c0pzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHRoaXMuZXhpc3RpbmdBY2NvdW50c0NvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICAyXG4gICAgKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKGNvbmZpZ0RpciwgXCJhY2NvdW50cy1jb25maWcuanNvblwiKSxcbiAgICAgIGV4aXN0aW5nQWNjb3VudHNKc29uU3RyaW5nXG4gICAgKTtcblxuICAgIGNvbnN0IGNvc3RBbGxvY2F0aW9uVGFnc0pzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnLFxuICAgICAgbnVsbCxcbiAgICAgIDJcbiAgICApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oY29uZmlnRGlyLCBcImNvc3QtYWxsb2NhdGlvbi10YWdzLWNvbmZpZy5qc29uXCIpLFxuICAgICAgY29zdEFsbG9jYXRpb25UYWdzSnNvblN0cmluZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzY2hlbWEgdmVyc2lvbiB1c2VkIGZvciB0aGlzIGNvbmZpZyBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFNjaGVtYSBWZXJzaW9uXG4gICAqL1xuICBzZXRWZXJzaW9uKHZlcnNpb246IG51bWJlcikge1xuICAgIHRoaXMucm9vdENvbmZpZy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgc2VydmljZSB0byB0aGUgY29uZmlnIGZpbGVcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKi9cbiAgYWRkU2VydmljZShzZXJ2aWNlS2V5OiBzdHJpbmcsIGNvbmZpZzogU2VydmljZUNvbmZpZykge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSB0aGlzLnJvb3RDb25maWcuc2VydmljZXMgPSB7fTtcbiAgICB0aGlzLnJvb3RDb25maWcuc2VydmljZXNbc2VydmljZUtleV0gPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbmZpZyBvcHRpb25zIG9uIGEgcHJldmlvdXNseSBkZWZpbmVkIHNlcnZpY2VcbiAgICpcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBzZXRcbiAgICovXG4gIHNldFNlcnZpY2VPcHRpb24oc2VydmljZUtleTogc3RyaW5nLCBjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5zZXJ2aWNlcykgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzID0ge307XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldO1xuICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldID0geyAuLi5zZXJ2aWNlLCAuLi5jb25maWcgfTtcbiAgfVxuXG4gIGdldFNlcnZpY2VDb25maWcoc2VydmljZUtleTogc3RyaW5nKTogU2VydmljZUNvbmZpZyB8IG51bGwge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldIHx8IG51bGw7XG4gIH1cblxuICBzZXRQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIpIHtcbiAgICB0aGlzLnJvb3RDb25maWcucHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgfVxuXG4gIGFkZFByb3ZpZGVyQWNjb3VudChhY2NvdW50OiBQcm92aWRlckFjY291bnQpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKVxuICAgICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMgPSBbXTtcblxuICAgIC8vIGVuc3VyZSBhY2NvdW50IG5hbWUgaXMgYWx3YXlzIGxvd2VyY2FzZVxuICAgIGFjY291bnQubmFtZSA9IGFjY291bnQubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMucHVzaChhY2NvdW50KTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVE9ETzogRml4IG51bGwgZXJyb3JcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMuZmluZChcbiAgICAgIChhY2NvdW50KSA9PlxuICAgICAgICBhY2NvdW50Lm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gYWNjb3VudE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICk7XG4gIH1cblxuICBnZXRQcm92aWRlckFjY291bnRCeUlkKGFjY291bnRJZDogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnJvb3RDb25maWcucHJvdmlkZXJBY2NvdW50cykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjb3VudCkgPT4gYWNjb3VudC5pZCA9PT0gYWNjb3VudElkXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3ZpZGVyQWNjb3VudEVudmlyb25tZW50cyhhY2NvdW50VHlwZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiByZWFkb25seSBzdHJpbmdbXTtcbiAgfSkge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgW2Vudmlyb25tZW50VHlwZSwgYWNjb3VudE5hbWVzXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgIGFjY291bnRUeXBlc1xuICAgICkpIHtcbiAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgYWNjb3VudE5hbWVzKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZSk7XG4gICAgICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAgICAgYWNjb3VudC5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50VHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEV4aXN0aW5nQWNjb3VudHMocmVnaW9uOiBzdHJpbmcpIHtcbiAgICAvLyBNYWtlIEFQSSBDYWxsXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IE9yZ2FuaXphdGlvbnNDbGllbnQoe1xuICAgICAgcmVnaW9uOiByZWdpb24sXG4gICAgfSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBMaXN0QWNjb3VudHNDb21tYW5kKHtcbiAgICAgIE1heFJlc3VsdHM6IE51bWJlcihcIjIwXCIpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChyZXF1ZXN0KTtcbiAgICB0aGlzLmV4aXN0aW5nQWNjb3VudHNDb25maWcgPSByZXNwb25zZS5BY2NvdW50cyB8fCBbXTtcbiAgfVxuXG4gIGdldEV4aXN0aW5nQWNjb3VudHMoKTogQWNjb3VudFtdIHtcbiAgICByZXR1cm4gdGhpcy5leGlzdGluZ0FjY291bnRzQ29uZmlnO1xuICB9XG5cbiAgYXN5bmMgZ2V0QVdTQWNjb3VudElkKCkge1xuICAgIGNvbnN0IHN0c0NsaWVudCA9IG5ldyBTVFNDbGllbnQoe30pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKHJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlPy5BY2NvdW50IHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldFByaW1hcnlSZWdpb24ocmVnaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvb3RDb25maWcucHJpbWFyeVJlZ2lvbiA9IHJlZ2lvbjtcbiAgfVxuXG4gIHNldFNlY29uZGFyeVJlZ2lvbnMocmVnaW9uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnJvb3RDb25maWcuc2Vjb25kYXJ5UmVnaW9ucyA9IHJlZ2lvbnM7XG4gIH1cblxuICBnZXRQcmltYXJ5UmVnaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5wcmltYXJ5UmVnaW9uO1xuICB9XG5cbiAgZ2V0U2Vjb25kYXJ5UmVnaW9ucygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5zZWNvbmRhcnlSZWdpb25zO1xuICB9XG5cbiAgYXN5bmMgc2V0Q29zdEFsbG9jYXRpb25UYWdzKFxuICAgIGNvc3RBbGxvY2F0aW9uVGFnczogQ29zdEFsbG9jYXRpb25UYWdzW11cbiAgKTogUHJvbWlzZTx7IGVuYWJsZWQ6IGJvb2xlYW47IGhhc1RhZ3M6IGJvb2xlYW4gfT4ge1xuICAgIC8vIElmIGNvc3QgZXhwbG9yZXIgaXMgbm90IGVuYWJsZWQsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheVxuICAgIGNvbnN0IGlzQ29zdEV4cGxvcmVyRW5hYmxlZCA9IGF3YWl0IHRoaXMuaXNBV1NDb3N0RXhwbG9yZXJFbmFibGVkKCk7XG4gICAgaWYgKCFpc0Nvc3RFeHBsb3JlckVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnID0gW107XG4gICAgICByZXR1cm4geyBlbmFibGVkOiBmYWxzZSwgaGFzVGFnczogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29zdEV4cGxvcmVyQ2xpZW50KHsgcmVnaW9uOiBcInVzLWVhc3QtMVwiIH0pOyAvLyBDb3N0IGV4cGxvcmVyIG9ubHkgZXhpc3RzIGluIHVzLWVhc3QtMVxuXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBMaXN0Q29zdEFsbG9jYXRpb25UYWdzQ29tbWFuZCh7fSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcblxuICAgIC8vIFRhcmdldCBzcGVjaWZpYyB1c2VyLWRlZmluZWQgdGFnc1xuICAgIGNvbnN0IHRhcmdldFVzZXJUYWdzID0gW1xuICAgICAgXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpvd25lclwiLFxuICAgIF07XG5cbiAgICAvLyBGaWx0ZXIgYW5kIHByb2Nlc3MgdGFnc1xuICAgIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnID0gKHJlc3BvbnNlLkNvc3RBbGxvY2F0aW9uVGFncyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoKHRhZykgPT4ge1xuICAgICAgICAvLyBTa2lwIHRhZ3Mgd2l0aG91dCBhIGtleVxuICAgICAgICBpZiAoIXRhZy5UYWdLZXkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBLZWVwIGFsbCBBV1MtZ2VuZXJhdGVkIHRhZ3NcbiAgICAgICAgaWYgKHRhZy5UeXBlID09PSBcIkFXU0dlbmVyYXRlZFwiKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAvLyBLZWVwIG9ubHkgc3BlY2lmaWMgdXNlci1kZWZpbmVkIHRhZ3NcbiAgICAgICAgcmV0dXJuIHRhcmdldFVzZXJUYWdzLmluY2x1ZGVzKHRhZy5UYWdLZXkpO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKHRhZykgPT4gKHtcbiAgICAgICAgVGFnS2V5OiB0YWcuVGFnS2V5IHx8IFwiXCIsXG4gICAgICAgIFN0YXR1czogdGFnLlN0YXR1cyB8fCBcIlVua25vd25cIixcbiAgICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgaGFzVGFnczogdGhpcy5jb3N0QWxsb2NhdGlvblRhZ3NDb25maWcubGVuZ3RoID4gMCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaXNBV1NDb3N0RXhwbG9yZXJFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29zdEV4cGxvcmVyQ2xpZW50KHsgcmVnaW9uOiBcInVzLWVhc3QtMVwiIH0pO1xuXG4gICAgICAvLyBNYWtlIGEgc2ltcGxlIEFQSSBjYWxsIHRvIGNoZWNrIGlmIENvc3QgRXhwbG9yZXIgaXMgYWNjZXNzaWJsZVxuICAgICAgY29uc3QgaW5wdXQ6IEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmRJbnB1dCA9IHtcbiAgICAgICAgVGltZVBlcmlvZDoge1xuICAgICAgICAgIFN0YXJ0OiB0aGlzLmdldERhdGVYRGF5c0FnbygzMCksXG4gICAgICAgICAgRW5kOiB0aGlzLmdldEZvcm1hdHRlZERhdGUobmV3IERhdGUoKSksXG4gICAgICAgIH0sXG4gICAgICAgIERpbWVuc2lvbjogXCJTRVJWSUNFXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldERpbWVuc2lvblZhbHVlc0NvbW1hbmQoaW5wdXQpO1xuICAgICAgYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmIChlcnJvci5fX3R5cGUgPT09IFwiRGF0YVVuYXZhaWxhYmxlRXhjZXB0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkNvc3QgRXhwbG9yZXIgZGF0YSBpcyBub3QgYXZhaWxhYmxlIHlldC4gVGhlIHNlcnZpY2UgbWlnaHQgYmUgZW5hYmxlZCBidXQgc3RpbGwgcHJlcGFyaW5nIGRhdGEuXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIFNlcnZpY2UgaXMgZW5hYmxlZCBidXQgZGF0YSBub3QgcmVhZHlcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IuX190eXBlID09PSBcIlVucmVjb2duaXplZENsaWVudEV4Y2VwdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJDb3N0IEV4cGxvcmVyIGlzIG5vdCBlbmFibGVkIGZvciB0aGlzIGFjY291bnQgb3IgY3JlZGVudGlhbHMgYXJlIGludmFsaWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgXCJUaXA6IENoZWNrIGlmIHlvdSd2ZSBlbmFibGUgaXQgaW4gdGhlIEFXUyBCaWxsaW5nIGNvbnNvbGUuXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNoZWNraW5nIENvc3QgRXhwbG9yZXIgc3RhdHVzOlwiLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXREYXRlWERheXNBZ28oZGF5czogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXlzKTtcbiAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWREYXRlKGRhdGUpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkRGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgfVxuXG4gIGdldENvc3RBbGxvY2F0aW9uVGFncygpOiBDb3N0QWxsb2NhdGlvblRhZ3NbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29zdEFsbG9jYXRpb25UYWdzQ29uZmlnO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- export * from './Config';
1
+ export * from "./Config";
package/dist/src/index.js CHANGED
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Config"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnJzsiXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ1wiO1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/util",
3
- "version": "0.27.13",
3
+ "version": "0.28.0",
4
4
  "description": "Common utility methods",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,5 +28,5 @@
28
28
  "overrides": {
29
29
  "@smithy/core": "2.5.5"
30
30
  },
31
- "gitHead": "c8814e193955796f63609c15f8073a66f1f05e31"
31
+ "gitHead": "9b08b4f332f3dadd8110a9b84a910fcb25968744"
32
32
  }