agenticpool 1.0.13 → 1.0.15

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.
@@ -42,7 +42,7 @@ const os = __importStar(require("os"));
42
42
  const fs = __importStar(require("fs-extra"));
43
43
  const ApiClient_1 = require("../api/ApiClient");
44
44
  const ConfigManager_1 = require("../config/ConfigManager");
45
- const chalk_1 = __importDefault(require("chalk"));
45
+ const colors_1 = __importDefault(require("../utils/colors"));
46
46
  class AuthHelper {
47
47
  static async ensureAuthenticated(networkId, reason) {
48
48
  const config = await ConfigManager_1.configManager.getGlobalConfig();
@@ -70,7 +70,7 @@ class AuthHelper {
70
70
  }
71
71
  }
72
72
  if (existingCreds && existingCreds.privateKey) {
73
- console.log(chalk_1.default.gray(` Attempting login for ${networkId}...`));
73
+ console.log(colors_1.default.gray(` Attempting login for ${networkId}...`));
74
74
  try {
75
75
  const response = await client.post('/v1/auth/login', {
76
76
  networkId,
@@ -97,7 +97,7 @@ class AuthHelper {
97
97
  const defaultIdentity = await ConfigManager_1.configManager.getDefaultIdentity();
98
98
  let keys = defaultIdentity;
99
99
  if (!keys) {
100
- console.log(chalk_1.default.gray(' Generating new identity keys...'));
100
+ console.log(colors_1.default.gray(' Generating new identity keys...'));
101
101
  const keysResponse = await client.get('/v1/auth/generate-keys');
102
102
  if (!keysResponse.success || !keysResponse.data) {
103
103
  throw new Error('Failed to generate keys');
@@ -106,7 +106,7 @@ class AuthHelper {
106
106
  // Save as default for future use
107
107
  await ConfigManager_1.configManager.saveDefaultIdentity(keys);
108
108
  }
109
- console.log(chalk_1.default.gray(` Registering in network ${networkId}...`));
109
+ console.log(colors_1.default.gray(` Registering in network ${networkId}...`));
110
110
  const registerResponse = await client.post('/v1/auth/register', {
111
111
  networkId,
112
112
  publicToken: keys.publicToken,
@@ -122,7 +122,7 @@ class AuthHelper {
122
122
  };
123
123
  await ConfigManager_1.configManager.saveCredentials(networkId, newCreds);
124
124
  client.setAuthToken(registerResponse.data.tokens.jwt);
125
- console.log(chalk_1.default.green(` ✓ Auto-registered in network: ${networkId}`));
125
+ console.log(colors_1.default.green(` ✓ Auto-registered in network: ${networkId}`));
126
126
  return { client, credentials: newCreds, isNewUser: true };
127
127
  }
128
128
  throw new Error('Failed to authenticate');
@@ -158,4 +158,4 @@ class AuthHelper {
158
158
  }
159
159
  }
160
160
  exports.AuthHelper = AuthHelper;
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aEhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL0F1dGhIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLHVDQUF5QjtBQUN6Qiw2Q0FBK0I7QUFDL0IsZ0RBQTZDO0FBQzdDLDJEQUE0RTtBQUM1RSxrREFBMEI7QUFRMUIsTUFBYSxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxNQUFlO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sNkJBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sNkJBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQzt3QkFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ2xDLFNBQVM7NEJBQ1QsV0FBVyxFQUFFLGFBQWEs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QUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkI7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUV6RCxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQzlDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsU0FBUztZQUNYLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQ25HLENBQUM7Q0FDRjtBQXJJRCxnQ0FxSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQXBpQ2xpZW50IH0gZnJvbSAnLi4vYXBpL0FwaUNsaWVudCc7XG5pbXBvcnQgeyBjb25maWdNYW5hZ2VyLCBOZXR3b3JrQ3JlZGVudGlhbHMgfSBmcm9tICcuLi9jb25maWcvQ29uZmlnTWFuYWdlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhSZXN1bHQge1xuICBjbGllbnQ6IEFwaUNsaWVudDtcbiAgY3JlZGVudGlhbHM6IE5ldHdvcmtDcmVkZW50aWFscztcbiAgaXNOZXdVc2VyOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0aEhlbHBlciB7XG4gIHN0YXRpYyBhc3luYyBlbnN1cmVBdXRoZW50aWNhdGVkKG5ldHdvcmtJZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPEF1dGhSZXN1bHQ+IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldEdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBBcGlDbGllbnQoY29uZmlnLmFwaVVybCk7XG4gICAgY2xpZW50LnNldEZvcm1hdChjb25maWcuZGVmYXVsdEZvcm1hdCk7XG5cbiAgICBjb25zdCBleGlzdGluZ0NyZWRzID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRDcmVkZW50aWFscyhuZXR3b3JrSWQpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ0NyZWRzICYmIGV4aXN0aW5nQ3JlZHMuand0ICYmIGV4aXN0aW5nQ3JlZHMuZXhwaXJlc0F0KSB7XG4gICAgICBjb25zdCBidWZmZXJUaW1lID0gNSAqIDYwICogMTAwMDtcbiAgICAgIGlmIChEYXRlLm5vdygpIDwgKGV4aXN0aW5nQ3JlZHMuZXhwaXJlc0F0IC0gYnVmZmVyVGltZSkpIHtcbiAgICAgICAgY2xpZW50LnNldEF1dGhUb2tlbihleGlzdGluZ0NyZWRzLmp3dCk7XG4gICAgICAgIGlmIChyZWFzb24pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBvc3QoJy92MS9hdXRoL2xvZ2luJywge1xuICAgICAgICAgICAgICBuZXR3b3JrSWQsXG4gICAgICAgICAgICAgIHB1YmxpY1Rva2VuOiBleGlzdGluZ0NyZWRzLnB1YmxpY1Rva2VuLFxuICAgICAgICAgICAgICBwcml2YXRlS2V5OiBleGlzdGluZ0NyZWRzLnByaXZhdGVLZXksXG4gICAgICAgICAgICAgIHJlYXNvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gSWdub3JlIGJhY2tncm91bmQgcmVhc29uIHVwZGF0ZSBmYWlsdXJlc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBjbGllbnQsIGNyZWRlbnRpYWxzOiBleGlzdGluZ0NyZWRzLCBpc05ld1VzZXI6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0aW5nQ3JlZHMgJiYgZXhpc3RpbmdDcmVkcy5wcml2YXRlS2V5KSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KGAgIEF0dGVtcHRpbmcgbG9naW4gZm9yICR7bmV0d29ya0lkfS4uLmApKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8eyBqd3Q6IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXI7IHB1YmxpY1Rva2VuOiBzdHJpbmcgfT4oJy92MS9hdXRoL2xvZ2luJywge1xuICAgICAgICAgIG5ldHdvcmtJZCxcbiAgICAgICAgICBwdWJsaWNUb2tlbjogZXhpc3RpbmdDcmVkcy5wdWJsaWNUb2tlbixcbiAgICAgICAgICBwcml2YXRlS2V5OiBleGlzdGluZ0NyZWRzLnByaXZhdGVLZXksXG4gICAgICAgICAgcmVhc29uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkQ3JlZHM6IE5ldHdvcmtDcmVkZW50aWFscyA9IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nQ3JlZHMsXG4gICAgICAgICAgICBqd3Q6IHJlc3BvbnNlLmRhdGEuand0LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiByZXNwb25zZS5kYXRhLmV4cGlyZXNBdFxuICAgICAgICAgIH07XG4gICAgICAgICAgXG4gICAgICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlQ3JlZGVudGlhbHMobmV0d29ya0lkLCB1cGRhdGVkQ3JlZHMpO1xuICAgICAgICAgIGNsaWVudC5zZXRBdXRoVG9rZW4ocmVzcG9uc2UuZGF0YS5qd3QpO1xuICAgICAgICAgIFxuICAgICAgICAgIHJldHVybiB7IGNsaWVudCwgY3JlZGVudGlhbHM6IHVwZGF0ZWRDcmVkcywgaXNOZXdVc2VyOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBMb2dpbiBmYWlsZWQsIHdpbGwgdHJ5IHRvIHJlZ2lzdGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJ5IHRvIHVzZSBnbG9iYWwgaWRlbnRpdHkgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgZGVmYXVsdElkZW50aXR5ID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXREZWZhdWx0SWRlbnRpdHkoKTtcbiAgICBsZXQga2V5cyA9IGRlZmF1bHRJZGVudGl0eTtcblxuICAgIGlmICgha2V5cykge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBHZW5lcmF0aW5nIG5ldyBpZGVudGl0eSBrZXlzLi4uJykpO1xuICAgICAgY29uc3Qga2V5c1Jlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDx7IHB1YmxpY1Rva2VuOiBzdHJpbmc7IHByaXZhdGVLZXk6IHN0cmluZyB9PignL3YxL2F1dGgvZ2VuZXJhdGUta2V5cycpO1xuICAgICAgXG4gICAgICBpZiAoIWtleXNSZXNwb25zZS5zdWNjZXNzIHx8ICFrZXlzUmVzcG9uc2UuZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBrZXlzJyk7XG4gICAgICB9XG5cbiAgICAgIGtleXMgPSBrZXlzUmVzcG9uc2UuZGF0YTtcbiAgICAgIC8vIFNhdmUgYXMgZGVmYXVsdCBmb3IgZnV0dXJlIHVzZVxuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlRGVmYXVsdElkZW50aXR5KGtleXMpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoYCAgUmVnaXN0ZXJpbmcgaW4gbmV0d29yayAke25ldHdvcmtJZH0uLi5gKSk7XG5cbiAgICBjb25zdCByZWdpc3RlclJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8eyBtZW1iZXI6IGFueTsgdG9rZW5zOiB7IGp3dDogc3RyaW5nOyBleHBpcmVzQXQ6IG51bWJlcjsgcHVibGljVG9rZW46IHN0cmluZyB9IH0+KCcvdjEvYXV0aC9yZWdpc3RlcicsIHtcbiAgICAgIG5ldHdvcmtJZCxcbiAgICAgIHB1YmxpY1Rva2VuOiBrZXlzLnB1YmxpY1Rva2VuLFxuICAgICAgcHJpdmF0ZUtleToga2V5cy5wcml2YXRlS2V5LFxuICAgICAgcmVhc29uXG4gICAgfSk7XG5cbiAgICBpZiAocmVnaXN0ZXJSZXNwb25zZS5zdWNjZXNzICYmIHJlZ2lzdGVyUmVzcG9uc2UuZGF0YSkge1xuICAgICAgY29uc3QgbmV3Q3JlZHM6IE5ldHdvcmtDcmVkZW50aWFscyA9IHtcbiAgICAgICAgcHVibGljVG9rZW46IGtleXMucHVibGljVG9rZW4sXG4gICAgICAgIHByaXZhdGVLZXk6IGtleXMucHJpdmF0ZUtleSxcbiAgICAgICAgand0OiByZWdpc3RlclJlc3BvbnNlLmRhdGEudG9rZW5zLmp3dCxcbiAgICAgICAgZXhwaXJlc0F0OiByZWdpc3RlclJlc3BvbnNlLmRhdGEudG9rZW5zLmV4cGlyZXNBdFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlQ3JlZGVudGlhbHMobmV0d29ya0lkLCBuZXdDcmVkcyk7XG4gICAgICBjbGllbnQuc2V0QXV0aFRva2VuKHJlZ2lzdGVyUmVzcG9uc2UuZGF0YS50b2tlbnMuand0KTtcblxuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYCAg4pyTIEF1dG8tcmVnaXN0ZXJlZCBpbiBuZXR3b3JrOiAke25ldHdvcmtJZH1gKSk7XG4gICAgICByZXR1cm4geyBjbGllbnQsIGNyZWRlbnRpYWxzOiBuZXdDcmVkcywgaXNOZXdVc2VyOiB0cnVlIH07XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gYXV0aGVudGljYXRlJyk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXBpQ2xpZW50KCk6IFByb21pc2U8QXBpQ2xpZW50PiB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRHbG9iYWxDb25maWcoKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQXBpQ2xpZW50KGNvbmZpZy5hcGlVcmwpO1xuICAgIGNsaWVudC5zZXRGb3JtYXQoY29uZmlnLmRlZmF1bHRGb3JtYXQpO1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXV0aGVudGljYXRlZENsaWVudChuZXR3b3JrSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTxBcGlDbGllbnQ+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmVuc3VyZUF1dGhlbnRpY2F0ZWQobmV0d29ya0lkLCByZWFzb24pO1xuICAgIHJldHVybiByZXN1bHQuY2xpZW50O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZpcnN0QXV0aGVudGljYXRlZENsaWVudCgpOiBQcm9taXNlPHsgY2xpZW50OiBBcGlDbGllbnQ7IG5ldHdvcmtJZDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsc0RpciA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcuYWdlbnRpY3Bvb2wnLCAnY3JlZGVudGlhbHMnKTtcbiAgICBcbiAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKGNyZWRlbnRpYWxzRGlyKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc3RvcmVkIGNyZWRlbnRpYWxzIGZvdW5kLiBSdW4gXCJhZ2VudGljcG9vbCBhdXRoIGNvbm5lY3QgPG5ldHdvcmtJZD5cIiBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoY3JlZGVudGlhbHNEaXIpO1xuICAgIGNvbnN0IGpzb25GaWxlcyA9IGZpbGVzLmZpbHRlcihmID0+IGYuZW5kc1dpdGgoJy5qc29uJykpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGpzb25GaWxlcykge1xuICAgICAgY29uc3QgbmV0d29ya0lkID0gZmlsZS5yZXBsYWNlKCcuanNvbicsICcnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZW5zdXJlQXV0aGVudGljYXRlZChuZXR3b3JrSWQpO1xuICAgICAgICByZXR1cm4geyBjbGllbnQ6IHJlc3VsdC5jbGllbnQsIG5ldHdvcmtJZCB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmFsaWQgY3JlZGVudGlhbHMgZm91bmQuIFJ1biBcImFnZW50aWNwb29sIGF1dGggY29ubmVjdCA8bmV0d29ya0lkPlwiIGZpcnN0LicpO1xuICB9XG59XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aEhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL0F1dGhIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLHVDQUF5QjtBQUN6Qiw2Q0FBK0I7QUFDL0IsZ0RBQTZDO0FBQzdDLDJEQUE0RTtBQUM1RSw2REFBb0M7QUFRcEMsTUFBYSxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxNQUFlO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sNkJBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sNkJBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQzt3QkFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ2xDLFNBQVM7NEJBQ1QsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXOzRCQUN0QyxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVU7NEJBQ3BDLE1BQU07eUJBQ1AsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDWCwyQ0FBMkM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUEwRCxnQkFBZ0IsRUFBRTtvQkFDNUcsU0FBUztvQkFDVCxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7b0JBQ3RDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTtvQkFDcEMsTUFBTTtpQkFDUCxDQUFDLENBQUM7Z0JBRUgsSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxZQUFZLEdBQXVCO3dCQUN2QyxHQUFHLGFBQWE7d0JBQ2hCLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUc7d0JBQ3RCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVM7cUJBQ25DLENBQUM7b0JBRUYsTUFBTSw2QkFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQzdELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLHFDQUFxQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLGVBQWUsR0FBRyxNQUFNLDZCQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNqRSxJQUFJLElBQUksR0FBRyxlQUFlLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUE4Qyx3QkFBd0IsQ0FBQyxDQUFDO1lBRTdHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3pCLGlDQUFpQztZQUNqQyxNQUFNLDZCQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVwRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBbUYsbUJBQW1CLEVBQUU7WUFDaEosU0FBUztZQUNULFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUksZ0JBQWdCLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RELE1BQU0sUUFBUSxHQUF1QjtnQkFDbkMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQ3JDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7YUFDbEQsQ0FBQztZQUVGLE1BQU0sNkJBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV0RCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFLLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSw2QkFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxNQUFlO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1FBQ3RDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUU5RSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztRQUNwRyxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFekQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUM5QyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLFNBQVM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0NBQ0Y7QUFySUQsZ0NBcUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4uL2FwaS9BcGlDbGllbnQnO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciwgTmV0d29ya0NyZWRlbnRpYWxzIH0gZnJvbSAnLi4vY29uZmlnL0NvbmZpZ01hbmFnZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJy4uL3V0aWxzL2NvbG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFJlc3VsdCB7XG4gIGNsaWVudDogQXBpQ2xpZW50O1xuICBjcmVkZW50aWFsczogTmV0d29ya0NyZWRlbnRpYWxzO1xuICBpc05ld1VzZXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoSGVscGVyIHtcbiAgc3RhdGljIGFzeW5jIGVuc3VyZUF1dGhlbnRpY2F0ZWQobmV0d29ya0lkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8QXV0aFJlc3VsdD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEFwaUNsaWVudChjb25maWcuYXBpVXJsKTtcbiAgICBjbGllbnQuc2V0Rm9ybWF0KGNvbmZpZy5kZWZhdWx0Rm9ybWF0KTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQ3JlZHMgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldENyZWRlbnRpYWxzKG5ldHdvcmtJZCk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nQ3JlZHMgJiYgZXhpc3RpbmdDcmVkcy5qd3QgJiYgZXhpc3RpbmdDcmVkcy5leHBpcmVzQXQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlclRpbWUgPSA1ICogNjAgKiAxMDAwO1xuICAgICAgaWYgKERhdGUubm93KCkgPCAoZXhpc3RpbmdDcmVkcy5leHBpcmVzQXQgLSBidWZmZXJUaW1lKSkge1xuICAgICAgICBjbGllbnQuc2V0QXV0aFRva2VuKGV4aXN0aW5nQ3JlZHMuand0KTtcbiAgICAgICAgaWYgKHJlYXNvbikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjbGllbnQucG9zdCgnL3YxL2F1dGgvbG9naW4nLCB7XG4gICAgICAgICAgICAgIG5ldHdvcmtJZCxcbiAgICAgICAgICAgICAgcHVibGljVG9rZW46IGV4aXN0aW5nQ3JlZHMucHVibGljVG9rZW4sXG4gICAgICAgICAgICAgIHByaXZhdGVLZXk6IGV4aXN0aW5nQ3JlZHMucHJpdmF0ZUtleSxcbiAgICAgICAgICAgICAgcmVhc29uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgYmFja2dyb3VuZCByZWFzb24gdXBkYXRlIGZhaWx1cmVzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNsaWVudCwgY3JlZGVudGlhbHM6IGV4aXN0aW5nQ3JlZHMsIGlzTmV3VXNlcjogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhpc3RpbmdDcmVkcyAmJiBleGlzdGluZ0NyZWRzLnByaXZhdGVLZXkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoYCAgQXR0ZW1wdGluZyBsb2dpbiBmb3IgJHtuZXR3b3JrSWR9Li4uYCkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDx7IGp3dDogc3RyaW5nOyBleHBpcmVzQXQ6IG51bWJlcjsgcHVibGljVG9rZW46IHN0cmluZyB9PignL3YxL2F1dGgvbG9naW4nLCB7XG4gICAgICAgICAgbmV0d29ya0lkLFxuICAgICAgICAgIHB1YmxpY1Rva2VuOiBleGlzdGluZ0NyZWRzLnB1YmxpY1Rva2VuLFxuICAgICAgICAgIHByaXZhdGVLZXk6IGV4aXN0aW5nQ3JlZHMucHJpdmF0ZUtleSxcbiAgICAgICAgICByZWFzb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDcmVkczogTmV0d29ya0NyZWRlbnRpYWxzID0ge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmdDcmVkcyxcbiAgICAgICAgICAgIGp3dDogcmVzcG9uc2UuZGF0YS5qd3QsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHJlc3BvbnNlLmRhdGEuZXhwaXJlc0F0XG4gICAgICAgICAgfTtcbiAgICAgICAgICBcbiAgICAgICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNhdmVDcmVkZW50aWFscyhuZXR3b3JrSWQsIHVwZGF0ZWRDcmVkcyk7XG4gICAgICAgICAgY2xpZW50LnNldEF1dGhUb2tlbihyZXNwb25zZS5kYXRhLmp3dCk7XG4gICAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIHsgY2xpZW50LCBjcmVkZW50aWFsczogdXBkYXRlZENyZWRzLCBpc05ld1VzZXI6IGZhbHNlIH07XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIExvZ2luIGZhaWxlZCwgd2lsbCB0cnkgdG8gcmVnaXN0ZXJcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gdXNlIGdsb2JhbCBpZGVudGl0eSBpZiBpdCBleGlzdHNcbiAgICBjb25zdCBkZWZhdWx0SWRlbnRpdHkgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldERlZmF1bHRJZGVudGl0eSgpO1xuICAgIGxldCBrZXlzID0gZGVmYXVsdElkZW50aXR5O1xuXG4gICAgaWYgKCFrZXlzKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIEdlbmVyYXRpbmcgbmV3IGlkZW50aXR5IGtleXMuLi4nKSk7XG4gICAgICBjb25zdCBrZXlzUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PHsgcHVibGljVG9rZW46IHN0cmluZzsgcHJpdmF0ZUtleTogc3RyaW5nIH0+KCcvdjEvYXV0aC9nZW5lcmF0ZS1rZXlzJyk7XG4gICAgICBcbiAgICAgIGlmICgha2V5c1Jlc3BvbnNlLnN1Y2Nlc3MgfHwgIWtleXNSZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAga2V5cyA9IGtleXNSZXNwb25zZS5kYXRhO1xuICAgICAgLy8gU2F2ZSBhcyBkZWZhdWx0IGZvciBmdXR1cmUgdXNlXG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNhdmVEZWZhdWx0SWRlbnRpdHkoa2V5cyk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgICBSZWdpc3RlcmluZyBpbiBuZXR3b3JrICR7bmV0d29ya0lkfS4uLmApKTtcblxuICAgIGNvbnN0IHJlZ2lzdGVyUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDx7IG1lbWJlcjogYW55OyB0b2tlbnM6IHsgand0OiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyOyBwdWJsaWNUb2tlbjogc3RyaW5nIH0gfT4oJy92MS9hdXRoL3JlZ2lzdGVyJywge1xuICAgICAgbmV0d29ya0lkLFxuICAgICAgcHVibGljVG9rZW46IGtleXMucHVibGljVG9rZW4sXG4gICAgICBwcml2YXRlS2V5OiBrZXlzLnByaXZhdGVLZXksXG4gICAgICByZWFzb25cbiAgICB9KTtcblxuICAgIGlmIChyZWdpc3RlclJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVnaXN0ZXJSZXNwb25zZS5kYXRhKSB7XG4gICAgICBjb25zdCBuZXdDcmVkczogTmV0d29ya0NyZWRlbnRpYWxzID0ge1xuICAgICAgICBwdWJsaWNUb2tlbjoga2V5cy5wdWJsaWNUb2tlbixcbiAgICAgICAgcHJpdmF0ZUtleToga2V5cy5wcml2YXRlS2V5LFxuICAgICAgICBqd3Q6IHJlZ2lzdGVyUmVzcG9uc2UuZGF0YS50b2tlbnMuand0LFxuICAgICAgICBleHBpcmVzQXQ6IHJlZ2lzdGVyUmVzcG9uc2UuZGF0YS50b2tlbnMuZXhwaXJlc0F0XG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNhdmVDcmVkZW50aWFscyhuZXR3b3JrSWQsIG5ld0NyZWRzKTtcbiAgICAgIGNsaWVudC5zZXRBdXRoVG9rZW4ocmVnaXN0ZXJSZXNwb25zZS5kYXRhLnRva2Vucy5qd3QpO1xuXG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgICDinJMgQXV0by1yZWdpc3RlcmVkIGluIG5ldHdvcms6ICR7bmV0d29ya0lkfWApKTtcbiAgICAgIHJldHVybiB7IGNsaWVudCwgY3JlZGVudGlhbHM6IG5ld0NyZWRzLCBpc05ld1VzZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBhdXRoZW50aWNhdGUnKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBcGlDbGllbnQoKTogUHJvbWlzZTxBcGlDbGllbnQ+IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldEdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBBcGlDbGllbnQoY29uZmlnLmFwaVVybCk7XG4gICAgY2xpZW50LnNldEZvcm1hdChjb25maWcuZGVmYXVsdEZvcm1hdCk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBdXRoZW50aWNhdGVkQ2xpZW50KG5ldHdvcmtJZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPEFwaUNsaWVudD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZW5zdXJlQXV0aGVudGljYXRlZChuZXR3b3JrSWQsIHJlYXNvbik7XG4gICAgcmV0dXJuIHJlc3VsdC5jbGllbnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0Rmlyc3RBdXRoZW50aWNhdGVkQ2xpZW50KCk6IFByb21pc2U8eyBjbGllbnQ6IEFwaUNsaWVudDsgbmV0d29ya0lkOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzRGlyID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5hZ2VudGljcG9vbCcsICdjcmVkZW50aWFscycpO1xuICAgIFxuICAgIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoY3JlZGVudGlhbHNEaXIpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzdG9yZWQgY3JlZGVudGlhbHMgZm91bmQuIFJ1biBcImFnZW50aWNwb29sIGF1dGggY29ubmVjdCA8bmV0d29ya0lkPlwiIGZpcnN0LicpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihjcmVkZW50aWFsc0Rpcik7XG4gICAgY29uc3QganNvbkZpbGVzID0gZmlsZXMuZmlsdGVyKGYgPT4gZi5lbmRzV2l0aCgnLmpzb24nKSk7XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YganNvbkZpbGVzKSB7XG4gICAgICBjb25zdCBuZXR3b3JrSWQgPSBmaWxlLnJlcGxhY2UoJy5qc29uJywgJycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5lbnN1cmVBdXRoZW50aWNhdGVkKG5ldHdvcmtJZCk7XG4gICAgICAgIHJldHVybiB7IGNsaWVudDogcmVzdWx0LmNsaWVudCwgbmV0d29ya0lkIH07XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyB2YWxpZCBjcmVkZW50aWFscyBmb3VuZC4gUnVuIFwiYWdlbnRpY3Bvb2wgYXV0aCBjb25uZWN0IDxuZXR3b3JrSWQ+XCIgZmlyc3QuJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.registerAuthCommands = registerAuthCommands;
4
7
  const config_1 = require("../config");
5
8
  const AuthHelper_1 = require("../auth/AuthHelper");
6
9
  const logger_1 = require("../utils/logger");
7
- const chalk = require('chalk');
10
+ const colors_1 = __importDefault(require("../utils/colors"));
8
11
  function registerAuthCommands(program) {
9
12
  const auth = program.command('auth').description('Authentication commands');
10
13
  auth
@@ -25,14 +28,14 @@ function registerAuthCommands(program) {
25
28
  }
26
29
  // Record the network and reason locally
27
30
  await config_1.configManager.addRegisteredNetwork(networkId, options.reason);
28
- console.log(chalk.gray('Network:'), networkId);
29
- console.log(chalk.gray('Public Token:'), result.credentials.publicToken);
31
+ console.log(colors_1.default.gray('Network:'), networkId);
32
+ console.log(colors_1.default.gray('Public Token:'), result.credentials.publicToken);
30
33
  if (options.reason) {
31
- console.log(chalk.gray('Reason:'), options.reason);
34
+ console.log(colors_1.default.gray('Reason:'), options.reason);
32
35
  }
33
36
  if (result.credentials.expiresAt) {
34
37
  const expires = new Date(result.credentials.expiresAt);
35
- console.log(chalk.gray('Token expires:'), expires.toISOString());
38
+ console.log(colors_1.default.gray('Token expires:'), expires.toISOString());
36
39
  }
37
40
  }
38
41
  catch (error) {
@@ -56,7 +59,7 @@ function registerAuthCommands(program) {
56
59
  const existing = await config_1.configManager.getDefaultIdentity();
57
60
  if (existing && !options.force) {
58
61
  logger_1.logger.warn('Default identity already exists. Use --force to overwrite.');
59
- console.log(chalk.cyan.bold('Public Token:'), chalk.white(existing.publicToken));
62
+ console.log(colors_1.default.cyan.bold('Public Token:'), colors_1.default.white(existing.publicToken));
60
63
  return;
61
64
  }
62
65
  logger_1.logger.info('Requesting new key pair from server...');
@@ -68,9 +71,9 @@ function registerAuthCommands(program) {
68
71
  privateKey: response.data.privateKey
69
72
  });
70
73
  logger_1.logger.success('✓ Keys generated and saved as default identity!\n');
71
- console.log(chalk.cyan.bold('Public Token:'), chalk.white(response.data.publicToken));
72
- console.log(chalk.cyan.bold('Private Key: '), chalk.yellow(response.data.privateKey));
73
- console.log(chalk.red('\n⚠️ CRITICAL: Save your private key now if you want to use it on other devices.'));
74
+ console.log(colors_1.default.cyan.bold('Public Token:'), colors_1.default.white(response.data.publicToken));
75
+ console.log(colors_1.default.cyan.bold('Private Key: '), colors_1.default.yellow(response.data.privateKey));
76
+ console.log(colors_1.default.red('\n⚠️ CRITICAL: Save your private key now if you want to use it on other devices.'));
74
77
  }
75
78
  else {
76
79
  logger_1.logger.error('Error:', response.error?.message || 'Failed to generate keys');
@@ -86,7 +89,7 @@ function registerAuthCommands(program) {
86
89
  .action(async () => {
87
90
  const identity = await config_1.configManager.getDefaultIdentity();
88
91
  if (identity) {
89
- console.log(chalk.cyan.bold('Public Token:'), chalk.white(identity.publicToken));
92
+ console.log(colors_1.default.cyan.bold('Public Token:'), colors_1.default.white(identity.publicToken));
90
93
  }
91
94
  else {
92
95
  logger_1.logger.warn('No default identity found. Run "agenticpool auth generate-keys" first.');
@@ -119,7 +122,7 @@ function registerAuthCommands(program) {
119
122
  });
120
123
  await config_1.configManager.addRegisteredNetwork(options.network, options.reason);
121
124
  logger_1.logger.success('✓ Registered successfully!');
122
- console.log(chalk.gray('Credentials saved locally.'));
125
+ console.log(colors_1.default.gray('Credentials saved locally.'));
123
126
  }
124
127
  else {
125
128
  logger_1.logger.error('Error:', response.error?.message || 'Registration failed');
@@ -156,7 +159,7 @@ function registerAuthCommands(program) {
156
159
  });
157
160
  await config_1.configManager.addRegisteredNetwork(options.network, options.reason);
158
161
  logger_1.logger.success('✓ Logged in successfully!');
159
- console.log(chalk.gray('New JWT session established.'));
162
+ console.log(colors_1.default.gray('New JWT session established.'));
160
163
  }
161
164
  else {
162
165
  logger_1.logger.error('Error:', response.error?.message || 'Login failed');
@@ -180,18 +183,18 @@ function registerAuthCommands(program) {
180
183
  .option('-n, --network <id>', 'Network ID to check')
181
184
  .action(async (options) => {
182
185
  const config = await config_1.configManager.getGlobalConfig();
183
- console.log(chalk.cyan('API URL:'), config.apiUrl);
184
- console.log(chalk.cyan('Format:'), config.defaultFormat);
185
- console.log(chalk.cyan('Config dir:'), config_1.configManager.getConfigPath());
186
+ console.log(colors_1.default.cyan('API URL:'), config.apiUrl);
187
+ console.log(colors_1.default.cyan('Format:'), config.defaultFormat);
188
+ console.log(colors_1.default.cyan('Config dir:'), config_1.configManager.getConfigPath());
186
189
  if (options.network) {
187
190
  const creds = await config_1.configManager.getCredentials(options.network);
188
191
  if (creds) {
189
- console.log(chalk.cyan('\nNetwork:'), options.network);
190
- console.log(chalk.cyan('Public Token:'), creds.publicToken);
192
+ console.log(colors_1.default.cyan('\nNetwork:'), options.network);
193
+ console.log(colors_1.default.cyan('Public Token:'), creds.publicToken);
191
194
  if (creds.expiresAt) {
192
195
  const valid = Date.now() < creds.expiresAt;
193
- console.log(chalk.cyan('Token valid:'), valid ? chalk.green('Yes') : chalk.red('No (expired)'));
194
- console.log(chalk.cyan('Expires:'), new Date(creds.expiresAt).toISOString());
196
+ console.log(colors_1.default.cyan('Token valid:'), valid ? colors_1.default.green('Yes') : colors_1.default.red('No (expired)'));
197
+ console.log(colors_1.default.cyan('Expires:'), new Date(creds.expiresAt).toISOString());
195
198
  }
196
199
  }
197
200
  else {
@@ -200,4 +203,4 @@ function registerAuthCommands(program) {
200
203
  }
201
204
  });
202
205
  }
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esb0RBNE1DO0FBak5ELHNDQUEwQztBQUMxQyxtREFBZ0Q7QUFDaEQsNENBQXlDO0FBQ3pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUUvQixTQUFnQixvQkFBb0IsQ0FBQyxPQUFnQjtJQUNuRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRTVFLElBQUk7U0FDRCxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ2xCLFdBQVcsQ0FBQyxnREFBZ0QsQ0FBQztTQUM3RCxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztTQUNyQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsaUNBQWlDLENBQUM7U0FDcEUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFEQUFxRCxDQUFDO1NBQ3BGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ25DLElBQUksQ0FBQztZQUNILGVBQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLFNBQVMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBVSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFL0UsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLGVBQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBRUQsd0NBQXdDO1lBQ3hDLE1BQU0sc0JBQWEsQ0FBQyxvQkFBb0Is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QUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vYXV0aC9BdXRoSGVscGVyJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5jb25zdCBjaGFsayA9IHJlcXVpcmUoJ2NoYWxrJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckF1dGhDb21tYW5kcyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIGNvbnN0IGF1dGggPSBwcm9ncmFtLmNvbW1hbmQoJ2F1dGgnKS5kZXNjcmlwdGlvbignQXV0aGVudGljYXRpb24gY29tbWFuZHMnKTtcblxuICBhdXRoXG4gICAgLmNvbW1hbmQoJ2Nvbm5lY3QnKVxuICAgIC5kZXNjcmlwdGlvbignQ29ubmVjdCB0byBhIG5ldHdvcmsgKGF1dG8tcmVnaXN0ZXIgaWYgbmVlZGVkKScpXG4gICAgLmFyZ3VtZW50KCc8bmV0d29ya0lkPicsICdOZXR3b3JrIElEJylcbiAgICAub3B0aW9uKCctaywgLS1wcml2YXRlLWtleSA8a2V5PicsICdFeGlzdGluZyBwcml2YXRlIGtleSAob3B0aW9uYWwpJylcbiAgICAub3B0aW9uKCctciwgLS1yZWFzb24gPHRleHQ+JywgJ1JlYXNvbiBmb3Igam9pbmluZyB0aGlzIG5ldHdvcmsgKGZvciBsb2NhbCByZWNvcmRzKScpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkLCBvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgQ29ubmVjdGluZyB0byBuZXR3b3JrOiAke25ldHdvcmtJZH0uLi5gKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgQXV0aEhlbHBlci5lbnN1cmVBdXRoZW50aWNhdGVkKG5ldHdvcmtJZCwgb3B0aW9ucy5yZWFzb24pO1xuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3VsdC5pc05ld1VzZXIpIHtcbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIFJlZ2lzdGVyZWQgYW5kIGNvbm5lY3RlZCEnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIENvbm5lY3RlZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlY29yZCB0aGUgbmV0d29yayBhbmQgcmVhc29uIGxvY2FsbHlcbiAgICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5hZGRSZWdpc3RlcmVkTmV0d29yayhuZXR3b3JrSWQsIG9wdGlvbnMucmVhc29uKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ05ldHdvcms6JyksIG5ldHdvcmtJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1B1YmxpYyBUb2tlbjonKSwgcmVzdWx0LmNyZWRlbnRpYWxzLnB1YmxpY1Rva2VuKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucmVhc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnUmVhc29uOicpLCBvcHRpb25zLnJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChyZXN1bHQuY3JlZGVudGlhbHMuZXhwaXJlc0F0KSB7XG4gICAgICAgICAgY29uc3QgZXhwaXJlcyA9IG5ldyBEYXRlKHJlc3VsdC5jcmVkZW50aWFscy5leHBpcmVzQXQpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1Rva2VuIGV4cGlyZXM6JyksIGV4cGlyZXMudG9JU09TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignXFxuRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnZGlzY29ubmVjdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdEaXNjb25uZWN0IGZyb20gYSBuZXR3b3JrJylcbiAgICAuYXJndW1lbnQoJzxuZXR3b3JrSWQ+JywgJ05ldHdvcmsgSUQnKVxuICAgIC5hY3Rpb24oYXN5bmMgKG5ldHdvcmtJZCkgPT4ge1xuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5jbGVhckNyZWRlbnRpYWxzKG5ldHdvcmtJZCk7XG4gICAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTIERpc2Nvbm5lY3RlZCBmcm9tIG5ldHdvcms6ICR7bmV0d29ya0lkfWApO1xuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnZ2VuZXJhdGUta2V5cycpXG4gICAgLmRlc2NyaXB0aW9uKCdHZW5lcmF0ZSBhIG5ldyBwdWJsaWMgdG9rZW4gYW5kIHByaXZhdGUga2V5IHBhaXInKVxuICAgIC5vcHRpb24oJy0tZm9yY2UnLCAnRm9yY2UgZ2VuZXJhdGlvbiBvZiBuZXcga2V5cyBldmVuIGlmIHRoZXkgZXhpc3QnKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXREZWZhdWx0SWRlbnRpdHkoKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nICYmICFvcHRpb25zLmZvcmNlKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0RlZmF1bHQgaWRlbnRpdHkgYWxyZWFkeSBleGlzdHMuIFVzZSAtLWZvcmNlIHRvIG92ZXJ3cml0ZS4nKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoJ1B1YmxpYyBUb2tlbjonKSwgY2hhbGsud2hpdGUoZXhpc3RpbmcucHVibGljVG9rZW4pKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsb2dnZXIuaW5mbygnUmVxdWVzdGluZyBuZXcga2V5IHBhaXIgZnJvbSBzZXJ2ZXIuLi4nKTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRBcGlDbGllbnQoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PHsgcHVibGljVG9rZW46IHN0cmluZzsgcHJpdmF0ZUtleTogc3RyaW5nIH0+KCcvdjEvYXV0aC9nZW5lcmF0ZS1rZXlzJyk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2F2ZURlZmF1bHRJZGVudGl0eSh7XG4gICAgICAgICAgICBwdWJsaWNUb2tlbjogcmVzcG9uc2UuZGF0YS5wdWJsaWNUb2tlbixcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IHJlc3BvbnNlLmRhdGEucHJpdmF0ZUtleVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ+KckyBLZXlzIGdlbmVyYXRlZCBhbmQgc2F2ZWQgYXMgZGVmYXVsdCBpZGVudGl0eSFcXG4nKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoJ1B1YmxpYyBUb2tlbjonKSwgY2hhbGsud2hpdGUocmVzcG9uc2UuZGF0YS5wdWJsaWNUb2tlbikpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZCgnUHJpdmF0ZSBLZXk6ICcpLCBjaGFsay55ZWxsb3cocmVzcG9uc2UuZGF0YS5wcml2YXRlS2V5KSk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKCdcXG7imqDvuI8gIENSSVRJQ0FMOiBTYXZlIHlvdXIgcHJpdmF0ZSBrZXkgbm93IGlmIHlvdSB3YW50IHRvIHVzZSBpdCBvbiBvdGhlciBkZXZpY2VzLicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5cycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBhdXRoXG4gICAgLmNvbW1hbmQoJ2lkZW50aXR5JylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgeW91ciBjdXJyZW50IGRlZmF1bHQgaWRlbnRpdHkgKHB1YmxpYyB0b2tlbiknKVxuICAgIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpdHkgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldERlZmF1bHRJZGVudGl0eSgpO1xuICAgICAgaWYgKGlkZW50aXR5KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZCgnUHVibGljIFRva2VuOicpLCBjaGFsay53aGl0ZShpZGVudGl0eS5wdWJsaWNUb2tlbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ05vIGRlZmF1bHQgaWRlbnRpdHkgZm91bmQuIFJ1biBcImFnZW50aWNwb29sIGF1dGggZ2VuZXJhdGUta2V5c1wiIGZpcnN0LicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgncmVnaXN0ZXInKVxuICAgIC5kZXNjcmlwdGlvbignUmVnaXN0ZXIgaW4gYSBuZXR3b3JrJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1uLCAtLW5ldHdvcmsgPGlkPicsICdOZXR3b3JrIElEJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1wLCAtLXB1YmxpYy10b2tlbiA8dG9rZW4+JywgJ1lvdXIgcHVibGljIHRva2VuJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1rLCAtLXByaXZhdGUta2V5IDxrZXk+JywgJ1lvdXIgcHJpdmF0ZSBrZXknKVxuICAgIC5vcHRpb24oJy1yLCAtLXJlYXNvbiA8dGV4dD4nLCAnUmVhc29uIGZvciByZWdpc3RlcmluZycpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nZ2VyLmluZm8oYFJlZ2lzdGVyaW5nIGluICR7b3B0aW9ucy5uZXR3b3JrfS4uLmApO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvdjEvYXV0aC9yZWdpc3RlcicsIHtcbiAgICAgICAgICBuZXR3b3JrSWQ6IG9wdGlvbnMubmV0d29yayxcbiAgICAgICAgICBwdWJsaWNUb2tlbjogb3B0aW9ucy5wdWJsaWNUb2tlbixcbiAgICAgICAgICBwcml2YXRlS2V5OiBvcHRpb25zLnByaXZhdGVLZXksXG4gICAgICAgICAgcmVhc29uOiBvcHRpb25zLnJlYXNvblxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRhdGEgYXMgeyBtZW1iZXI6IGFueTsgdG9rZW5zOiBhbnkgfTtcbiAgICAgICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNhdmVDcmVkZW50aWFscyhvcHRpb25zLm5ldHdvcmssIHtcbiAgICAgICAgICAgIHB1YmxpY1Rva2VuOiBvcHRpb25zLnB1YmxpY1Rva2VuLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogb3B0aW9ucy5wcml2YXRlS2V5LFxuICAgICAgICAgICAgand0OiBkYXRhLnRva2Vucy5qd3QsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IGRhdGEudG9rZW5zLmV4cGlyZXNBdFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuYWRkUmVnaXN0ZXJlZE5ldHdvcmsob3B0aW9ucy5uZXR3b3JrLCBvcHRpb25zLnJlYXNvbik7XG5cbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIFJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0NyZWRlbnRpYWxzIHNhdmVkIGxvY2FsbHkuJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgcmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ1JlZ2lzdHJhdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgYXV0aFxuICAgIC5jb21tYW5kKCdsb2dpbicpXG4gICAgLmRlc2NyaXB0aW9uKCdMb2dpbiB0byBhIG5ldHdvcmsnKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLW4sIC0tbmV0d29yayA8aWQ+JywgJ05ldHdvcmsgSUQnKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLXAsIC0tcHVibGljLXRva2VuIDx0b2tlbj4nLCAnWW91ciBwdWJsaWMgdG9rZW4nKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLWssIC0tcHJpdmF0ZS1rZXkgPGtleT4nLCAnWW91ciBwcml2YXRlIGtleScpXG4gICAgLm9wdGlvbignLXIsIC0tcmVhc29uIDx0ZXh0PicsICdSZWFzb24gZm9yIGxvZ2luJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgTG9nZ2luZyBpbiB0byAke29wdGlvbnMubmV0d29ya30uLi5gKTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRBcGlDbGllbnQoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgnL3YxL2F1dGgvbG9naW4nLCB7XG4gICAgICAgICAgbmV0d29ya0lkOiBvcHRpb25zLm5ldHdvcmssXG4gICAgICAgICAgcHVibGljVG9rZW46IG9wdGlvbnMucHVibGljVG9rZW4sXG4gICAgICAgICAgcHJpdmF0ZUtleTogb3B0aW9ucy5wcml2YXRlS2V5LFxuICAgICAgICAgIHJlYXNvbjogb3B0aW9ucy5yZWFzb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGNvbnN0IHRva2VucyA9IHJlc3BvbnNlLmRhdGEgYXMgYW55O1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2F2ZUNyZWRlbnRpYWxzKG9wdGlvbnMubmV0d29yaywge1xuICAgICAgICAgICAgcHVibGljVG9rZW46IG9wdGlvbnMucHVibGljVG9rZW4sXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBvcHRpb25zLnByaXZhdGVLZXksXG4gICAgICAgICAgICBqd3Q6IHRva2Vucy5qd3QsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHRva2Vucy5leHBpcmVzQXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLmFkZFJlZ2lzdGVyZWROZXR3b3JrKG9wdGlvbnMubmV0d29yaywgb3B0aW9ucy5yZWFzb24pO1xuXG4gICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ+KckyBMb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ05ldyBKV1Qgc2Vzc2lvbiBlc3RhYmxpc2hlZC4nKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnTG9naW4gZmFpbGVkJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnbG9nb3V0JylcbiAgICAuZGVzY3JpcHRpb24oJ0xvZ291dCBmcm9tIGEgbmV0d29yaycpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctbiwgLS1uZXR3b3JrIDxpZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5jbGVhckNyZWRlbnRpYWxzKG9wdGlvbnMubmV0d29yayk7XG4gICAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTIExvZ2dlZCBvdXQgZnJvbSBuZXR3b3JrOiAke29wdGlvbnMubmV0d29ya31gKTtcbiAgICB9KTtcblxuICBhdXRoXG4gICAgLmNvbW1hbmQoJ3N0YXR1cycpXG4gICAgLmRlc2NyaXB0aW9uKCdTaG93IGF1dGhlbnRpY2F0aW9uIHN0YXR1cycpXG4gICAgLm9wdGlvbignLW4sIC0tbmV0d29yayA8aWQ+JywgJ05ldHdvcmsgSUQgdG8gY2hlY2snKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKCdBUEkgVVJMOicpLCBjb25maWcuYXBpVXJsKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJ0Zvcm1hdDonKSwgY29uZmlnLmRlZmF1bHRGb3JtYXQpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignQ29uZmlnIGRpcjonKSwgY29uZmlnTWFuYWdlci5nZXRDb25maWdQYXRoKCkpO1xuICAgICAgXG4gICAgICBpZiAob3B0aW9ucy5uZXR3b3JrKSB7XG4gICAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRDcmVkZW50aWFscyhvcHRpb25zLm5ldHdvcmspO1xuICAgICAgICBpZiAoY3JlZHMpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKCdcXG5OZXR3b3JrOicpLCBvcHRpb25zLm5ldHdvcmspO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJ1B1YmxpYyBUb2tlbjonKSwgY3JlZHMucHVibGljVG9rZW4pO1xuICAgICAgICAgIGlmIChjcmVkcy5leHBpcmVzQXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gRGF0ZS5ub3coKSA8IGNyZWRzLmV4cGlyZXNBdDtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJ1Rva2VuIHZhbGlkOicpLCB2YWxpZCA/IGNoYWxrLmdyZWVuKCdZZXMnKSA6IGNoYWxrLnJlZCgnTm8gKGV4cGlyZWQpJykpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignRXhwaXJlczonKSwgbmV3IERhdGUoY3JlZHMuZXhwaXJlc0F0KS50b0lTT1N0cmluZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oYFxcbk5vdCBjb25uZWN0ZWQgdG8gbmV0d29yazogJHtvcHRpb25zLm5ldHdvcmt9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0Esb0RBNE1DO0FBak5ELHNDQUEwQztBQUMxQyxtREFBZ0Q7QUFDaEQsNENBQXlDO0FBQ3pDLDZEQUFvQztBQUVwQyxTQUFnQixvQkFBb0IsQ0FBQyxPQUFnQjtJQUNuRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRTVFLElBQUk7U0FDRCxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ2xCLFdBQVcsQ0FBQyxnREFBZ0QsQ0FBQztTQUM3RCxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztTQUNyQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsaUNBQWlDLENBQUM7U0FDcEUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFEQUFxRCxDQUFDO1NBQ3BGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ25DLElBQUksQ0FBQztZQUNILGVBQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLFNBQVMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBVSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFL0UsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLGVBQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBRUQsd0NBQXdDO1lBQ3hDLE1BQU0sc0JBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0s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QUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vYXV0aC9BdXRoSGVscGVyJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnLi4vdXRpbHMvY29sb3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQXV0aENvbW1hbmRzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgY29uc3QgYXV0aCA9IHByb2dyYW0uY29tbWFuZCgnYXV0aCcpLmRlc2NyaXB0aW9uKCdBdXRoZW50aWNhdGlvbiBjb21tYW5kcycpO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnY29ubmVjdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDb25uZWN0IHRvIGEgbmV0d29yayAoYXV0by1yZWdpc3RlciBpZiBuZWVkZWQpJylcbiAgICAuYXJndW1lbnQoJzxuZXR3b3JrSWQ+JywgJ05ldHdvcmsgSUQnKVxuICAgIC5vcHRpb24oJy1rLCAtLXByaXZhdGUta2V5IDxrZXk+JywgJ0V4aXN0aW5nIHByaXZhdGUga2V5IChvcHRpb25hbCknKVxuICAgIC5vcHRpb24oJy1yLCAtLXJlYXNvbiA8dGV4dD4nLCAnUmVhc29uIGZvciBqb2luaW5nIHRoaXMgbmV0d29yayAoZm9yIGxvY2FsIHJlY29yZHMpJylcbiAgICAuYWN0aW9uKGFzeW5jIChuZXR3b3JrSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBDb25uZWN0aW5nIHRvIG5ldHdvcms6ICR7bmV0d29ya0lkfS4uLmApO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBBdXRoSGVscGVyLmVuc3VyZUF1dGhlbnRpY2F0ZWQobmV0d29ya0lkLCBvcHRpb25zLnJlYXNvbik7XG4gICAgICAgIFxuICAgICAgICBpZiAocmVzdWx0LmlzTmV3VXNlcikge1xuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgUmVnaXN0ZXJlZCBhbmQgY29ubmVjdGVkIScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgQ29ubmVjdGVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVjb3JkIHRoZSBuZXR3b3JrIGFuZCByZWFzb24gbG9jYWxseVxuICAgICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLmFkZFJlZ2lzdGVyZWROZXR3b3JrKG5ldHdvcmtJZCwgb3B0aW9ucy5yZWFzb24pO1xuICAgICAgICBcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnTmV0d29yazonKSwgbmV0d29ya0lkKTtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnUHVibGljIFRva2VuOicpLCByZXN1bHQuY3JlZGVudGlhbHMucHVibGljVG9rZW4pO1xuICAgICAgICBpZiAob3B0aW9ucy5yZWFzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdSZWFzb246JyksIG9wdGlvbnMucmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3VsdC5jcmVkZW50aWFscy5leHBpcmVzQXQpIHtcbiAgICAgICAgICBjb25zdCBleHBpcmVzID0gbmV3IERhdGUocmVzdWx0LmNyZWRlbnRpYWxzLmV4cGlyZXNBdCk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnVG9rZW4gZXhwaXJlczonKSwgZXhwaXJlcy50b0lTT1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdcXG5FcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgYXV0aFxuICAgIC5jb21tYW5kKCdkaXNjb25uZWN0JylcbiAgICAuZGVzY3JpcHRpb24oJ0Rpc2Nvbm5lY3QgZnJvbSBhIG5ldHdvcmsnKVxuICAgIC5hcmd1bWVudCgnPG5ldHdvcmtJZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkKSA9PiB7XG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLmNsZWFyQ3JlZGVudGlhbHMobmV0d29ya0lkKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDinJMgRGlzY29ubmVjdGVkIGZyb20gbmV0d29yazogJHtuZXR3b3JrSWR9YCk7XG4gICAgfSk7XG5cbiAgYXV0aFxuICAgIC5jb21tYW5kKCdnZW5lcmF0ZS1rZXlzJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIGEgbmV3IHB1YmxpYyB0b2tlbiBhbmQgcHJpdmF0ZSBrZXkgcGFpcicpXG4gICAgLm9wdGlvbignLS1mb3JjZScsICdGb3JjZSBnZW5lcmF0aW9uIG9mIG5ldyBrZXlzIGV2ZW4gaWYgdGhleSBleGlzdCcpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldERlZmF1bHRJZGVudGl0eSgpO1xuICAgICAgICBpZiAoZXhpc3RpbmcgJiYgIW9wdGlvbnMuZm9yY2UpIHtcbiAgICAgICAgICBsb2dnZXIud2FybignRGVmYXVsdCBpZGVudGl0eSBhbHJlYWR5IGV4aXN0cy4gVXNlIC0tZm9yY2UgdG8gb3ZlcndyaXRlLicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZCgnUHVibGljIFRva2VuOicpLCBjaGFsay53aGl0ZShleGlzdGluZy5wdWJsaWNUb2tlbikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvZ2dlci5pbmZvKCdSZXF1ZXN0aW5nIG5ldyBrZXkgcGFpciBmcm9tIHNlcnZlci4uLicpO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8eyBwdWJsaWNUb2tlbjogc3RyaW5nOyBwcml2YXRlS2V5OiBzdHJpbmcgfT4oJy92MS9hdXRoL2dlbmVyYXRlLWtleXMnKTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlRGVmYXVsdElkZW50aXR5KHtcbiAgICAgICAgICAgIHB1YmxpY1Rva2VuOiByZXNwb25zZS5kYXRhLnB1YmxpY1Rva2VuLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogcmVzcG9uc2UuZGF0YS5wcml2YXRlS2V5XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIEtleXMgZ2VuZXJhdGVkIGFuZCBzYXZlZCBhcyBkZWZhdWx0IGlkZW50aXR5IVxcbicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZCgnUHVibGljIFRva2VuOicpLCBjaGFsay53aGl0ZShyZXNwb25zZS5kYXRhLnB1YmxpY1Rva2VuKSk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKCdQcml2YXRlIEtleTogJyksIGNoYWxrLnllbGxvdyhyZXNwb25zZS5kYXRhLnByaXZhdGVLZXkpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5yZWQoJ1xcbuKaoO+4jyAgQ1JJVElDQUw6IFNhdmUgeW91ciBwcml2YXRlIGtleSBub3cgaWYgeW91IHdhbnQgdG8gdXNlIGl0IG9uIG90aGVyIGRldmljZXMuJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgcmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBnZW5lcmF0ZSBrZXlzJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnaWRlbnRpdHknKVxuICAgIC5kZXNjcmlwdGlvbignU2hvdyB5b3VyIGN1cnJlbnQgZGVmYXVsdCBpZGVudGl0eSAocHVibGljIHRva2VuKScpXG4gICAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0RGVmYXVsdElkZW50aXR5KCk7XG4gICAgICBpZiAoaWRlbnRpdHkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKCdQdWJsaWMgVG9rZW46JyksIGNoYWxrLndoaXRlKGlkZW50aXR5LnB1YmxpY1Rva2VuKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIud2FybignTm8gZGVmYXVsdCBpZGVudGl0eSBmb3VuZC4gUnVuIFwiYWdlbnRpY3Bvb2wgYXV0aCBnZW5lcmF0ZS1rZXlzXCIgZmlyc3QuJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgYXV0aFxuICAgIC5jb21tYW5kKCdyZWdpc3RlcicpXG4gICAgLmRlc2NyaXB0aW9uKCdSZWdpc3RlciBpbiBhIG5ldHdvcmsnKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLW4sIC0tbmV0d29yayA8aWQ+JywgJ05ldHdvcmsgSUQnKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLXAsIC0tcHVibGljLXRva2VuIDx0b2tlbj4nLCAnWW91ciBwdWJsaWMgdG9rZW4nKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLWssIC0tcHJpdmF0ZS1rZXkgPGtleT4nLCAnWW91ciBwcml2YXRlIGtleScpXG4gICAgLm9wdGlvbignLXIsIC0tcmVhc29uIDx0ZXh0PicsICdSZWFzb24gZm9yIHJlZ2lzdGVyaW5nJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgUmVnaXN0ZXJpbmcgaW4gJHtvcHRpb25zLm5ldHdvcmt9Li4uYCk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0QXBpQ2xpZW50KCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy92MS9hdXRoL3JlZ2lzdGVyJywge1xuICAgICAgICAgIG5ldHdvcmtJZDogb3B0aW9ucy5uZXR3b3JrLFxuICAgICAgICAgIHB1YmxpY1Rva2VuOiBvcHRpb25zLnB1YmxpY1Rva2VuLFxuICAgICAgICAgIHByaXZhdGVLZXk6IG9wdGlvbnMucHJpdmF0ZUtleSxcbiAgICAgICAgICByZWFzb246IG9wdGlvbnMucmVhc29uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YSBhcyB7IG1lbWJlcjogYW55OyB0b2tlbnM6IGFueSB9O1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2F2ZUNyZWRlbnRpYWxzKG9wdGlvbnMubmV0d29yaywge1xuICAgICAgICAgICAgcHVibGljVG9rZW46IG9wdGlvbnMucHVibGljVG9rZW4sXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBvcHRpb25zLnByaXZhdGVLZXksXG4gICAgICAgICAgICBqd3Q6IGRhdGEudG9rZW5zLmp3dCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogZGF0YS50b2tlbnMuZXhwaXJlc0F0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5hZGRSZWdpc3RlcmVkTmV0d29yayhvcHRpb25zLm5ldHdvcmssIG9wdGlvbnMucmVhc29uKTtcblxuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgUmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnQ3JlZGVudGlhbHMgc2F2ZWQgbG9jYWxseS4nKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnUmVnaXN0cmF0aW9uIGZhaWxlZCcpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBhdXRoXG4gICAgLmNvbW1hbmQoJ2xvZ2luJylcbiAgICAuZGVzY3JpcHRpb24oJ0xvZ2luIHRvIGEgbmV0d29yaycpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctbiwgLS1uZXR3b3JrIDxpZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctcCwgLS1wdWJsaWMtdG9rZW4gPHRva2VuPicsICdZb3VyIHB1YmxpYyB0b2tlbicpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctaywgLS1wcml2YXRlLWtleSA8a2V5PicsICdZb3VyIHByaXZhdGUga2V5JylcbiAgICAub3B0aW9uKCctciwgLS1yZWFzb24gPHRleHQ+JywgJ1JlYXNvbiBmb3IgbG9naW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBMb2dnaW5nIGluIHRvICR7b3B0aW9ucy5uZXR3b3JrfS4uLmApO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvdjEvYXV0aC9sb2dpbicsIHtcbiAgICAgICAgICBuZXR3b3JrSWQ6IG9wdGlvbnMubmV0d29yayxcbiAgICAgICAgICBwdWJsaWNUb2tlbjogb3B0aW9ucy5wdWJsaWNUb2tlbixcbiAgICAgICAgICBwcml2YXRlS2V5OiBvcHRpb25zLnByaXZhdGVLZXksXG4gICAgICAgICAgcmVhc29uOiBvcHRpb25zLnJlYXNvblxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW5zID0gcmVzcG9uc2UuZGF0YSBhcyBhbnk7XG4gICAgICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlQ3JlZGVudGlhbHMob3B0aW9ucy5uZXR3b3JrLCB7XG4gICAgICAgICAgICBwdWJsaWNUb2tlbjogb3B0aW9ucy5wdWJsaWNUb2tlbixcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IG9wdGlvbnMucHJpdmF0ZUtleSxcbiAgICAgICAgICAgIGp3dDogdG9rZW5zLmp3dCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogdG9rZW5zLmV4cGlyZXNBdFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuYWRkUmVnaXN0ZXJlZE5ldHdvcmsob3B0aW9ucy5uZXR3b3JrLCBvcHRpb25zLnJlYXNvbik7XG5cbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIExvZ2dlZCBpbiBzdWNjZXNzZnVsbHkhJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnTmV3IEpXVCBzZXNzaW9uIGVzdGFibGlzaGVkLicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdMb2dpbiBmYWlsZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgYXV0aFxuICAgIC5jb21tYW5kKCdsb2dvdXQnKVxuICAgIC5kZXNjcmlwdGlvbignTG9nb3V0IGZyb20gYSBuZXR3b3JrJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1uLCAtLW5ldHdvcmsgPGlkPicsICdOZXR3b3JrIElEJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLmNsZWFyQ3JlZGVudGlhbHMob3B0aW9ucy5uZXR3b3JrKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDinJMgTG9nZ2VkIG91dCBmcm9tIG5ldHdvcms6ICR7b3B0aW9ucy5uZXR3b3JrfWApO1xuICAgIH0pO1xuXG4gIGF1dGhcbiAgICAuY29tbWFuZCgnc3RhdHVzJylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgYXV0aGVudGljYXRpb24gc3RhdHVzJylcbiAgICAub3B0aW9uKCctbiwgLS1uZXR3b3JrIDxpZD4nLCAnTmV0d29yayBJRCB0byBjaGVjaycpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRHbG9iYWxDb25maWcoKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJ0FQSSBVUkw6JyksIGNvbmZpZy5hcGlVcmwpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignRm9ybWF0OicpLCBjb25maWcuZGVmYXVsdEZvcm1hdCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKCdDb25maWcgZGlyOicpLCBjb25maWdNYW5hZ2VyLmdldENvbmZpZ1BhdGgoKSk7XG4gICAgICBcbiAgICAgIGlmIChvcHRpb25zLm5ldHdvcmspIHtcbiAgICAgICAgY29uc3QgY3JlZHMgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldENyZWRlbnRpYWxzKG9wdGlvbnMubmV0d29yayk7XG4gICAgICAgIGlmIChjcmVkcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJ1xcbk5ldHdvcms6JyksIG9wdGlvbnMubmV0d29yayk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignUHVibGljIFRva2VuOicpLCBjcmVkcy5wdWJsaWNUb2tlbik7XG4gICAgICAgICAgaWYgKGNyZWRzLmV4cGlyZXNBdCkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBEYXRlLm5vdygpIDwgY3JlZHMuZXhwaXJlc0F0O1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignVG9rZW4gdmFsaWQ6JyksIHZhbGlkID8gY2hhbGsuZ3JlZW4oJ1llcycpIDogY2hhbGsucmVkKCdObyAoZXhwaXJlZCknKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKCdFeHBpcmVzOicpLCBuZXcgRGF0ZShjcmVkcy5leHBpcmVzQXQpLnRvSVNPU3RyaW5nKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIud2FybihgXFxuTm90IGNvbm5lY3RlZCB0byBuZXR3b3JrOiAke29wdGlvbnMubmV0d29ya31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xufVxuIl19
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.registerConfigCommands = registerConfigCommands;
4
7
  const config_1 = require("../config");
5
- const chalk = require('chalk');
8
+ const colors_1 = __importDefault(require("../utils/colors"));
6
9
  function registerConfigCommands(program) {
7
10
  const config = program.command('config').description('Configuration commands');
8
11
  config
@@ -11,7 +14,7 @@ function registerConfigCommands(program) {
11
14
  .argument('<url>', 'API URL')
12
15
  .action(async (url) => {
13
16
  await config_1.configManager.setApiUrl(url);
14
- console.log(chalk.green('✓ API URL set to:'), url);
17
+ console.log(colors_1.default.green('✓ API URL set to:'), url);
15
18
  });
16
19
  config
17
20
  .command('set-format')
@@ -19,30 +22,30 @@ function registerConfigCommands(program) {
19
22
  .argument('<format>', 'Format: toon or json')
20
23
  .action(async (format) => {
21
24
  if (format !== 'toon' && format !== 'json') {
22
- console.error(chalk.red('Error:'), 'Format must be "toon" or "json"');
25
+ console.error(colors_1.default.red('Error:'), 'Format must be "toon" or "json"');
23
26
  return;
24
27
  }
25
28
  const cfg = await config_1.configManager.getGlobalConfig();
26
29
  cfg.defaultFormat = format;
27
30
  await config_1.configManager.saveGlobalConfig(cfg);
28
- console.log(chalk.green('✓ Default format set to:'), format);
31
+ console.log(colors_1.default.green('✓ Default format set to:'), format);
29
32
  });
30
33
  config
31
34
  .command('show')
32
35
  .description('Show current configuration')
33
36
  .action(async () => {
34
37
  const cfg = await config_1.configManager.getGlobalConfig();
35
- console.log(chalk.cyan.bold('\nConfiguration:\n'));
36
- console.log(chalk.gray('API URL:'), cfg.apiUrl);
37
- console.log(chalk.gray('Default Format:'), cfg.defaultFormat);
38
- console.log(chalk.gray('Config Path:'), config_1.configManager.getConfigPath());
38
+ console.log(colors_1.default.cyan.bold('\nConfiguration:\n'));
39
+ console.log(colors_1.default.gray('API URL:'), cfg.apiUrl);
40
+ console.log(colors_1.default.gray('Default Format:'), cfg.defaultFormat);
41
+ console.log(colors_1.default.gray('Config Path:'), config_1.configManager.getConfigPath());
39
42
  });
40
43
  config
41
44
  .command('clear-cache')
42
45
  .description('Clear local cache')
43
46
  .action(async () => {
44
47
  await config_1.configManager.clearCache();
45
- console.log(chalk.green('✓ Cache cleared'));
48
+ console.log(colors_1.default.green('✓ Cache cleared'));
46
49
  });
47
50
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLHdEQThDQztBQWpERCxzQ0FBMEM7QUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRS9CLFNBQWdCLHNCQUFzQixDQUFDLE9BQWdCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFL0UsTUFBTTtTQUNILE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUMxQixRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztTQUM1QixNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3BCLE1BQU0sc0JBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFTCxNQUFNO1NBQ0gsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUNyQixXQUFXLENBQUMsbUNBQW1DLENBQUM7U0FDaEQsUUFBUSxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsQ0FBQztTQUM1QyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3ZCLElBQUksTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7WUFDdEUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLHNCQUFhLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEQsR0FBRyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFDM0IsTUFBTSxzQkFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUwsTUFBTTtTQUNILE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixXQUFXLENBQUMsNEJBQTRCLENBQUM7U0FDekMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sc0JBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsc0JBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBRUwsTUFBTTtTQUNILE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDdEIsV0FBVyxDQUFDLG1CQUFtQixDQUFDO1NBQ2hDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNqQixNQUFNLHNCQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGNvbmZpZ01hbmFnZXIgfSBmcm9tICcuLi9jb25maWcnO1xuY29uc3QgY2hhbGsgPSByZXF1aXJlKCdjaGFsaycpO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb25maWdDb21tYW5kcyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIGNvbnN0IGNvbmZpZyA9IHByb2dyYW0uY29tbWFuZCgnY29uZmlnJykuZGVzY3JpcHRpb24oJ0NvbmZpZ3VyYXRpb24gY29tbWFuZHMnKTtcblxuICBjb25maWdcbiAgICAuY29tbWFuZCgnc2V0LXVybCcpXG4gICAgLmRlc2NyaXB0aW9uKCdTZXQgQVBJIFVSTCcpXG4gICAgLmFyZ3VtZW50KCc8dXJsPicsICdBUEkgVVJMJylcbiAgICAuYWN0aW9uKGFzeW5jICh1cmwpID0+IHtcbiAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2V0QXBpVXJsKHVybCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbign4pyTIEFQSSBVUkwgc2V0IHRvOicpLCB1cmwpO1xuICAgIH0pO1xuXG4gIGNvbmZpZ1xuICAgIC5jb21tYW5kKCdzZXQtZm9ybWF0JylcbiAgICAuZGVzY3JpcHRpb24oJ1NldCBkZWZhdWx0IGZvcm1hdCAodG9vbiBvciBqc29uKScpXG4gICAgLmFyZ3VtZW50KCc8Zm9ybWF0PicsICdGb3JtYXQ6IHRvb24gb3IganNvbicpXG4gICAgLmFjdGlvbihhc3luYyAoZm9ybWF0KSA9PiB7XG4gICAgICBpZiAoZm9ybWF0ICE9PSAndG9vbicgJiYgZm9ybWF0ICE9PSAnanNvbicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihjaGFsay5yZWQoJ0Vycm9yOicpLCAnRm9ybWF0IG11c3QgYmUgXCJ0b29uXCIgb3IgXCJqc29uXCInKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldEdsb2JhbENvbmZpZygpO1xuICAgICAgY2ZnLmRlZmF1bHRGb3JtYXQgPSBmb3JtYXQ7XG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNhdmVHbG9iYWxDb25maWcoY2ZnKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCfinJMgRGVmYXVsdCBmb3JtYXQgc2V0IHRvOicpLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gIGNvbmZpZ1xuICAgIC5jb21tYW5kKCdzaG93JylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgY3VycmVudCBjb25maWd1cmF0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNmZyA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoJ1xcbkNvbmZpZ3VyYXRpb246XFxuJykpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnQVBJIFVSTDonKSwgY2ZnLmFwaVVybCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdEZWZhdWx0IEZvcm1hdDonKSwgY2ZnLmRlZmF1bHRGb3JtYXQpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnQ29uZmlnIFBhdGg6JyksIGNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnUGF0aCgpKTtcbiAgICB9KTtcblxuICBjb25maWdcbiAgICAuY29tbWFuZCgnY2xlYXItY2FjaGUnKVxuICAgIC5kZXNjcmlwdGlvbignQ2xlYXIgbG9jYWwgY2FjaGUnKVxuICAgIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5jbGVhckNhY2hlKCk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbign4pyTIENhY2hlIGNsZWFyZWQnKSk7XG4gICAgfSk7XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLHdEQThDQztBQWpERCxzQ0FBMEM7QUFDMUMsNkRBQW9DO0FBRXBDLFNBQWdCLHNCQUFzQixDQUFDLE9BQWdCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFL0UsTUFBTTtTQUNILE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUMxQixRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztTQUM1QixNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3BCLE1BQU0sc0JBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUwsTUFBTTtTQUNILE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDckIsV0FBVyxDQUFDLG1DQUFtQyxDQUFDO1NBQ2hELFFBQVEsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUM7U0FDNUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN2QixJQUFJLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztZQUN0RSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sc0JBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsRCxHQUFHLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUMzQixNQUFNLHNCQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUwsTUFBTTtTQUNILE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixXQUFXLENBQUMsNEJBQTRCLENBQUM7U0FDekMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sc0JBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHNCQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU07U0FDSCxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQztTQUNoQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDakIsTUFBTSxzQkFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnLi4vdXRpbHMvY29sb3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29uZmlnQ29tbWFuZHMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBjb25zdCBjb25maWcgPSBwcm9ncmFtLmNvbW1hbmQoJ2NvbmZpZycpLmRlc2NyaXB0aW9uKCdDb25maWd1cmF0aW9uIGNvbW1hbmRzJyk7XG5cbiAgY29uZmlnXG4gICAgLmNvbW1hbmQoJ3NldC11cmwnKVxuICAgIC5kZXNjcmlwdGlvbignU2V0IEFQSSBVUkwnKVxuICAgIC5hcmd1bWVudCgnPHVybD4nLCAnQVBJIFVSTCcpXG4gICAgLmFjdGlvbihhc3luYyAodXJsKSA9PiB7XG4gICAgICBhd2FpdCBjb25maWdNYW5hZ2VyLnNldEFwaVVybCh1cmwpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ+KckyBBUEkgVVJMIHNldCB0bzonKSwgdXJsKTtcbiAgICB9KTtcblxuICBjb25maWdcbiAgICAuY29tbWFuZCgnc2V0LWZvcm1hdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdTZXQgZGVmYXVsdCBmb3JtYXQgKHRvb24gb3IganNvbiknKVxuICAgIC5hcmd1bWVudCgnPGZvcm1hdD4nLCAnRm9ybWF0OiB0b29uIG9yIGpzb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKGZvcm1hdCkgPT4ge1xuICAgICAgaWYgKGZvcm1hdCAhPT0gJ3Rvb24nICYmIGZvcm1hdCAhPT0gJ2pzb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKCdFcnJvcjonKSwgJ0Zvcm1hdCBtdXN0IGJlIFwidG9vblwiIG9yIFwianNvblwiJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgY2ZnID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRHbG9iYWxDb25maWcoKTtcbiAgICAgIGNmZy5kZWZhdWx0Rm9ybWF0ID0gZm9ybWF0O1xuICAgICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlR2xvYmFsQ29uZmlnKGNmZyk7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbign4pyTIERlZmF1bHQgZm9ybWF0IHNldCB0bzonKSwgZm9ybWF0KTtcbiAgICB9KTtcblxuICBjb25maWdcbiAgICAuY29tbWFuZCgnc2hvdycpXG4gICAgLmRlc2NyaXB0aW9uKCdTaG93IGN1cnJlbnQgY29uZmlndXJhdGlvbicpXG4gICAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldEdsb2JhbENvbmZpZygpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKCdcXG5Db25maWd1cmF0aW9uOlxcbicpKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0FQSSBVUkw6JyksIGNmZy5hcGlVcmwpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnRGVmYXVsdCBGb3JtYXQ6JyksIGNmZy5kZWZhdWx0Rm9ybWF0KTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0NvbmZpZyBQYXRoOicpLCBjb25maWdNYW5hZ2VyLmdldENvbmZpZ1BhdGgoKSk7XG4gICAgfSk7XG5cbiAgY29uZmlnXG4gICAgLmNvbW1hbmQoJ2NsZWFyLWNhY2hlJylcbiAgICAuZGVzY3JpcHRpb24oJ0NsZWFyIGxvY2FsIGNhY2hlJylcbiAgICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuY2xlYXJDYWNoZSgpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ+KckyBDYWNoZSBjbGVhcmVkJykpO1xuICAgIH0pO1xufVxuIl19