@thinkhive/sdk 3.3.0 → 4.0.1

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.
@@ -111,7 +111,7 @@ async function create(options) {
111
111
  return (0, client_1.apiRequest)('/api-keys', {
112
112
  method: 'POST',
113
113
  body,
114
- apiVersion: 'v1',
114
+ apiVersion: 'v2',
115
115
  });
116
116
  }
117
117
  /**
@@ -131,7 +131,7 @@ async function create(options) {
131
131
  async function list() {
132
132
  return (0, client_1.apiRequest)('/api-keys', {
133
133
  method: 'GET',
134
- apiVersion: 'v1',
134
+ apiVersion: 'v2',
135
135
  });
136
136
  }
137
137
  /**
@@ -151,7 +151,7 @@ async function revoke(keyId) {
151
151
  }
152
152
  await (0, client_1.apiRequest)(`/api-keys/${keyId}`, {
153
153
  method: 'DELETE',
154
- apiVersion: 'v1',
154
+ apiVersion: 'v2',
155
155
  });
156
156
  }
157
157
  /**
@@ -224,7 +224,7 @@ async function test(apiKey, agentId) {
224
224
  return (0, client_1.apiRequest)('/api-keys/test', {
225
225
  method: 'POST',
226
226
  body: { apiKey, agentId, createTestTrace: !!agentId },
227
- apiVersion: 'v1',
227
+ apiVersion: 'v2',
228
228
  });
229
229
  }
230
230
  // ============================================================================
@@ -295,4 +295,4 @@ exports.apiKeys = {
295
295
  getTimeUntilExpiry,
296
296
  canAccessAgent,
297
297
  };
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpS2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYXBpS2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRzs7O0FBNElILHdCQXVEQztBQWdCRCxvQkFLQztBQWFELHdCQVNDO0FBc0JELHdCQW1DQztBQWlCRCxvQkFhQztBQVNELHNDQWdCQztBQUtELDhCQUdDO0FBS0QsMEJBRUM7QUFNRCxnREFLQztBQUtELHdDQU1DO0FBallELDJDQUFzRTtBQW9IdEUsK0VBQStFO0FBQy9FLCtCQUErQjtBQUMvQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0ksS0FBSyxVQUFVLE1BQU0sQ0FBQyxPQUE0QjtJQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksaUNBQXdCLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixlQUFlO1FBQ2YsTUFBTSxTQUFTLEdBQUcsNkZBQTZGLENBQUM7UUFDaEgsNkVBQTZFO1FBQzdFLE1BQU0sU0FBUyxHQUFHLHVaQUF1WixDQUFDO1FBQzFhLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3JFLE1BQU0sSUFBSSxpQ0FBd0IsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLEVB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U0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQ3pELHNDQUFzQztJQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUVsRSxRQUFBLE9BQU8sR0FBRztJQUNyQixNQUFNO0lBQ04sSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0lBQ04sSUFBSTtJQUNKLGFBQWE7SUFDYixTQUFTO0lBQ1QsT0FBTztJQUNQLGtCQUFrQjtJQUNsQixjQUFjO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIEFQSSBLZXlzIE1hbmFnZW1lbnRcbiAqXG4gKiBDcmVhdGUgYW5kIG1hbmFnZSBzY29wZWQgQVBJIGtleXMgd2l0aDpcbiAqIC0gUGVybWlzc2lvbiBjb250cm9sIChyZWFkL3dyaXRlL2RlbGV0ZSlcbiAqIC0gQWdlbnQtbGV2ZWwgc2NvcGluZyAoYWxsb3dlZEFnZW50SWRzKVxuICogLSBFbnZpcm9ubWVudCBzZXBhcmF0aW9uIChwcm9kdWN0aW9uL3N0YWdpbmcvZGV2ZWxvcG1lbnQpXG4gKiAtIElQIHdoaXRlbGlzdGluZyAoYWxsb3dlZElwcylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgYXBpS2V5cyB9IGZyb20gJ3RoaW5raGl2ZS1qcyc7XG4gKlxuICogLy8gQ3JlYXRlIGEgcmVhZC1vbmx5IGtleSBmb3IgbW9uaXRvcmluZ1xuICogY29uc3QgcmVhZE9ubHlLZXkgPSBhd2FpdCBhcGlLZXlzLmNyZWF0ZSh7XG4gKiAgIG5hbWU6ICdNb25pdG9yaW5nIEtleScsXG4gKiAgIHNjb3BlVHlwZTogJ3JlYWRvbmx5J1xuICogfSk7XG4gKlxuICogLy8gQ3JlYXRlIGEga2V5IHNjb3BlZCB0byBzcGVjaWZpYyBhZ2VudHNcbiAqIGNvbnN0IGFnZW50S2V5ID0gYXdhaXQgYXBpS2V5cy5jcmVhdGUoe1xuICogICBuYW1lOiAnQWdlbnQgQSBLZXknLFxuICogICBhbGxvd2VkQWdlbnRJZHM6IFsnYWdlbnQtYS1pZCcsICdhZ2VudC1iLWlkJ10sXG4gKiAgIHBlcm1pc3Npb25zOiB7IHJlYWQ6IHRydWUsIHdyaXRlOiB0cnVlLCBkZWxldGU6IGZhbHNlIH1cbiAqIH0pO1xuICpcbiAqIC8vIENyZWF0ZSBhIHN0YWdpbmcgZW52aXJvbm1lbnQga2V5XG4gKiBjb25zdCBzdGFnaW5nS2V5ID0gYXdhaXQgYXBpS2V5cy5jcmVhdGUoe1xuICogICBuYW1lOiAnU3RhZ2luZyBLZXknLFxuICogICBlbnZpcm9ubWVudDogJ3N0YWdpbmcnLFxuICogICBhbGxvd2VkSXBzOiBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11cbiAqIH0pO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBrZXkgcGVybWlzc2lvbiBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5UGVybWlzc2lvbnMge1xuICAvKiogQWxsb3cgcmVhZCBvcGVyYXRpb25zIChHRVQgcmVxdWVzdHMsIGxpc3RpbmcsIGV0Yy4pICovXG4gIHJlYWQ6IGJvb2xlYW47XG4gIC8qKiBBbGxvdyB3cml0ZSBvcGVyYXRpb25zIChQT1NULCBQVVQgcmVxdWVzdHMpICovXG4gIHdyaXRlOiBib29sZWFuO1xuICAvKiogQWxsb3cgZGVsZXRlIG9wZXJhdGlvbnMgKERFTEVURSByZXF1ZXN0cykgKi9cbiAgZGVsZXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFQSSBrZXkgc2NvcGUgdHlwZVxuICogLSBgY29tcGFueWA6IEZ1bGwgYWNjZXNzIHRvIGFsbCBjb21wYW55IGRhdGFcbiAqIC0gYGFnZW50YDogTGltaXRlZCB0byBzcGVjaWZpYyBhZ2VudHMgKHJlcXVpcmVzIGFsbG93ZWRBZ2VudElkcylcbiAqIC0gYHJlYWRvbmx5YDogUmVhZC1vbmx5IGFjY2VzcyByZWdhcmRsZXNzIG9mIG90aGVyIHNldHRpbmdzXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlVHlwZSA9ICdjb21wYW55JyB8ICdhZ2VudCcgfCAncmVhZG9ubHknO1xuXG4vKipcbiAqIEFQSSBrZXkgZW52aXJvbm1lbnRcbiAqIC0gYHByb2R1Y3Rpb25gOiBGb3IgcHJvZHVjdGlvbiBzeXN0ZW1zXG4gKiAtIGBzdGFnaW5nYDogRm9yIHN0YWdpbmcvcHJlLXByb2R1Y3Rpb25cbiAqIC0gYGRldmVsb3BtZW50YDogRm9yIGxvY2FsIGRldmVsb3BtZW50XG4gKi9cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0gJ3Byb2R1Y3Rpb24nIHwgJ3N0YWdpbmcnIHwgJ2RldmVsb3BtZW50JztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBBUEkga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXBpS2V5T3B0aW9ucyB7XG4gIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBrZXkgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBQZXJtaXNzaW9uIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHRzIHRvIHJlYWQrd3JpdGUpICovXG4gIHBlcm1pc3Npb25zPzogUGFydGlhbDxBcGlLZXlQZXJtaXNzaW9ucz47XG5cbiAgLyoqXG4gICAqIFJlc3RyaWN0IGtleSB0byBzcGVjaWZpYyBhZ2VudCBJRHNcbiAgICogV2hlbiBzZXQsIGtleSBjYW4gb25seSBhY2Nlc3MgdHJhY2VzIGZvciB0aGVzZSBhZ2VudHNcbiAgICovXG4gIGFsbG93ZWRBZ2VudElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTY29wZSB0eXBlIGZvciB0aGUga2V5XG4gICAqIEBkZWZhdWx0ICdjb21wYW55JyBvciAnYWdlbnQnIGlmIGFsbG93ZWRBZ2VudElkcyBpcyBzZXRcbiAgICovXG4gIHNjb3BlVHlwZT86IFNjb3BlVHlwZTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgZm9yIHRoZSBrZXlcbiAgICogQGRlZmF1bHQgJ3Byb2R1Y3Rpb24nXG4gICAqL1xuICBlbnZpcm9ubWVudD86IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBSZXN0cmljdCBrZXkgdG8gc3BlY2lmaWMgSVAgYWRkcmVzc2VzXG4gICAqIFdoZW4gc2V0LCBvbmx5IHJlcXVlc3RzIGZyb20gdGhlc2UgSVBzIGNhbiB1c2UgdGhpcyBrZXlcbiAgICovXG4gIGFsbG93ZWRJcHM/OiBzdHJpbmdbXTtcblxuICAvKiogRXhwaXJhdGlvbiBkYXRlIGZvciB0aGUga2V5ICovXG4gIGV4cGlyZXNBdD86IERhdGU7XG59XG5cbi8qKlxuICogQVBJIGtleSBtZXRhZGF0YSAocmV0dXJuZWQgZnJvbSBzZXJ2ZXIpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5IHtcbiAgLyoqIFVuaXF1ZSBrZXkgSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBLZXkgcHJlZml4IChmaXJzdCA4IGNoYXJzIGZvciBpZGVudGlmaWNhdGlvbikgKi9cbiAga2V5UHJlZml4OiBzdHJpbmc7XG4gIC8qKiBQZXJtaXNzaW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgcGVybWlzc2lvbnM6IEFwaUtleVBlcm1pc3Npb25zIHwgc3RyaW5nW107XG4gIC8qKiBTY29wZSB0eXBlICovXG4gIHNjb3BlVHlwZTogU2NvcGVUeXBlO1xuICAvKiogRW52aXJvbm1lbnQgKi9cbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICAvKiogQWxsb3dlZCBhZ2VudCBJRHMgKG51bGwgPSBhbGwgYWdlbnRzKSAqL1xuICBhbGxvd2VkQWdlbnRJZHM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgLyoqIEFsbG93ZWQgSVAgYWRkcmVzc2VzIChudWxsID0gYWxsIElQcykgKi9cbiAgYWxsb3dlZElwczogc3RyaW5nW10gfCBudWxsO1xuICAvKiogV2hldGhlciBrZXkgaXMgYWN0aXZlICovXG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICAvKiogTGFzdCB1c2FnZSB0aW1lc3RhbXAgKi9cbiAgbGFzdFVzZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRvdGFsIHVzYWdlIGNvdW50ICovXG4gIHVzYWdlQ291bnQ6IG51bWJlcjtcbiAgLyoqIEV4cGlyYXRpb24gZGF0ZSAqL1xuICBleHBpcmVzQXQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBDcmVhdGlvbiB0aW1lc3RhbXAgKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNyZWF0aW5nIGFuIEFQSSBrZXkgKGluY2x1ZGVzIHNlY3JldClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcGlLZXlSZXN1bHQgZXh0ZW5kcyBBcGlLZXkge1xuICAvKipcbiAgICogVGhlIGZ1bGwgQVBJIGtleSB2YWx1ZVxuICAgKiBJTVBPUlRBTlQ6IFRoaXMgaXMgb25seSByZXR1cm5lZCBvbmNlIGFuZCBjYW5ub3QgYmUgcmV0cmlldmVkIGxhdGVyIVxuICAgKiBTdG9yZSBpdCBzZWN1cmVseS5cbiAgICovXG4gIGtleTogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUEkgS2V5IE1hbmFnZW1lbnQgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IEFQSSBrZXkgd2l0aCBzcGVjaWZpZWQgcGVybWlzc2lvbnMgYW5kIHNjb3BpbmdcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFQSSBrZXkgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQ3JlYXRlZCBrZXkgd2l0aCBzZWNyZXQgKG9ubHkgcmV0dXJuZWQgb25jZSEpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHByb2R1Y3Rpb24gd3JpdGUga2V5XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlLZXlzLmNyZWF0ZSh7XG4gKiAgIG5hbWU6ICdQcm9kdWN0aW9uIFNESyBLZXknLFxuICogICBwZXJtaXNzaW9uczogeyByZWFkOiB0cnVlLCB3cml0ZTogdHJ1ZSwgZGVsZXRlOiBmYWxzZSB9XG4gKiB9KTtcbiAqXG4gKiAvLyBTYXZlIHRoZSBrZXkgc2VjdXJlbHkgLSBpdCB3b24ndCBiZSBzaG93biBhZ2FpbiFcbiAqIGNvbnNvbGUubG9nKCdTYXZlIHRoaXMga2V5OicsIHJlc3VsdC5rZXkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGUob3B0aW9uczogQ3JlYXRlQXBpS2V5T3B0aW9ucyk6IFByb21pc2U8Q3JlYXRlQXBpS2V5UmVzdWx0PiB7XG4gIGlmICghb3B0aW9ucy5uYW1lIHx8IG9wdGlvbnMubmFtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignQVBJIGtleSBuYW1lIGlzIHJlcXVpcmVkJywgJ25hbWUnKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIElQIGFkZHJlc3NlcyBpZiBwcm92aWRlZFxuICBpZiAob3B0aW9ucy5hbGxvd2VkSXBzKSB7XG4gICAgLy8gSVB2NCBwYXR0ZXJuXG4gICAgY29uc3QgaXB2NFJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykkLztcbiAgICAvLyBJUHY2IHBhdHRlcm4gKHN1cHBvcnRzIGZ1bGwgYW5kIGNvbXByZXNzZWQgbm90YXRpb24gbGlrZSA6OjEsIDIwMDE6ZGI4OjoxKVxuICAgIGNvbnN0IGlwdjZSZWdleCA9IC9eKD86KD86WzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KD86WzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fCg/OlswLTlhLWZBLUZdezEsNH06KXsxLDR9KD86OlswLTlhLWZBLUZdezEsNH0pezEsM318KD86WzAtOWEtZkEtRl17MSw0fTopezEsM30oPzo6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KD86OlswLTlhLWZBLUZdezEsNH0pezEsNn18Oig/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDo6KSQvO1xuICAgIGZvciAoY29uc3QgaXAgb2Ygb3B0aW9ucy5hbGxvd2VkSXBzKSB7XG4gICAgICBpZiAoIWlwdjRSZWdleC50ZXN0KGlwKSAmJiAhaXB2NlJlZ2V4LnRlc3QoaXApICYmIGlwICE9PSAnbG9jYWxob3N0Jykge1xuICAgICAgICB0aHJvdyBuZXcgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yKGBJbnZhbGlkIElQIGFkZHJlc3M6ICR7aXB9YCwgJ2FsbG93ZWRJcHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBuYW1lOiBvcHRpb25zLm5hbWUudHJpbSgpLFxuICB9O1xuXG4gIGlmIChvcHRpb25zLnBlcm1pc3Npb25zKSB7XG4gICAgYm9keS5wZXJtaXNzaW9ucyA9IHtcbiAgICAgIHJlYWQ6IG9wdGlvbnMucGVybWlzc2lvbnMucmVhZCAhPT0gZmFsc2UsXG4gICAgICB3cml0ZTogb3B0aW9ucy5wZXJtaXNzaW9ucy53cml0ZSA9PT0gdHJ1ZSxcbiAgICAgIGRlbGV0ZTogb3B0aW9ucy5wZXJtaXNzaW9ucy5kZWxldGUgPT09IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjb3BlVHlwZSkge1xuICAgIGJvZHkuc2NvcGVUeXBlID0gb3B0aW9ucy5zY29wZVR5cGU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5lbnZpcm9ubWVudCkge1xuICAgIGJvZHkuZW52aXJvbm1lbnQgPSBvcHRpb25zLmVudmlyb25tZW50O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzICYmIG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzLmxlbmd0aCA+IDApIHtcbiAgICBib2R5LmFsbG93ZWRBZ2VudElkcyA9IG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dlZElwcyAmJiBvcHRpb25zLmFsbG93ZWRJcHMubGVuZ3RoID4gMCkge1xuICAgIGJvZHkuYWxsb3dlZElwcyA9IG9wdGlvbnMuYWxsb3dlZElwcztcbiAgfVxuXG4gIGlmIChvcHRpb25zLmV4cGlyZXNBdCkge1xuICAgIGJvZHkuZXhwaXJlc0F0ID0gb3B0aW9ucy5leHBpcmVzQXQudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiBhcGlSZXF1ZXN0PENyZWF0ZUFwaUtleVJlc3VsdD4oJy9hcGkta2V5cycsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBib2R5LFxuICAgIGFwaVZlcnNpb246ICd2MScsXG4gIH0pO1xufVxuXG4vKipcbiAqIExpc3QgYWxsIEFQSSBrZXlzIGZvciB0aGUgYXV0aGVudGljYXRlZCBjb21wYW55XG4gKlxuICogQHJldHVybnMgQXJyYXkgb2YgQVBJIGtleXMgKHdpdGhvdXQgc2VjcmV0cylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qga2V5cyA9IGF3YWl0IGFwaUtleXMubGlzdCgpO1xuICogY29uc29sZS5sb2coYEZvdW5kICR7a2V5cy5sZW5ndGh9IEFQSSBrZXlzYCk7XG4gKlxuICogLy8gRmlsdGVyIGJ5IGVudmlyb25tZW50XG4gKiBjb25zdCBwcm9kS2V5cyA9IGtleXMuZmlsdGVyKGsgPT4gay5lbnZpcm9ubWVudCA9PT0gJ3Byb2R1Y3Rpb24nKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdCgpOiBQcm9taXNlPEFwaUtleVtdPiB7XG4gIHJldHVybiBhcGlSZXF1ZXN0PEFwaUtleVtdPignL2FwaS1rZXlzJywge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgfSk7XG59XG5cbi8qKlxuICogUmV2b2tlIChkZWFjdGl2YXRlKSBhbiBBUEkga2V5XG4gKlxuICogQHBhcmFtIGtleUlkIC0gSUQgb2YgdGhlIGtleSB0byByZXZva2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUmV2b2tlIGEgY29tcHJvbWlzZWQga2V5XG4gKiBhd2FpdCBhcGlLZXlzLnJldm9rZSgna2V5LWlkLXRvLXJldm9rZScpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZva2Uoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWtleUlkKSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignS2V5IElEIGlzIHJlcXVpcmVkJywgJ2tleUlkJyk7XG4gIH1cblxuICBhd2FpdCBhcGlSZXF1ZXN0KGAvYXBpLWtleXMvJHtrZXlJZH1gLCB7XG4gICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICBhcGlWZXJzaW9uOiAndjEnLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSb3RhdGUgYW4gQVBJIGtleSAocmV2b2tlIG9sZCwgY3JlYXRlIG5ldyB3aXRoIHNhbWUgY29uZmlnKVxuICpcbiAqIEBwYXJhbSBrZXlJZCAtIElEIG9mIHRoZSBrZXkgdG8gcm90YXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG92ZXJyaWRlcyBmb3IgdGhlIG5ldyBrZXlcbiAqIEByZXR1cm5zIE5ldyBrZXkgd2l0aCBzZWNyZXRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUm90YXRlIGEga2V5IHBlcmlvZGljYWxseVxuICogY29uc3QgZXhpc3RpbmdLZXlzID0gYXdhaXQgYXBpS2V5cy5saXN0KCk7XG4gKiBjb25zdCBvbGRLZXkgPSBleGlzdGluZ0tleXMuZmluZChrID0+IGsubmFtZSA9PT0gJ1Byb2R1Y3Rpb24gS2V5Jyk7XG4gKlxuICogaWYgKG9sZEtleSkge1xuICogICBjb25zdCBuZXdLZXkgPSBhd2FpdCBhcGlLZXlzLnJvdGF0ZShvbGRLZXkuaWQpO1xuICogICAvLyBVcGRhdGUgeW91ciBzeXN0ZW1zIHdpdGggbmV3S2V5LmtleVxuICogICBjb25zb2xlLmxvZygnTmV3IGtleTonLCBuZXdLZXkua2V5KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcm90YXRlKFxuICBrZXlJZDogc3RyaW5nLFxuICBvcHRpb25zPzogUGFydGlhbDxDcmVhdGVBcGlLZXlPcHRpb25zPlxuKTogUHJvbWlzZTxDcmVhdGVBcGlLZXlSZXN1bHQ+IHtcbiAgLy8gR2V0IGV4aXN0aW5nIGtleSBtZXRhZGF0YVxuICBjb25zdCBrZXlzID0gYXdhaXQgbGlzdCgpO1xuICBjb25zdCBleGlzdGluZ0tleSA9IGtleXMuZmluZChrID0+IGsuaWQgPT09IGtleUlkKTtcblxuICBpZiAoIWV4aXN0aW5nS2V5KSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignQVBJIGtleSBub3QgZm91bmQnLCAna2V5SWQnKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBuZXcga2V5IHdpdGggc2FtZSAob3Igb3ZlcnJpZGRlbikgY29uZmlnXG4gIGNvbnN0IG5ld0tleU9wdGlvbnM6IENyZWF0ZUFwaUtleU9wdGlvbnMgPSB7XG4gICAgbmFtZTogb3B0aW9ucz8ubmFtZSB8fCBleGlzdGluZ0tleS5uYW1lLFxuICAgIHNjb3BlVHlwZTogb3B0aW9ucz8uc2NvcGVUeXBlIHx8IGV4aXN0aW5nS2V5LnNjb3BlVHlwZSxcbiAgICBlbnZpcm9ubWVudDogb3B0aW9ucz8uZW52aXJvbm1lbnQgfHwgZXhpc3RpbmdLZXkuZW52aXJvbm1lbnQsXG4gICAgYWxsb3dlZEFnZW50SWRzOiBvcHRpb25zPy5hbGxvd2VkQWdlbnRJZHMgfHwgZXhpc3RpbmdLZXkuYWxsb3dlZEFnZW50SWRzIHx8IHVuZGVmaW5lZCxcbiAgICBhbGxvd2VkSXBzOiBvcHRpb25zPy5hbGxvd2VkSXBzIHx8IGV4aXN0aW5nS2V5LmFsbG93ZWRJcHMgfHwgdW5kZWZpbmVkLFxuICB9O1xuXG4gIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyBjb252ZXJzaW9uXG4gIGlmIChvcHRpb25zPy5wZXJtaXNzaW9ucykge1xuICAgIG5ld0tleU9wdGlvbnMucGVybWlzc2lvbnMgPSBvcHRpb25zLnBlcm1pc3Npb25zO1xuICB9IGVsc2UgaWYgKGV4aXN0aW5nS2V5LnBlcm1pc3Npb25zICYmIHR5cGVvZiBleGlzdGluZ0tleS5wZXJtaXNzaW9ucyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZXhpc3RpbmdLZXkucGVybWlzc2lvbnMpKSB7XG4gICAgbmV3S2V5T3B0aW9ucy5wZXJtaXNzaW9ucyA9IGV4aXN0aW5nS2V5LnBlcm1pc3Npb25zIGFzIEFwaUtleVBlcm1pc3Npb25zO1xuICB9XG5cbiAgLy8gQ3JlYXRlIG5ldyBrZXkgZmlyc3QgKHNvIHdlIGRvbid0IGxvc2UgYWNjZXNzIGlmIGNyZWF0aW9uIGZhaWxzKVxuICBjb25zdCBuZXdLZXkgPSBhd2FpdCBjcmVhdGUobmV3S2V5T3B0aW9ucyk7XG5cbiAgLy8gUmV2b2tlIG9sZCBrZXlcbiAgYXdhaXQgcmV2b2tlKGtleUlkKTtcblxuICByZXR1cm4gbmV3S2V5O1xufVxuXG4vKipcbiAqIFRlc3QgYW4gQVBJIGtleSBjb25uZWN0aW9uXG4gKlxuICogQHBhcmFtIGFwaUtleSAtIFRoZSBmdWxsIEFQSSBrZXkgdmFsdWUgdG8gdGVzdFxuICogQHBhcmFtIGFnZW50SWQgLSBPcHRpb25hbCBhZ2VudCBJRCB0byB0ZXN0IHdpdGhcbiAqIEByZXR1cm5zIFRlc3QgcmVzdWx0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUtleXMudGVzdCgndGhrXy4uLicsICdteS1hZ2VudC1pZCcpO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdLZXkgaXMgdmFsaWQhJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3QoXG4gIGFwaUtleTogc3RyaW5nLFxuICBhZ2VudElkPzogc3RyaW5nXG4pOiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmc7IHRlc3RUcmFjZUlkPzogc3RyaW5nIH0+IHtcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICB0aHJvdyBuZXcgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yKCdBUEkga2V5IGlzIHJlcXVpcmVkJywgJ2FwaUtleScpO1xuICB9XG5cbiAgcmV0dXJuIGFwaVJlcXVlc3Q8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgdGVzdFRyYWNlSWQ/OiBzdHJpbmcgfT4oJy9hcGkta2V5cy90ZXN0Jywge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHsgYXBpS2V5LCBhZ2VudElkLCBjcmVhdGVUZXN0VHJhY2U6ICEhYWdlbnRJZCB9LFxuICAgIGFwaVZlcnNpb246ICd2MScsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVdGlsaXR5IEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaGFzIGEgc3BlY2lmaWMgcGVybWlzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGVybWlzc2lvbihcbiAga2V5OiBBcGlLZXksXG4gIHBlcm1pc3Npb246ICdyZWFkJyB8ICd3cml0ZScgfCAnZGVsZXRlJ1xuKTogYm9vbGVhbiB7XG4gIC8vIEhhbmRsZSBvYmplY3QgZm9ybWF0XG4gIGlmICh0eXBlb2Yga2V5LnBlcm1pc3Npb25zID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShrZXkucGVybWlzc2lvbnMpKSB7XG4gICAgcmV0dXJuIGtleS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBsZWdhY3kgYXJyYXkgZm9ybWF0XG4gIGlmIChBcnJheS5pc0FycmF5KGtleS5wZXJtaXNzaW9ucykpIHtcbiAgICByZXR1cm4ga2V5LnBlcm1pc3Npb25zLnNvbWUocCA9PiBwLmVuZHNXaXRoKGA6JHtwZXJtaXNzaW9ufWApKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQ6IHJlYWQgYWxsb3dlZCwgd3JpdGUvZGVsZXRlIGRlbmllZFxuICByZXR1cm4gcGVybWlzc2lvbiA9PT0gJ3JlYWQnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaXMgZXhwaXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBpcmVkKGtleTogQXBpS2V5KTogYm9vbGVhbiB7XG4gIGlmICgha2V5LmV4cGlyZXNBdCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gbmV3IERhdGUoa2V5LmV4cGlyZXNBdCkgPCBuZXcgRGF0ZSgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaXMgdmFsaWQgKGFjdGl2ZSBhbmQgbm90IGV4cGlyZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKGtleTogQXBpS2V5KTogYm9vbGVhbiB7XG4gIHJldHVybiBrZXkuaXNBY3RpdmUgJiYgIWlzRXhwaXJlZChrZXkpO1xufVxuXG4vKipcbiAqIEdldCB0aW1lIHVudGlsIGtleSBleHBpcmVzIChpbiBtaWxsaXNlY29uZHMpXG4gKiBSZXR1cm5zIG51bGwgaWYga2V5IGRvZXNuJ3QgZXhwaXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lVW50aWxFeHBpcnkoa2V5OiBBcGlLZXkpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKCFrZXkuZXhwaXJlc0F0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgZXhwaXJ5ID0gbmV3IERhdGUoa2V5LmV4cGlyZXNBdCkuZ2V0VGltZSgpO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgZXhwaXJ5IC0gbm93KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGtleSBjYW4gYWNjZXNzIGEgc3BlY2lmaWMgYWdlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkFjY2Vzc0FnZW50KGtleTogQXBpS2V5LCBhZ2VudElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gSWYgbm8gYWdlbnQgcmVzdHJpY3Rpb25zLCBhbGxvdyBhbGxcbiAgaWYgKCFrZXkuYWxsb3dlZEFnZW50SWRzIHx8IGtleS5hbGxvd2VkQWdlbnRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGtleS5hbGxvd2VkQWdlbnRJZHMuaW5jbHVkZXMoYWdlbnRJZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEV4cG9ydCBuYW1lc3BhY2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGFwaUtleXMgPSB7XG4gIGNyZWF0ZSxcbiAgbGlzdCxcbiAgcmV2b2tlLFxuICByb3RhdGUsXG4gIHRlc3QsXG4gIGhhc1Blcm1pc3Npb24sXG4gIGlzRXhwaXJlZCxcbiAgaXNWYWxpZCxcbiAgZ2V0VGltZVVudGlsRXhwaXJ5LFxuICBjYW5BY2Nlc3NBZ2VudCxcbn07XG4iXX0=
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpS2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYXBpS2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRzs7O0FBNElILHdCQXVEQztBQWdCRCxvQkFLQztBQWFELHdCQVNDO0FBc0JELHdCQW1DQztBQWlCRCxvQkFhQztBQVNELHNDQWdCQztBQUtELDhCQUdDO0FBS0QsMEJBRUM7QUFNRCxnREFLQztBQUtELHdDQU1DO0FBallELDJDQUFzRTtBQW9IdEUsK0VBQStFO0FBQy9FLCtCQUErQjtBQUMvQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0ksS0FBSyxVQUFVLE1BQU0sQ0FBQyxPQUE0QjtJQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksaUNBQXdCLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixlQUFlO1FBQ2YsTUFBTSxTQUFTLEdBQUcsNkZBQTZGLENBQUM7UUFDaEgsNkVBQTZFO1FBQzdFLE1BQU0sU0FBUyxHQUFHLHVaQUF1WixDQUFDO1FBQzFhLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3JFLE1BQU0sSUFBSSxpQ0FBd0IsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLEVB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U0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQ3pELHNDQUFzQztJQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUVsRSxRQUFBLE9BQU8sR0FBRztJQUNyQixNQUFNO0lBQ04sSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0lBQ04sSUFBSTtJQUNKLGFBQWE7SUFDYixTQUFTO0lBQ1QsT0FBTztJQUNQLGtCQUFrQjtJQUNsQixjQUFjO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIEFQSSBLZXlzIE1hbmFnZW1lbnRcbiAqXG4gKiBDcmVhdGUgYW5kIG1hbmFnZSBzY29wZWQgQVBJIGtleXMgd2l0aDpcbiAqIC0gUGVybWlzc2lvbiBjb250cm9sIChyZWFkL3dyaXRlL2RlbGV0ZSlcbiAqIC0gQWdlbnQtbGV2ZWwgc2NvcGluZyAoYWxsb3dlZEFnZW50SWRzKVxuICogLSBFbnZpcm9ubWVudCBzZXBhcmF0aW9uIChwcm9kdWN0aW9uL3N0YWdpbmcvZGV2ZWxvcG1lbnQpXG4gKiAtIElQIHdoaXRlbGlzdGluZyAoYWxsb3dlZElwcylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgYXBpS2V5cyB9IGZyb20gJ3RoaW5raGl2ZS1qcyc7XG4gKlxuICogLy8gQ3JlYXRlIGEgcmVhZC1vbmx5IGtleSBmb3IgbW9uaXRvcmluZ1xuICogY29uc3QgcmVhZE9ubHlLZXkgPSBhd2FpdCBhcGlLZXlzLmNyZWF0ZSh7XG4gKiAgIG5hbWU6ICdNb25pdG9yaW5nIEtleScsXG4gKiAgIHNjb3BlVHlwZTogJ3JlYWRvbmx5J1xuICogfSk7XG4gKlxuICogLy8gQ3JlYXRlIGEga2V5IHNjb3BlZCB0byBzcGVjaWZpYyBhZ2VudHNcbiAqIGNvbnN0IGFnZW50S2V5ID0gYXdhaXQgYXBpS2V5cy5jcmVhdGUoe1xuICogICBuYW1lOiAnQWdlbnQgQSBLZXknLFxuICogICBhbGxvd2VkQWdlbnRJZHM6IFsnYWdlbnQtYS1pZCcsICdhZ2VudC1iLWlkJ10sXG4gKiAgIHBlcm1pc3Npb25zOiB7IHJlYWQ6IHRydWUsIHdyaXRlOiB0cnVlLCBkZWxldGU6IGZhbHNlIH1cbiAqIH0pO1xuICpcbiAqIC8vIENyZWF0ZSBhIHN0YWdpbmcgZW52aXJvbm1lbnQga2V5XG4gKiBjb25zdCBzdGFnaW5nS2V5ID0gYXdhaXQgYXBpS2V5cy5jcmVhdGUoe1xuICogICBuYW1lOiAnU3RhZ2luZyBLZXknLFxuICogICBlbnZpcm9ubWVudDogJ3N0YWdpbmcnLFxuICogICBhbGxvd2VkSXBzOiBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11cbiAqIH0pO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBrZXkgcGVybWlzc2lvbiBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5UGVybWlzc2lvbnMge1xuICAvKiogQWxsb3cgcmVhZCBvcGVyYXRpb25zIChHRVQgcmVxdWVzdHMsIGxpc3RpbmcsIGV0Yy4pICovXG4gIHJlYWQ6IGJvb2xlYW47XG4gIC8qKiBBbGxvdyB3cml0ZSBvcGVyYXRpb25zIChQT1NULCBQVVQgcmVxdWVzdHMpICovXG4gIHdyaXRlOiBib29sZWFuO1xuICAvKiogQWxsb3cgZGVsZXRlIG9wZXJhdGlvbnMgKERFTEVURSByZXF1ZXN0cykgKi9cbiAgZGVsZXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFQSSBrZXkgc2NvcGUgdHlwZVxuICogLSBgY29tcGFueWA6IEZ1bGwgYWNjZXNzIHRvIGFsbCBjb21wYW55IGRhdGFcbiAqIC0gYGFnZW50YDogTGltaXRlZCB0byBzcGVjaWZpYyBhZ2VudHMgKHJlcXVpcmVzIGFsbG93ZWRBZ2VudElkcylcbiAqIC0gYHJlYWRvbmx5YDogUmVhZC1vbmx5IGFjY2VzcyByZWdhcmRsZXNzIG9mIG90aGVyIHNldHRpbmdzXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlVHlwZSA9ICdjb21wYW55JyB8ICdhZ2VudCcgfCAncmVhZG9ubHknO1xuXG4vKipcbiAqIEFQSSBrZXkgZW52aXJvbm1lbnRcbiAqIC0gYHByb2R1Y3Rpb25gOiBGb3IgcHJvZHVjdGlvbiBzeXN0ZW1zXG4gKiAtIGBzdGFnaW5nYDogRm9yIHN0YWdpbmcvcHJlLXByb2R1Y3Rpb25cbiAqIC0gYGRldmVsb3BtZW50YDogRm9yIGxvY2FsIGRldmVsb3BtZW50XG4gKi9cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0gJ3Byb2R1Y3Rpb24nIHwgJ3N0YWdpbmcnIHwgJ2RldmVsb3BtZW50JztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBBUEkga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXBpS2V5T3B0aW9ucyB7XG4gIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBrZXkgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBQZXJtaXNzaW9uIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHRzIHRvIHJlYWQrd3JpdGUpICovXG4gIHBlcm1pc3Npb25zPzogUGFydGlhbDxBcGlLZXlQZXJtaXNzaW9ucz47XG5cbiAgLyoqXG4gICAqIFJlc3RyaWN0IGtleSB0byBzcGVjaWZpYyBhZ2VudCBJRHNcbiAgICogV2hlbiBzZXQsIGtleSBjYW4gb25seSBhY2Nlc3MgdHJhY2VzIGZvciB0aGVzZSBhZ2VudHNcbiAgICovXG4gIGFsbG93ZWRBZ2VudElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTY29wZSB0eXBlIGZvciB0aGUga2V5XG4gICAqIEBkZWZhdWx0ICdjb21wYW55JyBvciAnYWdlbnQnIGlmIGFsbG93ZWRBZ2VudElkcyBpcyBzZXRcbiAgICovXG4gIHNjb3BlVHlwZT86IFNjb3BlVHlwZTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgZm9yIHRoZSBrZXlcbiAgICogQGRlZmF1bHQgJ3Byb2R1Y3Rpb24nXG4gICAqL1xuICBlbnZpcm9ubWVudD86IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBSZXN0cmljdCBrZXkgdG8gc3BlY2lmaWMgSVAgYWRkcmVzc2VzXG4gICAqIFdoZW4gc2V0LCBvbmx5IHJlcXVlc3RzIGZyb20gdGhlc2UgSVBzIGNhbiB1c2UgdGhpcyBrZXlcbiAgICovXG4gIGFsbG93ZWRJcHM/OiBzdHJpbmdbXTtcblxuICAvKiogRXhwaXJhdGlvbiBkYXRlIGZvciB0aGUga2V5ICovXG4gIGV4cGlyZXNBdD86IERhdGU7XG59XG5cbi8qKlxuICogQVBJIGtleSBtZXRhZGF0YSAocmV0dXJuZWQgZnJvbSBzZXJ2ZXIpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5IHtcbiAgLyoqIFVuaXF1ZSBrZXkgSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBLZXkgcHJlZml4IChmaXJzdCA4IGNoYXJzIGZvciBpZGVudGlmaWNhdGlvbikgKi9cbiAga2V5UHJlZml4OiBzdHJpbmc7XG4gIC8qKiBQZXJtaXNzaW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgcGVybWlzc2lvbnM6IEFwaUtleVBlcm1pc3Npb25zIHwgc3RyaW5nW107XG4gIC8qKiBTY29wZSB0eXBlICovXG4gIHNjb3BlVHlwZTogU2NvcGVUeXBlO1xuICAvKiogRW52aXJvbm1lbnQgKi9cbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICAvKiogQWxsb3dlZCBhZ2VudCBJRHMgKG51bGwgPSBhbGwgYWdlbnRzKSAqL1xuICBhbGxvd2VkQWdlbnRJZHM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgLyoqIEFsbG93ZWQgSVAgYWRkcmVzc2VzIChudWxsID0gYWxsIElQcykgKi9cbiAgYWxsb3dlZElwczogc3RyaW5nW10gfCBudWxsO1xuICAvKiogV2hldGhlciBrZXkgaXMgYWN0aXZlICovXG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICAvKiogTGFzdCB1c2FnZSB0aW1lc3RhbXAgKi9cbiAgbGFzdFVzZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRvdGFsIHVzYWdlIGNvdW50ICovXG4gIHVzYWdlQ291bnQ6IG51bWJlcjtcbiAgLyoqIEV4cGlyYXRpb24gZGF0ZSAqL1xuICBleHBpcmVzQXQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBDcmVhdGlvbiB0aW1lc3RhbXAgKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNyZWF0aW5nIGFuIEFQSSBrZXkgKGluY2x1ZGVzIHNlY3JldClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcGlLZXlSZXN1bHQgZXh0ZW5kcyBBcGlLZXkge1xuICAvKipcbiAgICogVGhlIGZ1bGwgQVBJIGtleSB2YWx1ZVxuICAgKiBJTVBPUlRBTlQ6IFRoaXMgaXMgb25seSByZXR1cm5lZCBvbmNlIGFuZCBjYW5ub3QgYmUgcmV0cmlldmVkIGxhdGVyIVxuICAgKiBTdG9yZSBpdCBzZWN1cmVseS5cbiAgICovXG4gIGtleTogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUEkgS2V5IE1hbmFnZW1lbnQgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IEFQSSBrZXkgd2l0aCBzcGVjaWZpZWQgcGVybWlzc2lvbnMgYW5kIHNjb3BpbmdcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFQSSBrZXkgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQ3JlYXRlZCBrZXkgd2l0aCBzZWNyZXQgKG9ubHkgcmV0dXJuZWQgb25jZSEpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHByb2R1Y3Rpb24gd3JpdGUga2V5XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlLZXlzLmNyZWF0ZSh7XG4gKiAgIG5hbWU6ICdQcm9kdWN0aW9uIFNESyBLZXknLFxuICogICBwZXJtaXNzaW9uczogeyByZWFkOiB0cnVlLCB3cml0ZTogdHJ1ZSwgZGVsZXRlOiBmYWxzZSB9XG4gKiB9KTtcbiAqXG4gKiAvLyBTYXZlIHRoZSBrZXkgc2VjdXJlbHkgLSBpdCB3b24ndCBiZSBzaG93biBhZ2FpbiFcbiAqIGNvbnNvbGUubG9nKCdTYXZlIHRoaXMga2V5OicsIHJlc3VsdC5rZXkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGUob3B0aW9uczogQ3JlYXRlQXBpS2V5T3B0aW9ucyk6IFByb21pc2U8Q3JlYXRlQXBpS2V5UmVzdWx0PiB7XG4gIGlmICghb3B0aW9ucy5uYW1lIHx8IG9wdGlvbnMubmFtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignQVBJIGtleSBuYW1lIGlzIHJlcXVpcmVkJywgJ25hbWUnKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIElQIGFkZHJlc3NlcyBpZiBwcm92aWRlZFxuICBpZiAob3B0aW9ucy5hbGxvd2VkSXBzKSB7XG4gICAgLy8gSVB2NCBwYXR0ZXJuXG4gICAgY29uc3QgaXB2NFJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykkLztcbiAgICAvLyBJUHY2IHBhdHRlcm4gKHN1cHBvcnRzIGZ1bGwgYW5kIGNvbXByZXNzZWQgbm90YXRpb24gbGlrZSA6OjEsIDIwMDE6ZGI4OjoxKVxuICAgIGNvbnN0IGlwdjZSZWdleCA9IC9eKD86KD86WzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KD86WzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fCg/OlswLTlhLWZBLUZdezEsNH06KXsxLDR9KD86OlswLTlhLWZBLUZdezEsNH0pezEsM318KD86WzAtOWEtZkEtRl17MSw0fTopezEsM30oPzo6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoPzpbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KD86OlswLTlhLWZBLUZdezEsNH0pezEsNn18Oig/OjpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDo6KSQvO1xuICAgIGZvciAoY29uc3QgaXAgb2Ygb3B0aW9ucy5hbGxvd2VkSXBzKSB7XG4gICAgICBpZiAoIWlwdjRSZWdleC50ZXN0KGlwKSAmJiAhaXB2NlJlZ2V4LnRlc3QoaXApICYmIGlwICE9PSAnbG9jYWxob3N0Jykge1xuICAgICAgICB0aHJvdyBuZXcgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yKGBJbnZhbGlkIElQIGFkZHJlc3M6ICR7aXB9YCwgJ2FsbG93ZWRJcHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBuYW1lOiBvcHRpb25zLm5hbWUudHJpbSgpLFxuICB9O1xuXG4gIGlmIChvcHRpb25zLnBlcm1pc3Npb25zKSB7XG4gICAgYm9keS5wZXJtaXNzaW9ucyA9IHtcbiAgICAgIHJlYWQ6IG9wdGlvbnMucGVybWlzc2lvbnMucmVhZCAhPT0gZmFsc2UsXG4gICAgICB3cml0ZTogb3B0aW9ucy5wZXJtaXNzaW9ucy53cml0ZSA9PT0gdHJ1ZSxcbiAgICAgIGRlbGV0ZTogb3B0aW9ucy5wZXJtaXNzaW9ucy5kZWxldGUgPT09IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjb3BlVHlwZSkge1xuICAgIGJvZHkuc2NvcGVUeXBlID0gb3B0aW9ucy5zY29wZVR5cGU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5lbnZpcm9ubWVudCkge1xuICAgIGJvZHkuZW52aXJvbm1lbnQgPSBvcHRpb25zLmVudmlyb25tZW50O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzICYmIG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzLmxlbmd0aCA+IDApIHtcbiAgICBib2R5LmFsbG93ZWRBZ2VudElkcyA9IG9wdGlvbnMuYWxsb3dlZEFnZW50SWRzO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dlZElwcyAmJiBvcHRpb25zLmFsbG93ZWRJcHMubGVuZ3RoID4gMCkge1xuICAgIGJvZHkuYWxsb3dlZElwcyA9IG9wdGlvbnMuYWxsb3dlZElwcztcbiAgfVxuXG4gIGlmIChvcHRpb25zLmV4cGlyZXNBdCkge1xuICAgIGJvZHkuZXhwaXJlc0F0ID0gb3B0aW9ucy5leHBpcmVzQXQudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiBhcGlSZXF1ZXN0PENyZWF0ZUFwaUtleVJlc3VsdD4oJy9hcGkta2V5cycsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBib2R5LFxuICAgIGFwaVZlcnNpb246ICd2MicsXG4gIH0pO1xufVxuXG4vKipcbiAqIExpc3QgYWxsIEFQSSBrZXlzIGZvciB0aGUgYXV0aGVudGljYXRlZCBjb21wYW55XG4gKlxuICogQHJldHVybnMgQXJyYXkgb2YgQVBJIGtleXMgKHdpdGhvdXQgc2VjcmV0cylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qga2V5cyA9IGF3YWl0IGFwaUtleXMubGlzdCgpO1xuICogY29uc29sZS5sb2coYEZvdW5kICR7a2V5cy5sZW5ndGh9IEFQSSBrZXlzYCk7XG4gKlxuICogLy8gRmlsdGVyIGJ5IGVudmlyb25tZW50XG4gKiBjb25zdCBwcm9kS2V5cyA9IGtleXMuZmlsdGVyKGsgPT4gay5lbnZpcm9ubWVudCA9PT0gJ3Byb2R1Y3Rpb24nKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdCgpOiBQcm9taXNlPEFwaUtleVtdPiB7XG4gIHJldHVybiBhcGlSZXF1ZXN0PEFwaUtleVtdPignL2FwaS1rZXlzJywge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgfSk7XG59XG5cbi8qKlxuICogUmV2b2tlIChkZWFjdGl2YXRlKSBhbiBBUEkga2V5XG4gKlxuICogQHBhcmFtIGtleUlkIC0gSUQgb2YgdGhlIGtleSB0byByZXZva2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUmV2b2tlIGEgY29tcHJvbWlzZWQga2V5XG4gKiBhd2FpdCBhcGlLZXlzLnJldm9rZSgna2V5LWlkLXRvLXJldm9rZScpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZva2Uoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWtleUlkKSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignS2V5IElEIGlzIHJlcXVpcmVkJywgJ2tleUlkJyk7XG4gIH1cblxuICBhd2FpdCBhcGlSZXF1ZXN0KGAvYXBpLWtleXMvJHtrZXlJZH1gLCB7XG4gICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICBhcGlWZXJzaW9uOiAndjInLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSb3RhdGUgYW4gQVBJIGtleSAocmV2b2tlIG9sZCwgY3JlYXRlIG5ldyB3aXRoIHNhbWUgY29uZmlnKVxuICpcbiAqIEBwYXJhbSBrZXlJZCAtIElEIG9mIHRoZSBrZXkgdG8gcm90YXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG92ZXJyaWRlcyBmb3IgdGhlIG5ldyBrZXlcbiAqIEByZXR1cm5zIE5ldyBrZXkgd2l0aCBzZWNyZXRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUm90YXRlIGEga2V5IHBlcmlvZGljYWxseVxuICogY29uc3QgZXhpc3RpbmdLZXlzID0gYXdhaXQgYXBpS2V5cy5saXN0KCk7XG4gKiBjb25zdCBvbGRLZXkgPSBleGlzdGluZ0tleXMuZmluZChrID0+IGsubmFtZSA9PT0gJ1Byb2R1Y3Rpb24gS2V5Jyk7XG4gKlxuICogaWYgKG9sZEtleSkge1xuICogICBjb25zdCBuZXdLZXkgPSBhd2FpdCBhcGlLZXlzLnJvdGF0ZShvbGRLZXkuaWQpO1xuICogICAvLyBVcGRhdGUgeW91ciBzeXN0ZW1zIHdpdGggbmV3S2V5LmtleVxuICogICBjb25zb2xlLmxvZygnTmV3IGtleTonLCBuZXdLZXkua2V5KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcm90YXRlKFxuICBrZXlJZDogc3RyaW5nLFxuICBvcHRpb25zPzogUGFydGlhbDxDcmVhdGVBcGlLZXlPcHRpb25zPlxuKTogUHJvbWlzZTxDcmVhdGVBcGlLZXlSZXN1bHQ+IHtcbiAgLy8gR2V0IGV4aXN0aW5nIGtleSBtZXRhZGF0YVxuICBjb25zdCBrZXlzID0gYXdhaXQgbGlzdCgpO1xuICBjb25zdCBleGlzdGluZ0tleSA9IGtleXMuZmluZChrID0+IGsuaWQgPT09IGtleUlkKTtcblxuICBpZiAoIWV4aXN0aW5nS2V5KSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcignQVBJIGtleSBub3QgZm91bmQnLCAna2V5SWQnKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBuZXcga2V5IHdpdGggc2FtZSAob3Igb3ZlcnJpZGRlbikgY29uZmlnXG4gIGNvbnN0IG5ld0tleU9wdGlvbnM6IENyZWF0ZUFwaUtleU9wdGlvbnMgPSB7XG4gICAgbmFtZTogb3B0aW9ucz8ubmFtZSB8fCBleGlzdGluZ0tleS5uYW1lLFxuICAgIHNjb3BlVHlwZTogb3B0aW9ucz8uc2NvcGVUeXBlIHx8IGV4aXN0aW5nS2V5LnNjb3BlVHlwZSxcbiAgICBlbnZpcm9ubWVudDogb3B0aW9ucz8uZW52aXJvbm1lbnQgfHwgZXhpc3RpbmdLZXkuZW52aXJvbm1lbnQsXG4gICAgYWxsb3dlZEFnZW50SWRzOiBvcHRpb25zPy5hbGxvd2VkQWdlbnRJZHMgfHwgZXhpc3RpbmdLZXkuYWxsb3dlZEFnZW50SWRzIHx8IHVuZGVmaW5lZCxcbiAgICBhbGxvd2VkSXBzOiBvcHRpb25zPy5hbGxvd2VkSXBzIHx8IGV4aXN0aW5nS2V5LmFsbG93ZWRJcHMgfHwgdW5kZWZpbmVkLFxuICB9O1xuXG4gIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyBjb252ZXJzaW9uXG4gIGlmIChvcHRpb25zPy5wZXJtaXNzaW9ucykge1xuICAgIG5ld0tleU9wdGlvbnMucGVybWlzc2lvbnMgPSBvcHRpb25zLnBlcm1pc3Npb25zO1xuICB9IGVsc2UgaWYgKGV4aXN0aW5nS2V5LnBlcm1pc3Npb25zICYmIHR5cGVvZiBleGlzdGluZ0tleS5wZXJtaXNzaW9ucyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZXhpc3RpbmdLZXkucGVybWlzc2lvbnMpKSB7XG4gICAgbmV3S2V5T3B0aW9ucy5wZXJtaXNzaW9ucyA9IGV4aXN0aW5nS2V5LnBlcm1pc3Npb25zIGFzIEFwaUtleVBlcm1pc3Npb25zO1xuICB9XG5cbiAgLy8gQ3JlYXRlIG5ldyBrZXkgZmlyc3QgKHNvIHdlIGRvbid0IGxvc2UgYWNjZXNzIGlmIGNyZWF0aW9uIGZhaWxzKVxuICBjb25zdCBuZXdLZXkgPSBhd2FpdCBjcmVhdGUobmV3S2V5T3B0aW9ucyk7XG5cbiAgLy8gUmV2b2tlIG9sZCBrZXlcbiAgYXdhaXQgcmV2b2tlKGtleUlkKTtcblxuICByZXR1cm4gbmV3S2V5O1xufVxuXG4vKipcbiAqIFRlc3QgYW4gQVBJIGtleSBjb25uZWN0aW9uXG4gKlxuICogQHBhcmFtIGFwaUtleSAtIFRoZSBmdWxsIEFQSSBrZXkgdmFsdWUgdG8gdGVzdFxuICogQHBhcmFtIGFnZW50SWQgLSBPcHRpb25hbCBhZ2VudCBJRCB0byB0ZXN0IHdpdGhcbiAqIEByZXR1cm5zIFRlc3QgcmVzdWx0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUtleXMudGVzdCgndGhrXy4uLicsICdteS1hZ2VudC1pZCcpO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdLZXkgaXMgdmFsaWQhJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3QoXG4gIGFwaUtleTogc3RyaW5nLFxuICBhZ2VudElkPzogc3RyaW5nXG4pOiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmc7IHRlc3RUcmFjZUlkPzogc3RyaW5nIH0+IHtcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICB0aHJvdyBuZXcgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yKCdBUEkga2V5IGlzIHJlcXVpcmVkJywgJ2FwaUtleScpO1xuICB9XG5cbiAgcmV0dXJuIGFwaVJlcXVlc3Q8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgdGVzdFRyYWNlSWQ/OiBzdHJpbmcgfT4oJy9hcGkta2V5cy90ZXN0Jywge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHsgYXBpS2V5LCBhZ2VudElkLCBjcmVhdGVUZXN0VHJhY2U6ICEhYWdlbnRJZCB9LFxuICAgIGFwaVZlcnNpb246ICd2MicsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVdGlsaXR5IEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaGFzIGEgc3BlY2lmaWMgcGVybWlzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGVybWlzc2lvbihcbiAga2V5OiBBcGlLZXksXG4gIHBlcm1pc3Npb246ICdyZWFkJyB8ICd3cml0ZScgfCAnZGVsZXRlJ1xuKTogYm9vbGVhbiB7XG4gIC8vIEhhbmRsZSBvYmplY3QgZm9ybWF0XG4gIGlmICh0eXBlb2Yga2V5LnBlcm1pc3Npb25zID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShrZXkucGVybWlzc2lvbnMpKSB7XG4gICAgcmV0dXJuIGtleS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBsZWdhY3kgYXJyYXkgZm9ybWF0XG4gIGlmIChBcnJheS5pc0FycmF5KGtleS5wZXJtaXNzaW9ucykpIHtcbiAgICByZXR1cm4ga2V5LnBlcm1pc3Npb25zLnNvbWUocCA9PiBwLmVuZHNXaXRoKGA6JHtwZXJtaXNzaW9ufWApKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQ6IHJlYWQgYWxsb3dlZCwgd3JpdGUvZGVsZXRlIGRlbmllZFxuICByZXR1cm4gcGVybWlzc2lvbiA9PT0gJ3JlYWQnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaXMgZXhwaXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBpcmVkKGtleTogQXBpS2V5KTogYm9vbGVhbiB7XG4gIGlmICgha2V5LmV4cGlyZXNBdCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gbmV3IERhdGUoa2V5LmV4cGlyZXNBdCkgPCBuZXcgRGF0ZSgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIEFQSSBrZXkgaXMgdmFsaWQgKGFjdGl2ZSBhbmQgbm90IGV4cGlyZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKGtleTogQXBpS2V5KTogYm9vbGVhbiB7XG4gIHJldHVybiBrZXkuaXNBY3RpdmUgJiYgIWlzRXhwaXJlZChrZXkpO1xufVxuXG4vKipcbiAqIEdldCB0aW1lIHVudGlsIGtleSBleHBpcmVzIChpbiBtaWxsaXNlY29uZHMpXG4gKiBSZXR1cm5zIG51bGwgaWYga2V5IGRvZXNuJ3QgZXhwaXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lVW50aWxFeHBpcnkoa2V5OiBBcGlLZXkpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKCFrZXkuZXhwaXJlc0F0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgZXhwaXJ5ID0gbmV3IERhdGUoa2V5LmV4cGlyZXNBdCkuZ2V0VGltZSgpO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgZXhwaXJ5IC0gbm93KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGtleSBjYW4gYWNjZXNzIGEgc3BlY2lmaWMgYWdlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkFjY2Vzc0FnZW50KGtleTogQXBpS2V5LCBhZ2VudElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gSWYgbm8gYWdlbnQgcmVzdHJpY3Rpb25zLCBhbGxvdyBhbGxcbiAgaWYgKCFrZXkuYWxsb3dlZEFnZW50SWRzIHx8IGtleS5hbGxvd2VkQWdlbnRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGtleS5hbGxvd2VkQWdlbnRJZHMuaW5jbHVkZXMoYWdlbnRJZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEV4cG9ydCBuYW1lc3BhY2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGFwaUtleXMgPSB7XG4gIGNyZWF0ZSxcbiAgbGlzdCxcbiAgcmV2b2tlLFxuICByb3RhdGUsXG4gIHRlc3QsXG4gIGhhc1Blcm1pc3Npb24sXG4gIGlzRXhwaXJlZCxcbiAgaXNWYWxpZCxcbiAgZ2V0VGltZVVudGlsRXhwaXJ5LFxuICBjYW5BY2Nlc3NBZ2VudCxcbn07XG4iXX0=
@@ -4,23 +4,6 @@
4
4
  * Prediction accuracy tracking with Brier scores and calibration metrics
5
5
  */
6
6
  import type { CalibrationStatus, CalibrationBucket, PredictionType } from '../core/types';
7
- /**
8
- * Record outcome input
9
- */
10
- export interface RecordOutcomeInput {
11
- /** Run ID the prediction was made for */
12
- runId: string;
13
- /** Type of prediction */
14
- predictionType: PredictionType;
15
- /** The predicted value (0-1 for probabilities) */
16
- predictedValue: number;
17
- /** The actual outcome (0 or 1 for binary, or actual value) */
18
- actualOutcome: number;
19
- /** When the prediction was made */
20
- predictedAt?: string;
21
- /** When the outcome was observed */
22
- observedAt?: string;
23
- }
24
7
  /**
25
8
  * Calibration metrics
26
9
  */
@@ -69,33 +52,6 @@ export declare const calibration: {
69
52
  * ```
70
53
  */
71
54
  allMetrics(agentId: string): Promise<CalibrationMetrics[]>;
72
- /**
73
- * Record a prediction outcome for calibration tracking
74
- *
75
- * @example
76
- * ```typescript
77
- * // Record a churn prediction outcome
78
- * await calibration.recordOutcome({
79
- * runId: 'run_abc123',
80
- * predictionType: 'churn_risk',
81
- * predictedValue: 0.7, // We predicted 70% churn risk
82
- * actualOutcome: 1, // Customer did churn
83
- * });
84
- *
85
- * // Record a resolution time prediction
86
- * await calibration.recordOutcome({
87
- * runId: 'run_abc123',
88
- * predictionType: 'resolution_time',
89
- * predictedValue: 15, // Predicted 15 minutes
90
- * actualOutcome: 22, // Actual was 22 minutes
91
- * });
92
- * ```
93
- */
94
- recordOutcome(input: RecordOutcomeInput): Promise<{
95
- recorded: boolean;
96
- brierContribution: number;
97
- message: string;
98
- }>;
99
55
  /**
100
56
  * Trigger recalibration for an agent
101
57
  *
@@ -119,24 +75,6 @@ export declare const calibration: {
119
75
  }>;
120
76
  newMetrics: CalibrationMetrics[];
121
77
  }>;
122
- /**
123
- * Get reliability diagram data for visualization
124
- *
125
- * @example
126
- * ```typescript
127
- * const diagram = await calibration.reliabilityDiagram('agent_123', 'outcome');
128
- * // Use diagram.buckets to plot predicted vs actual probabilities
129
- * ```
130
- */
131
- reliabilityDiagram(agentId: string, predictionType: PredictionType): Promise<{
132
- agentId: string;
133
- predictionType: PredictionType;
134
- buckets: CalibrationBucket[];
135
- perfectCalibrationLine: Array<{
136
- x: number;
137
- y: number;
138
- }>;
139
- }>;
140
78
  };
141
79
  /**
142
80
  * Calculate Brier score from predictions and outcomes
@@ -27,7 +27,7 @@ exports.calibration = {
27
27
  * ```
28
28
  */
29
29
  async status(agentId, predictionType) {
30
- return (0, client_1.apiRequestWithData)(`/calibration/status/${agentId}?predictionType=${predictionType}`);
30
+ return (0, client_1.apiRequestWithData)(`/calibration/${agentId}/status?predictionType=${predictionType}`, { apiVersion: 'v3' });
31
31
  },
32
32
  /**
33
33
  * Get all calibration metrics for an agent
@@ -41,39 +41,7 @@ exports.calibration = {
41
41
  * ```
42
42
  */
43
43
  async allMetrics(agentId) {
44
- return (0, client_1.apiRequestWithData)(`/calibration/metrics/${agentId}`);
45
- },
46
- /**
47
- * Record a prediction outcome for calibration tracking
48
- *
49
- * @example
50
- * ```typescript
51
- * // Record a churn prediction outcome
52
- * await calibration.recordOutcome({
53
- * runId: 'run_abc123',
54
- * predictionType: 'churn_risk',
55
- * predictedValue: 0.7, // We predicted 70% churn risk
56
- * actualOutcome: 1, // Customer did churn
57
- * });
58
- *
59
- * // Record a resolution time prediction
60
- * await calibration.recordOutcome({
61
- * runId: 'run_abc123',
62
- * predictionType: 'resolution_time',
63
- * predictedValue: 15, // Predicted 15 minutes
64
- * actualOutcome: 22, // Actual was 22 minutes
65
- * });
66
- * ```
67
- */
68
- async recordOutcome(input) {
69
- return (0, client_1.apiRequestWithData)('/calibration/record', {
70
- method: 'POST',
71
- body: {
72
- ...input,
73
- predictedAt: input.predictedAt || new Date().toISOString(),
74
- observedAt: input.observedAt || new Date().toISOString(),
75
- },
76
- });
44
+ return (0, client_1.apiRequestWithData)(`/calibration/${agentId}/metrics`, { apiVersion: 'v3' });
77
45
  },
78
46
  /**
79
47
  * Trigger recalibration for an agent
@@ -87,23 +55,12 @@ exports.calibration = {
87
55
  * ```
88
56
  */
89
57
  async retrain(agentId, options = {}) {
90
- return (0, client_1.apiRequestWithData)(`/calibration/retrain/${agentId}`, {
58
+ return (0, client_1.apiRequestWithData)(`/calibration/${agentId}/retrain`, {
91
59
  method: 'POST',
92
60
  body: options,
61
+ apiVersion: 'v3',
93
62
  });
94
63
  },
95
- /**
96
- * Get reliability diagram data for visualization
97
- *
98
- * @example
99
- * ```typescript
100
- * const diagram = await calibration.reliabilityDiagram('agent_123', 'outcome');
101
- * // Use diagram.buckets to plot predicted vs actual probabilities
102
- * ```
103
- */
104
- async reliabilityDiagram(agentId, predictionType) {
105
- return (0, client_1.apiRequestWithData)(`/calibration/diagram/${agentId}?predictionType=${predictionType}`);
106
- },
107
64
  };
108
65
  // ============================================================================
109
66
  // HELPER FUNCTIONS
@@ -173,4 +130,4 @@ function getCalibrationQuality(brierScore) {
173
130
  function formatBrierScore(score) {
174
131
  return score.toFixed(4);
175
132
  }
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NhbGlicmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFnTUgsa0RBVUM7QUFNRCxvQ0FvQ0M7QUFLRCw0Q0FFQztBQUtELHNEQU9DO0FBS0QsNENBRUM7QUE1UUQsMkNBQWdFO0FBb0RoRTs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHO0lBQ3pCOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsT0FBZSxFQUNmLGNBQThCO1FBRTlCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsdUJBQXVCLE9BQU8sbUJBQW1CLGNBQWMsRUFBRSxDQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQWU7UUFDOUIsT0FBTyxJQUFBLDJCQUFrQixFQUN2Qix3QkFBd0IsT0FBTyxFQUFFLENBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBeUI7UUFLM0MsT0FBTyxJQUFBLDJCQUFrQixFQUFDLHFCQUFxQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLEdBQUcsS0FBSztnQkFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDMUQsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDekQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQ1gsT0FBZSxFQUNmLFVBR0ksRUFBRTtRQU9OLE9BQU8sSUFBQSwyQkFBa0IsRUFB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LEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0I7SUFDakQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQzFCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxVQUFrQjtJQUVsQixJQUFJLFVBQVUsR0FBRyxJQUFJO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDMUMsSUFBSSxVQUFVLEdBQUcsR0FBRztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUFHLEdBQUc7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNwQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFhO0lBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDYWxpYnJhdGlvbiBBUElcbiAqXG4gKiBQcmVkaWN0aW9uIGFjY3VyYWN5IHRyYWNraW5nIHdpdGggQnJpZXIgc2NvcmVzIGFuZCBjYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBDYWxpYnJhdGlvblN0YXR1cyxcbiAgQ2FsaWJyYXRpb25CdWNrZXQsXG4gIFByZWRpY3Rpb25UeXBlLFxuICBBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBTElCUkFUSU9OIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZWNvcmQgb3V0Y29tZSBpbnB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZE91dGNvbWVJbnB1dCB7XG4gIC8qKiBSdW4gSUQgdGhlIHByZWRpY3Rpb24gd2FzIG1hZGUgZm9yICovXG4gIHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBUeXBlIG9mIHByZWRpY3Rpb24gKi9cbiAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlO1xuICAvKiogVGhlIHByZWRpY3RlZCB2YWx1ZSAoMC0xIGZvciBwcm9iYWJpbGl0aWVzKSAqL1xuICBwcmVkaWN0ZWRWYWx1ZTogbnVtYmVyO1xuICAvKiogVGhlIGFjdHVhbCBvdXRjb21lICgwIG9yIDEgZm9yIGJpbmFyeSwgb3IgYWN0dWFsIHZhbHVlKSAqL1xuICBhY3R1YWxPdXRjb21lOiBudW1iZXI7XG4gIC8qKiBXaGVuIHRoZSBwcmVkaWN0aW9uIHdhcyBtYWRlICovXG4gIHByZWRpY3RlZEF0Pzogc3RyaW5nO1xuICAvKiogV2hlbiB0aGUgb3V0Y29tZSB3YXMgb2JzZXJ2ZWQgKi9cbiAgb2JzZXJ2ZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsaWJyYXRpb25NZXRyaWNzIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBwcmVkaWN0aW9uVHlwZTogUHJlZGljdGlvblR5cGU7XG4gIC8qKiBCcmllciBzY29yZSAobG93ZXIgaXMgYmV0dGVyLCA8MC4xIGlzIGdvb2QpICovXG4gIGJyaWVyU2NvcmU6IG51bWJlcjtcbiAgLyoqIEV4cGVjdGVkIENhbGlicmF0aW9uIEVycm9yICovXG4gIGVjZTogbnVtYmVyO1xuICAvKiogTWF4aW11bSBDYWxpYnJhdGlvbiBFcnJvciAqL1xuICBtY2U6IG51bWJlcjtcbiAgLyoqIFNhbXBsZSBjb3VudCAqL1xuICBzYW1wbGVDb3VudDogbnVtYmVyO1xuICAvKiogSXMgdGhlIG1vZGVsIHdlbGwtY2FsaWJyYXRlZCAqL1xuICBpc0NhbGlicmF0ZWQ6IGJvb2xlYW47XG4gIC8qKiBSZWxpYWJpbGl0eSBkaWFncmFtIGRhdGEgKi9cbiAgcmVsaWFiaWxpdHlEaWFncmFtOiBDYWxpYnJhdGlvbkJ1Y2tldFtdO1xuICAvKiogTGFzdCB1cGRhdGVkICovXG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FsaWJyYXRpb24gQVBJIGNsaWVudCBmb3IgcHJlZGljdGlvbiBhY2N1cmFjeSB0cmFja2luZ1xuICovXG5leHBvcnQgY29uc3QgY2FsaWJyYXRpb24gPSB7XG4gIC8qKlxuICAgKiBHZXQgY2FsaWJyYXRpb24gc3RhdHVzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNhbGlicmF0aW9uLnN0YXR1cygnYWdlbnRfMTIzJywgJ2NodXJuX3Jpc2snKTtcbiAgICogY29uc29sZS5sb2coYEJyaWVyIHNjb3JlOiAke3N0YXR1cy5icmllclNjb3JlfWApO1xuICAgKiBjb25zb2xlLmxvZyhgSXMgY2FsaWJyYXRlZDogJHtzdGF0dXMuaXNDYWxpYnJhdGVkfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN0YXR1cyhcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlXG4gICk6IFByb21pc2U8Q2FsaWJyYXRpb25TdGF0dXM+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENhbGlicmF0aW9uU3RhdHVzPihcbiAgICAgIGAvY2FsaWJyYXRpb24vc3RhdHVzLyR7YWdlbnRJZH0/cHJlZGljdGlvblR5cGU9JHtwcmVkaWN0aW9uVHlwZX1gXG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFsbCBjYWxpYnJhdGlvbiBtZXRyaWNzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG1ldHJpY3MgPSBhd2FpdCBjYWxpYnJhdGlvbi5hbGxNZXRyaWNzKCdhZ2VudF8xMjMnKTtcbiAgICogZm9yIChjb25zdCBtIG9mIG1ldHJpY3MpIHtcbiAgICogICBjb25zb2xlLmxvZyhgJHttLnByZWRpY3Rpb25UeXBlfTogQnJpZXI9JHttLmJyaWVyU2NvcmV9YCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhbGxNZXRyaWNzKGFnZW50SWQ6IHN0cmluZyk6IFByb21pc2U8Q2FsaWJyYXRpb25NZXRyaWNzW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENhbGlicmF0aW9uTWV0cmljc1tdPihcbiAgICAgIGAvY2FsaWJyYXRpb24vbWV0cmljcy8ke2FnZW50SWR9YFxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIHByZWRpY3Rpb24gb3V0Y29tZSBmb3IgY2FsaWJyYXRpb24gdHJhY2tpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBSZWNvcmQgYSBjaHVybiBwcmVkaWN0aW9uIG91dGNvbWVcbiAgICogYXdhaXQgY2FsaWJyYXRpb24ucmVjb3JkT3V0Y29tZSh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBwcmVkaWN0aW9uVHlwZTogJ2NodXJuX3Jpc2snLFxuICAgKiAgIHByZWRpY3RlZFZhbHVlOiAwLjcsICAvLyBXZSBwcmVkaWN0ZWQgNzAlIGNodXJuIHJpc2tcbiAgICogICBhY3R1YWxPdXRjb21lOiAxLCAgICAgLy8gQ3VzdG9tZXIgZGlkIGNodXJuXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBSZWNvcmQgYSByZXNvbHV0aW9uIHRpbWUgcHJlZGljdGlvblxuICAgKiBhd2FpdCBjYWxpYnJhdGlvbi5yZWNvcmRPdXRjb21lKHtcbiAgICogICBydW5JZDogJ3J1bl9hYmMxMjMnLFxuICAgKiAgIHByZWRpY3Rpb25UeXBlOiAncmVzb2x1dGlvbl90aW1lJyxcbiAgICogICBwcmVkaWN0ZWRWYWx1ZTogMTUsICAgLy8gUHJlZGljdGVkIDE1IG1pbnV0ZXNcbiAgICogICBhY3R1YWxPdXRjb21lOiAyMiwgICAgLy8gQWN0dWFsIHdhcyAyMiBtaW51dGVzXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHJlY29yZE91dGNvbWUoaW5wdXQ6IFJlY29yZE91dGNvbWVJbnB1dCk6IFByb21pc2U8e1xuICAgIHJlY29yZGVkOiBib29sZWFuO1xuICAgIGJyaWVyQ29udHJpYnV0aW9uOiBudW1iZXI7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL2NhbGlicmF0aW9uL3JlY29yZCcsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgcHJlZGljdGVkQXQ6IGlucHV0LnByZWRpY3RlZEF0IHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgb2JzZXJ2ZWRBdDogaW5wdXQub2JzZXJ2ZWRBdCB8fCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHJlY2FsaWJyYXRpb24gZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsaWJyYXRpb24ucmV0cmFpbignYWdlbnRfMTIzJywge1xuICAgKiAgIHByZWRpY3Rpb25UeXBlczogWydjaHVybl9yaXNrJywgJ2VzY2FsYXRpb25fcmlzayddLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFJldHJhaW5lZDogJHtyZXN1bHQuc3VjY2Vzc31gKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyByZXRyYWluKFxuICAgIGFnZW50SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBwcmVkaWN0aW9uVHlwZXM/OiBQcmVkaWN0aW9uVHlwZVtdO1xuICAgICAgbWluU2FtcGxlcz86IG51bWJlcjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTx7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICByZXRyYWluZWRUeXBlczogUHJlZGljdGlvblR5cGVbXTtcbiAgICBza2lwcGVkVHlwZXM6IEFycmF5PHsgdHlwZTogUHJlZGljdGlvblR5cGU7IHJlYXNvbjogc3RyaW5nIH0+O1xuICAgIG5ld01ldHJpY3M6IENhbGlicmF0aW9uTWV0cmljc1tdO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2NhbGlicmF0aW9uL3JldHJhaW4vJHthZ2VudElkfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHJlbGlhYmlsaXR5IGRpYWdyYW0gZGF0YSBmb3IgdmlzdWFsaXphdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGRpYWdyYW0gPSBhd2FpdCBjYWxpYnJhdGlvbi5yZWxpYWJpbGl0eURpYWdyYW0oJ2FnZW50XzEyMycsICdvdXRjb21lJyk7XG4gICAqIC8vIFVzZSBkaWFncmFtLmJ1Y2tldHMgdG8gcGxvdCBwcmVkaWN0ZWQgdnMgYWN0dWFsIHByb2JhYmlsaXRpZXNcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyByZWxpYWJpbGl0eURpYWdyYW0oXG4gICAgYWdlbnRJZDogc3RyaW5nLFxuICAgIHByZWRpY3Rpb25UeXBlOiBQcmVkaWN0aW9uVHlwZVxuICApOiBQcm9taXNlPHtcbiAgICBhZ2VudElkOiBzdHJpbmc7XG4gICAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlO1xuICAgIGJ1Y2tldHM6IENhbGlicmF0aW9uQnVja2V0W107XG4gICAgcGVyZmVjdENhbGlicmF0aW9uTGluZTogQXJyYXk8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoXG4gICAgICBgL2NhbGlicmF0aW9uL2RpYWdyYW0vJHthZ2VudElkfT9wcmVkaWN0aW9uVHlwZT0ke3ByZWRpY3Rpb25UeXBlfWBcbiAgICApO1xuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENhbGN1bGF0ZSBCcmllciBzY29yZSBmcm9tIHByZWRpY3Rpb25zIGFuZCBvdXRjb21lc1xuICogTG93ZXIgaXMgYmV0dGVyLCA8MC4xIGlzIGNvbnNpZGVyZWQgZ29vZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQnJpZXJTY29yZShcbiAgcHJlZGljdGlvbnM6IEFycmF5PHsgcHJlZGljdGVkOiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH0+XG4pOiBudW1iZXIge1xuICBpZiAocHJlZGljdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcblxuICBjb25zdCBzdW0gPSBwcmVkaWN0aW9ucy5yZWR1Y2UoKGFjYywgeyBwcmVkaWN0ZWQsIGFjdHVhbCB9KSA9PiB7XG4gICAgcmV0dXJuIGFjYyArIE1hdGgucG93KHByZWRpY3RlZCAtIGFjdHVhbCwgMik7XG4gIH0sIDApO1xuXG4gIHJldHVybiBzdW0gLyBwcmVkaWN0aW9ucy5sZW5ndGg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIEV4cGVjdGVkIENhbGlicmF0aW9uIEVycm9yIChFQ0UpXG4gKiBNZWFzdXJlcyBob3cgd2VsbC1jYWxpYnJhdGVkIHByZWRpY3Rpb25zIGFyZSBhY3Jvc3MgY29uZmlkZW5jZSBidWNrZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFQ0UoXG4gIHByZWRpY3Rpb25zOiBBcnJheTx7IHByZWRpY3RlZDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9PixcbiAgbnVtQnVja2V0czogbnVtYmVyID0gMTBcbik6IG51bWJlciB7XG4gIGlmIChwcmVkaWN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gIGNvbnN0IGJ1Y2tldHM6IEFycmF5PHsgcHJlZGljdGlvbnM6IG51bWJlcltdOyBhY3R1YWxzOiBudW1iZXJbXSB9PiA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUJ1Y2tldHM7IGkrKykge1xuICAgIGJ1Y2tldHMucHVzaCh7IHByZWRpY3Rpb25zOiBbXSwgYWN0dWFsczogW10gfSk7XG4gIH1cblxuICAvLyBBc3NpZ24gcHJlZGljdGlvbnMgdG8gYnVja2V0c1xuICBmb3IgKGNvbnN0IHsgcHJlZGljdGVkLCBhY3R1YWwgfSBvZiBwcmVkaWN0aW9ucykge1xuICAgIGNvbnN0IGJ1Y2tldEluZGV4ID0gTWF0aC5taW4oXG4gICAgICBNYXRoLmZsb29yKHByZWRpY3RlZCAqIG51bUJ1Y2tldHMpLFxuICAgICAgbnVtQnVja2V0cyAtIDFcbiAgICApO1xuICAgIGJ1Y2tldHNbYnVja2V0SW5kZXhdLnByZWRpY3Rpb25zLnB1c2gocHJlZGljdGVkKTtcbiAgICBidWNrZXRzW2J1Y2tldEluZGV4XS5hY3R1YWxzLnB1c2goYWN0dWFsKTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBFQ0VcbiAgbGV0IGVjZSA9IDA7XG4gIGZvciAoY29uc3QgYnVja2V0IG9mIGJ1Y2tldHMpIHtcbiAgICBpZiAoYnVja2V0LnByZWRpY3Rpb25zLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG5cbiAgICBjb25zdCBhdmdQcmVkaWN0ZWQgPVxuICAgICAgYnVja2V0LnByZWRpY3Rpb25zLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gYnVja2V0LnByZWRpY3Rpb25zLmxlbmd0aDtcbiAgICBjb25zdCBhdmdBY3R1YWwgPVxuICAgICAgYnVja2V0LmFjdHVhbHMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgLyBidWNrZXQuYWN0dWFscy5sZW5ndGg7XG4gICAgY29uc3Qgd2VpZ2h0ID0gYnVja2V0LnByZWRpY3Rpb25zLmxlbmd0aCAvIHByZWRpY3Rpb25zLmxlbmd0aDtcblxuICAgIGVjZSArPSB3ZWlnaHQgKiBNYXRoLmFicyhhdmdQcmVkaWN0ZWQgLSBhdmdBY3R1YWwpO1xuICB9XG5cbiAgcmV0dXJuIGVjZTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIG1vZGVsIGlzIHdlbGwtY2FsaWJyYXRlZCBiYXNlZCBvbiBCcmllciBzY29yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXZWxsQ2FsaWJyYXRlZChicmllclNjb3JlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGJyaWVyU2NvcmUgPCAwLjE7XG59XG5cbi8qKlxuICogR2V0IGNhbGlicmF0aW9uIHF1YWxpdHkgbGFiZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGlicmF0aW9uUXVhbGl0eShcbiAgYnJpZXJTY29yZTogbnVtYmVyXG4pOiAnZXhjZWxsZW50JyB8ICdnb29kJyB8ICdmYWlyJyB8ICdwb29yJyB7XG4gIGlmIChicmllclNjb3JlIDwgMC4wNSkgcmV0dXJuICdleGNlbGxlbnQnO1xuICBpZiAoYnJpZXJTY29yZSA8IDAuMSkgcmV0dXJuICdnb29kJztcbiAgaWYgKGJyaWVyU2NvcmUgPCAwLjIpIHJldHVybiAnZmFpcic7XG4gIHJldHVybiAncG9vcic7XG59XG5cbi8qKlxuICogRm9ybWF0IEJyaWVyIHNjb3JlIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCcmllclNjb3JlKHNjb3JlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gc2NvcmUudG9GaXhlZCg0KTtcbn1cbiJdfQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NhbGlicmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFzSEgsa0RBVUM7QUFNRCxvQ0FvQ0M7QUFLRCw0Q0FFQztBQUtELHNEQU9DO0FBS0QsNENBRUM7QUFsTUQsMkNBQWdFO0FBa0NoRTs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHO0lBQ3pCOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsT0FBZSxFQUNmLGNBQThCO1FBRTlCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsZ0JBQWdCLE9BQU8sMEJBQTBCLGNBQWMsRUFBRSxFQUNqRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsZ0JBQWdCLE9BQU8sVUFBVSxFQUNqQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FDWCxPQUFlLEVBQ2YsVUFHSSxFQUFFO1FBT04sT0FBTyxJQUFBLDJCQUFrQixFQUFDLGdCQUFnQixPQUFPLFVBQVUsRUFBRTtZQUMzRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGLENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsV0FBeUQ7SUFFekQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUV2QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7UUFDNUQsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVOLE9BQU8sR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsV0FBeUQsRUFDekQsYUFBcUIsRUFBRTtJQUV2QixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLE1BQU0sT0FBTyxHQUF3RCxFQUFFLENBQUM7SUFDeEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsS0FBSyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUNsQyxVQUFVLEdBQUcsQ0FBQyxDQUNmLENBQUM7UUFDRixPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsU0FBUztRQUU5QyxNQUFNLFlBQVksR0FDaEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzVFLE1BQU0sU0FBUyxHQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRTlELEdBQUcsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0I7SUFDakQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQzFCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxVQUFrQjtJQUVsQixJQUFJLFVBQVUsR0FBRyxJQUFJO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDMUMsSUFBSSxVQUFVLEdBQUcsR0FBRztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUFHLEdBQUc7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNwQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFhO0lBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDYWxpYnJhdGlvbiBBUElcbiAqXG4gKiBQcmVkaWN0aW9uIGFjY3VyYWN5IHRyYWNraW5nIHdpdGggQnJpZXIgc2NvcmVzIGFuZCBjYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBDYWxpYnJhdGlvblN0YXR1cyxcbiAgQ2FsaWJyYXRpb25CdWNrZXQsXG4gIFByZWRpY3Rpb25UeXBlLFxuICBBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBTElCUkFUSU9OIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsaWJyYXRpb25NZXRyaWNzIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBwcmVkaWN0aW9uVHlwZTogUHJlZGljdGlvblR5cGU7XG4gIC8qKiBCcmllciBzY29yZSAobG93ZXIgaXMgYmV0dGVyLCA8MC4xIGlzIGdvb2QpICovXG4gIGJyaWVyU2NvcmU6IG51bWJlcjtcbiAgLyoqIEV4cGVjdGVkIENhbGlicmF0aW9uIEVycm9yICovXG4gIGVjZTogbnVtYmVyO1xuICAvKiogTWF4aW11bSBDYWxpYnJhdGlvbiBFcnJvciAqL1xuICBtY2U6IG51bWJlcjtcbiAgLyoqIFNhbXBsZSBjb3VudCAqL1xuICBzYW1wbGVDb3VudDogbnVtYmVyO1xuICAvKiogSXMgdGhlIG1vZGVsIHdlbGwtY2FsaWJyYXRlZCAqL1xuICBpc0NhbGlicmF0ZWQ6IGJvb2xlYW47XG4gIC8qKiBSZWxpYWJpbGl0eSBkaWFncmFtIGRhdGEgKi9cbiAgcmVsaWFiaWxpdHlEaWFncmFtOiBDYWxpYnJhdGlvbkJ1Y2tldFtdO1xuICAvKiogTGFzdCB1cGRhdGVkICovXG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FsaWJyYXRpb24gQVBJIGNsaWVudCBmb3IgcHJlZGljdGlvbiBhY2N1cmFjeSB0cmFja2luZ1xuICovXG5leHBvcnQgY29uc3QgY2FsaWJyYXRpb24gPSB7XG4gIC8qKlxuICAgKiBHZXQgY2FsaWJyYXRpb24gc3RhdHVzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNhbGlicmF0aW9uLnN0YXR1cygnYWdlbnRfMTIzJywgJ2NodXJuX3Jpc2snKTtcbiAgICogY29uc29sZS5sb2coYEJyaWVyIHNjb3JlOiAke3N0YXR1cy5icmllclNjb3JlfWApO1xuICAgKiBjb25zb2xlLmxvZyhgSXMgY2FsaWJyYXRlZDogJHtzdGF0dXMuaXNDYWxpYnJhdGVkfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN0YXR1cyhcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlXG4gICk6IFByb21pc2U8Q2FsaWJyYXRpb25TdGF0dXM+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENhbGlicmF0aW9uU3RhdHVzPihcbiAgICAgIGAvY2FsaWJyYXRpb24vJHthZ2VudElkfS9zdGF0dXM/cHJlZGljdGlvblR5cGU9JHtwcmVkaWN0aW9uVHlwZX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGNhbGlicmF0aW9uIG1ldHJpY3MgZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWV0cmljcyA9IGF3YWl0IGNhbGlicmF0aW9uLmFsbE1ldHJpY3MoJ2FnZW50XzEyMycpO1xuICAgKiBmb3IgKGNvbnN0IG0gb2YgbWV0cmljcykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAke20ucHJlZGljdGlvblR5cGV9OiBCcmllcj0ke20uYnJpZXJTY29yZX1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGFsbE1ldHJpY3MoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxDYWxpYnJhdGlvbk1ldHJpY3NbXT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q2FsaWJyYXRpb25NZXRyaWNzW10+KFxuICAgICAgYC9jYWxpYnJhdGlvbi8ke2FnZW50SWR9L21ldHJpY3NgLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHJlY2FsaWJyYXRpb24gZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsaWJyYXRpb24ucmV0cmFpbignYWdlbnRfMTIzJywge1xuICAgKiAgIHByZWRpY3Rpb25UeXBlczogWydjaHVybl9yaXNrJywgJ2VzY2FsYXRpb25fcmlzayddLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFJldHJhaW5lZDogJHtyZXN1bHQuc3VjY2Vzc31gKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyByZXRyYWluKFxuICAgIGFnZW50SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBwcmVkaWN0aW9uVHlwZXM/OiBQcmVkaWN0aW9uVHlwZVtdO1xuICAgICAgbWluU2FtcGxlcz86IG51bWJlcjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTx7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICByZXRyYWluZWRUeXBlczogUHJlZGljdGlvblR5cGVbXTtcbiAgICBza2lwcGVkVHlwZXM6IEFycmF5PHsgdHlwZTogUHJlZGljdGlvblR5cGU7IHJlYXNvbjogc3RyaW5nIH0+O1xuICAgIG5ld01ldHJpY3M6IENhbGlicmF0aW9uTWV0cmljc1tdO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2NhbGlicmF0aW9uLyR7YWdlbnRJZH0vcmV0cmFpbmAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgfSk7XG4gIH0sXG5cbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxjdWxhdGUgQnJpZXIgc2NvcmUgZnJvbSBwcmVkaWN0aW9ucyBhbmQgb3V0Y29tZXNcbiAqIExvd2VyIGlzIGJldHRlciwgPDAuMSBpcyBjb25zaWRlcmVkIGdvb2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJyaWVyU2NvcmUoXG4gIHByZWRpY3Rpb25zOiBBcnJheTx7IHByZWRpY3RlZDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9PlxuKTogbnVtYmVyIHtcbiAgaWYgKHByZWRpY3Rpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgY29uc3Qgc3VtID0gcHJlZGljdGlvbnMucmVkdWNlKChhY2MsIHsgcHJlZGljdGVkLCBhY3R1YWwgfSkgPT4ge1xuICAgIHJldHVybiBhY2MgKyBNYXRoLnBvdyhwcmVkaWN0ZWQgLSBhY3R1YWwsIDIpO1xuICB9LCAwKTtcblxuICByZXR1cm4gc3VtIC8gcHJlZGljdGlvbnMubGVuZ3RoO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBFeHBlY3RlZCBDYWxpYnJhdGlvbiBFcnJvciAoRUNFKVxuICogTWVhc3VyZXMgaG93IHdlbGwtY2FsaWJyYXRlZCBwcmVkaWN0aW9ucyBhcmUgYWNyb3NzIGNvbmZpZGVuY2UgYnVja2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRUNFKFxuICBwcmVkaWN0aW9uczogQXJyYXk8eyBwcmVkaWN0ZWQ6IG51bWJlcjsgYWN0dWFsOiBudW1iZXIgfT4sXG4gIG51bUJ1Y2tldHM6IG51bWJlciA9IDEwXG4pOiBudW1iZXIge1xuICBpZiAocHJlZGljdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcblxuICBjb25zdCBidWNrZXRzOiBBcnJheTx7IHByZWRpY3Rpb25zOiBudW1iZXJbXTsgYWN0dWFsczogbnVtYmVyW10gfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1CdWNrZXRzOyBpKyspIHtcbiAgICBidWNrZXRzLnB1c2goeyBwcmVkaWN0aW9uczogW10sIGFjdHVhbHM6IFtdIH0pO1xuICB9XG5cbiAgLy8gQXNzaWduIHByZWRpY3Rpb25zIHRvIGJ1Y2tldHNcbiAgZm9yIChjb25zdCB7IHByZWRpY3RlZCwgYWN0dWFsIH0gb2YgcHJlZGljdGlvbnMpIHtcbiAgICBjb25zdCBidWNrZXRJbmRleCA9IE1hdGgubWluKFxuICAgICAgTWF0aC5mbG9vcihwcmVkaWN0ZWQgKiBudW1CdWNrZXRzKSxcbiAgICAgIG51bUJ1Y2tldHMgLSAxXG4gICAgKTtcbiAgICBidWNrZXRzW2J1Y2tldEluZGV4XS5wcmVkaWN0aW9ucy5wdXNoKHByZWRpY3RlZCk7XG4gICAgYnVja2V0c1tidWNrZXRJbmRleF0uYWN0dWFscy5wdXNoKGFjdHVhbCk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgRUNFXG4gIGxldCBlY2UgPSAwO1xuICBmb3IgKGNvbnN0IGJ1Y2tldCBvZiBidWNrZXRzKSB7XG4gICAgaWYgKGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgYXZnUHJlZGljdGVkID1cbiAgICAgIGJ1Y2tldC5wcmVkaWN0aW9ucy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYXZnQWN0dWFsID1cbiAgICAgIGJ1Y2tldC5hY3R1YWxzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gYnVja2V0LmFjdHVhbHMubGVuZ3RoO1xuICAgIGNvbnN0IHdlaWdodCA9IGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggLyBwcmVkaWN0aW9ucy5sZW5ndGg7XG5cbiAgICBlY2UgKz0gd2VpZ2h0ICogTWF0aC5hYnMoYXZnUHJlZGljdGVkIC0gYXZnQWN0dWFsKTtcbiAgfVxuXG4gIHJldHVybiBlY2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBtb2RlbCBpcyB3ZWxsLWNhbGlicmF0ZWQgYmFzZWQgb24gQnJpZXIgc2NvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2VsbENhbGlicmF0ZWQoYnJpZXJTY29yZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBicmllclNjb3JlIDwgMC4xO1xufVxuXG4vKipcbiAqIEdldCBjYWxpYnJhdGlvbiBxdWFsaXR5IGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxpYnJhdGlvblF1YWxpdHkoXG4gIGJyaWVyU2NvcmU6IG51bWJlclxuKTogJ2V4Y2VsbGVudCcgfCAnZ29vZCcgfCAnZmFpcicgfCAncG9vcicge1xuICBpZiAoYnJpZXJTY29yZSA8IDAuMDUpIHJldHVybiAnZXhjZWxsZW50JztcbiAgaWYgKGJyaWVyU2NvcmUgPCAwLjEpIHJldHVybiAnZ29vZCc7XG4gIGlmIChicmllclNjb3JlIDwgMC4yKSByZXR1cm4gJ2ZhaXInO1xuICByZXR1cm4gJ3Bvb3InO1xufVxuXG4vKipcbiAqIEZvcm1hdCBCcmllciBzY29yZSBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QnJpZXJTY29yZShzY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNjb3JlLnRvRml4ZWQoNCk7XG59XG4iXX0=
@@ -49,6 +49,7 @@ exports.claims = {
49
49
  return (0, client_1.apiRequestWithData)('/analyses', {
50
50
  method: 'POST',
51
51
  body: options,
52
+ apiVersion: 'v3',
52
53
  });
53
54
  },
54
55
  /**
@@ -60,7 +61,7 @@ exports.claims = {
60
61
  * ```
61
62
  */
62
63
  async getAnalysis(analysisId) {
63
- return (0, client_1.apiRequestWithData)(`/analyses/${analysisId}`);
64
+ return (0, client_1.apiRequestWithData)(`/analyses/${analysisId}`, { apiVersion: 'v3' });
64
65
  },
65
66
  /**
66
67
  * Get current analysis for a run
@@ -71,7 +72,7 @@ exports.claims = {
71
72
  * ```
72
73
  */
73
74
  async getRunAnalysis(runId) {
74
- return (0, client_1.apiRequestWithData)(`/runs/${runId}/analysis`);
75
+ return (0, client_1.apiRequestWithData)(`/runs/${runId}/analysis`, { apiVersion: 'v3' });
75
76
  },
76
77
  /**
77
78
  * Get analysis history for a run
@@ -82,7 +83,7 @@ exports.claims = {
82
83
  * ```
83
84
  */
84
85
  async getAnalysisHistory(runId) {
85
- return (0, client_1.apiRequestWithData)(`/runs/${runId}/analyses`);
86
+ return (0, client_1.apiRequestWithData)(`/runs/${runId}/analyses`, { apiVersion: 'v3' });
86
87
  },
87
88
  /**
88
89
  * Supersede an analysis with a new one
@@ -103,6 +104,7 @@ exports.claims = {
103
104
  return (0, client_1.apiRequestWithData)(`/analyses/${analysisId}/supersede`, {
104
105
  method: 'POST',
105
106
  body: options,
107
+ apiVersion: 'v3',
106
108
  });
107
109
  },
108
110
  /**
@@ -143,7 +145,7 @@ exports.claims = {
143
145
  params.set('limit', String(options.limit));
144
146
  if (options.offset)
145
147
  params.set('offset', String(options.offset));
146
- const response = await (0, client_1.apiRequest)(`/claims?${params.toString()}`);
148
+ const response = await (0, client_1.apiRequest)(`/claims?${params.toString()}`, { apiVersion: 'v3' });
147
149
  return response.data;
148
150
  },
149
151
  /**
@@ -155,7 +157,7 @@ exports.claims = {
155
157
  * ```
156
158
  */
157
159
  async get(claimId) {
158
- return (0, client_1.apiRequestWithData)(`/claims/${claimId}`);
160
+ return (0, client_1.apiRequestWithData)(`/claims/${claimId}`, { apiVersion: 'v3' });
159
161
  },
160
162
  /**
161
163
  * Verify or reject a claim (human feedback)
@@ -179,6 +181,7 @@ exports.claims = {
179
181
  return (0, client_1.apiRequestWithData)(`/claims/${claimId}/verify`, {
180
182
  method: 'POST',
181
183
  body: options,
184
+ apiVersion: 'v3',
182
185
  });
183
186
  },
184
187
  /**
@@ -201,7 +204,7 @@ exports.claims = {
201
204
  params.set('runId', options.runId);
202
205
  if (options.analysisIds)
203
206
  params.set('analysisIds', options.analysisIds.join(','));
204
- return (0, client_1.apiRequestWithData)(`/claims/summary?${params.toString()}`);
207
+ return (0, client_1.apiRequestWithData)(`/claims/summary?${params.toString()}`, { apiVersion: 'v3' });
205
208
  },
206
209
  };
207
210
  // ============================================================================
@@ -259,4 +262,4 @@ function groupClaimsByCategory(claimsList) {
259
262
  }
260
263
  return groups;
261
264
  }
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGFpbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQTBUSCx3QkFFQztBQUtELGtDQUVDO0FBS0QsZ0NBRUM7QUFLRCwwREFLQztBQUtELDhDQVFDO0FBS0Qsc0RBa0JDO0FBdFhELDJDQUFnRTtBQThFaEU7O0dBRUc7QUFDVSxRQUFBLE1BQU0sR0FBRztJQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QjtRQUNqRCxPQUFPLElBQUEsMkJBQWtCLEVBQWlCLFdBQVcsRUFBRTtZQUNyRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsYUFBYSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsU0FBUyxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFhcEMsT0FBTyxJQUFBLDJCQUFrQixFQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLFVBQWtCLEVBQ2xCLE9BR0M7UUFFRCxPQUFPLElBQUEsMkJBQWtCLEVBQUMsYUFBYSxVQUFVLFlBQVksRUFBRTtZQUM3RCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxP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RTtRQUNkLGNBQWMsRUFBRSxFQUFFO1FBQ2xCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gQ2xhaW1zIEFQSVxuICpcbiAqIEZhY3RzIHZzIEluZmVyZW5jZXMgQVBJIGZvciBhY2Nlc3NpbmcgYW5hbHlzaXMgY2xhaW1zXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBDbGFpbSxcbiAgQ2xhaW1UeXBlLFxuICBDbGFpbUNhdGVnb3J5LFxuICBBbmFseXNpc1Jlc3VsdCxcbiAgQXBpUmVzcG9uc2UsXG4gIFBhZ2luYXRlZFJlc3BvbnNlLFxuICBFdmlkZW5jZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMQUlNUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogTGlzdCBjbGFpbXMgcXVlcnkgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDbGFpbXNPcHRpb25zIHtcbiAgcnVuSWQ/OiBzdHJpbmc7XG4gIGFuYWx5c2lzSWQ/OiBzdHJpbmc7XG4gIGNsYWltVHlwZT86IENsYWltVHlwZTtcbiAgY2xhaW1DYXRlZ29yeT86IENsYWltQ2F0ZWdvcnk7XG4gIG1pbkNvbmZpZGVuY2U/OiBudW1iZXI7XG4gIGh1bWFuVmVyaWZpZWQ/OiBib29sZWFuO1xuICBsaW1pdD86IG51bWJlcjtcbiAgb2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbmFseXNpcyBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQW5hbHlzaXNPcHRpb25zIHtcbiAgcnVuSWQ6IHN0cmluZztcbiAgbW9kZWxVc2VkPzogc3RyaW5nO1xuICBvdXRjb21lVmVyZGljdDogJ3N1Y2Nlc3MnIHwgJ3BhcnRpYWxfc3VjY2VzcycgfCAnZmFpbHVyZSc7XG4gIG91dGNvbWVDb25maWRlbmNlPzogbnVtYmVyO1xuICByb290Q2F1c2VDYXRlZ29yeT86IHN0cmluZztcbiAgcm9vdENhdXNlQ29uZmlkZW5jZT86IG51bWJlcjtcbiAgY2xhaW1zPzogQ3JlYXRlQ2xhaW1JbnB1dFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNsYWltSW5wdXQge1xuICBjbGFpbVR5cGU6IENsYWltVHlwZTtcbiAgY2xhaW1DYXRlZ29yeTogQ2xhaW1DYXRlZ29yeTtcbiAgY2xhaW1UZXh0OiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgY29uZmlkZW5jZUNhbGlicmF0aW9uPzogJ2NhbGlicmF0ZWQnIHwgJ3VuY2FsaWJyYXRlZCcgfCAnbmVlZHNfbW9yZV9kYXRhJztcbiAgZXZpZGVuY2U/OiBFdmlkZW5jZVJlZmVyZW5jZVtdO1xuICBpc0V4cGxhaW5hYmxlPzogYm9vbGVhbjtcbiAgcHJvYmFiaWxpdHlWYWx1ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGYWN0cyB2cyBpbmZlcmVuY2VzIHN1bW1hcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0c1ZzSW5mZXJlbmNlc1N1bW1hcnkge1xuICBhbmFseXNpc0lkczogc3RyaW5nW107XG4gIHRvdGFsQ2xhaW1zOiBudW1iZXI7XG4gIG9ic2VydmVkOiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgfTtcbiAgaW5mZXJyZWQ6IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGF2Z0NvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBjYXRlZ29yaWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICB9O1xuICBjb21wdXRlZDoge1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgYXZnQ29uZmlkZW5jZTogbnVtYmVyO1xuICAgIGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIH07XG4gIGh1bWFuVmVyaWZpZWRDb3VudDogbnVtYmVyO1xuICBodW1hblJlamVjdGVkQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDbGFpbXMgQVBJIGNsaWVudCBmb3IgZmFjdHMgdnMgaW5mZXJlbmNlcyBtYW5hZ2VtZW50XG4gKi9cbmV4cG9ydCBjb25zdCBjbGFpbXMgPSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYW5hbHlzaXMgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYW5hbHlzaXMgPSBhd2FpdCBjbGFpbXMuY3JlYXRlQW5hbHlzaXMoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgb3V0Y29tZVZlcmRpY3Q6ICdmYWlsdXJlJyxcbiAgICogICBvdXRjb21lQ29uZmlkZW5jZTogMC44NSxcbiAgICogICByb290Q2F1c2VDYXRlZ29yeTogJ3JldHJpZXZhbF9mYWlsdXJlJyxcbiAgICogICBjbGFpbXM6IFtcbiAgICogICAgIHtcbiAgICogICAgICAgY2xhaW1UeXBlOiAnb2JzZXJ2ZWQnLFxuICAgKiAgICAgICBjbGFpbUNhdGVnb3J5OiAncm9vdF9jYXVzZScsXG4gICAqICAgICAgIGNsYWltVGV4dDogJ1ZlY3RvciBzZWFyY2ggcmV0dXJuZWQgMCByZXN1bHRzJyxcbiAgICogICAgICAgY29uZmlkZW5jZTogMS4wLFxuICAgKiAgICAgICBldmlkZW5jZTogW3sgdHlwZTogJ3NwYW4nLCByZWZlcmVuY2VJZDogJ3NwYW5fMTIzJywgcmVsZXZhbmNlOiAnZGlyZWN0JywgY29uZmlkZW5jZTogMS4wIH1dLFxuICAgKiAgICAgfSxcbiAgICogICAgIHtcbiAgICogICAgICAgY2xhaW1UeXBlOiAnaW5mZXJyZWQnLFxuICAgKiAgICAgICBjbGFpbUNhdGVnb3J5OiAnY2h1cm5fcmlzaycsXG4gICAqICAgICAgIGNsYWltVGV4dDogJ0hpZ2ggY2h1cm4gcmlzayBkdWUgdG8gcmVwZWF0ZWQgZmFpbHVyZXMnLFxuICAgKiAgICAgICBjb25maWRlbmNlOiAwLjcsXG4gICAqICAgICB9LFxuICAgKiAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGNyZWF0ZUFuYWx5c2lzKG9wdGlvbnM6IENyZWF0ZUFuYWx5c2lzT3B0aW9ucyk6IFByb21pc2U8QW5hbHlzaXNSZXN1bHQ+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPEFuYWx5c2lzUmVzdWx0PignL2FuYWx5c2VzJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYW5hbHlzaXMgYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpcygnYW5hbHlzaXNfYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QW5hbHlzaXMoYW5hbHlzaXNJZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvYW5hbHlzZXMvJHthbmFseXNpc0lkfWApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBhbmFseXNpcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5nZXRSdW5BbmFseXNpcygncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldFJ1bkFuYWx5c2lzKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPEFuYWx5c2lzUmVzdWx0PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxBbmFseXNpc1Jlc3VsdD4oYC9ydW5zLyR7cnVuSWR9L2FuYWx5c2lzYCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhbmFseXNpcyBoaXN0b3J5IGZvciBhIHJ1blxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGhpc3RvcnkgPSBhd2FpdCBjbGFpbXMuZ2V0QW5hbHlzaXNIaXN0b3J5KCdydW5fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QW5hbHlzaXNIaXN0b3J5KHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgICBydW5JZDogc3RyaW5nO1xuICAgIGFuYWx5c2VzOiBBcnJheTx7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgYW5hbHlzaXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgICBtb2RlbFVzZWQ6IHN0cmluZztcbiAgICAgIG91dGNvbWVWZXJkaWN0OiBzdHJpbmc7XG4gICAgICBpc0N1cnJlbnQ6IGJvb2xlYW47XG4gICAgICBzdXBlcnNlZGVkQnk/OiBzdHJpbmc7XG4gICAgICBzdXBlcnNlc3Npb25SZWFzb24/OiBzdHJpbmc7XG4gICAgICBhbmFseXplZEF0OiBzdHJpbmc7XG4gICAgfT47XG4gIH0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvcnVucy8ke3J1bklkfS9hbmFseXNlc2ApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTdXBlcnNlZGUgYW4gYW5hbHlzaXMgd2l0aCBhIG5ldyBvbmVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBuZXdBbmFseXNpcyA9IGF3YWl0IGNsYWltcy5zdXBlcnNlZGVBbmFseXNpcygnYW5hbHlzaXNfb2xkJywge1xuICAgKiAgIHJlYXNvbjogJ0ltcHJvdmVkIG1vZGVsIGFjY3VyYWN5JyxcbiAgICogICBuZXdBbmFseXNpczoge1xuICAgKiAgICAgb3V0Y29tZVZlcmRpY3Q6ICdzdWNjZXNzJyxcbiAgICogICAgIG91dGNvbWVDb25maWRlbmNlOiAwLjk1LFxuICAgKiAgICAgY2xhaW1zOiBbLi4uXSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdXBlcnNlZGVBbmFseXNpcyhcbiAgICBhbmFseXNpc0lkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICBuZXdBbmFseXNpczogT21pdDxDcmVhdGVBbmFseXNpc09wdGlvbnMsICdydW5JZCc+O1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IHN1cGVyc2VkZWRBbmFseXNpc0lkOiBzdHJpbmc7IG5ld0FuYWx5c2lzOiBBbmFseXNpc1Jlc3VsdCB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2FuYWx5c2VzLyR7YW5hbHlzaXNJZH0vc3VwZXJzZWRlYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0IGNsYWltcyB3aXRoIGZpbHRlcnNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBHZXQgYWxsIGluZmVycmVkIGNsYWltcyB3aXRoIGhpZ2ggY29uZmlkZW5jZVxuICAgKiBjb25zdCB7IGNsYWltcyB9ID0gYXdhaXQgY2xhaW1zLmxpc3Qoe1xuICAgKiAgIGNsYWltVHlwZTogJ2luZmVycmVkJyxcbiAgICogICBtaW5Db25maWRlbmNlOiAwLjgsXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBHZXQgYWxsIGNodXJuIHJpc2sgY2xhaW1zIGZvciBhIHJ1blxuICAgKiBjb25zdCB7IGNsYWltcyB9ID0gYXdhaXQgY2xhaW1zLmxpc3Qoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgY2xhaW1DYXRlZ29yeTogJ2NodXJuX3Jpc2snLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0KFxuICAgIG9wdGlvbnM6IExpc3RDbGFpbXNPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTx7IGNsYWltczogQ2xhaW1bXTsgbGltaXQ6IG51bWJlcjsgb2Zmc2V0OiBudW1iZXI7IGhhc01vcmU6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5ydW5JZCkgcGFyYW1zLnNldCgncnVuSWQnLCBvcHRpb25zLnJ1bklkKTtcbiAgICBpZiAob3B0aW9ucy5hbmFseXNpc0lkKSBwYXJhbXMuc2V0KCdhbmFseXNpc0lkJywgb3B0aW9ucy5hbmFseXNpc0lkKTtcbiAgICBpZiAob3B0aW9ucy5jbGFpbVR5cGUpIHBhcmFtcy5zZXQoJ2NsYWltVHlwZScsIG9wdGlvbnMuY2xhaW1UeXBlKTtcbiAgICBpZiAob3B0aW9ucy5jbGFpbUNhdGVnb3J5KSBwYXJhbXMuc2V0KCdjbGFpbUNhdGVnb3J5Jywgb3B0aW9ucy5jbGFpbUNhdGVnb3J5KTtcbiAgICBpZiAob3B0aW9ucy5taW5Db25maWRlbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ21pbkNvbmZpZGVuY2UnLCBTdHJpbmcob3B0aW9ucy5taW5Db25maWRlbmNlKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmh1bWFuVmVyaWZpZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnNldCgnaHVtYW5WZXJpZmllZCcsIFN0cmluZyhvcHRpb25zLmh1bWFuVmVyaWZpZWQpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGltaXQpIHBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKG9wdGlvbnMubGltaXQpKTtcbiAgICBpZiAob3B0aW9ucy5vZmZzZXQpIHBhcmFtcy5zZXQoJ29mZnNldCcsIFN0cmluZyhvcHRpb25zLm9mZnNldCkpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PEFwaVJlc3BvbnNlPHsgY2xhaW1zOiBDbGFpbVtdOyBsaW1pdDogbnVtYmVyOyBvZmZzZXQ6IG51bWJlcjsgaGFzTW9yZTogYm9vbGVhbiB9Pj4oXG4gICAgICBgL2NsYWltcz8ke3BhcmFtcy50b1N0cmluZygpfWBcbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhITtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgY2xhaW0gYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBjbGFpbSA9IGF3YWl0IGNsYWltcy5nZXQoJ2NsYWltX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldChjbGFpbUlkOiBzdHJpbmcpOiBQcm9taXNlPENsYWltPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxDbGFpbT4oYC9jbGFpbXMvJHtjbGFpbUlkfWApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBWZXJpZnkgb3IgcmVqZWN0IGEgY2xhaW0gKGh1bWFuIGZlZWRiYWNrKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIENvbmZpcm0gYSBjbGFpbVxuICAgKiBhd2FpdCBjbGFpbXMudmVyaWZ5KCdjbGFpbV9hYmMxMjMnLCB7XG4gICAqICAgdmVyZGljdDogJ2NvbmZpcm1lZCcsXG4gICAqICAgbm90ZXM6ICdWZXJpZmllZCBhZ2FpbnN0IHRpY2tldCBoaXN0b3J5JyxcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIFJlamVjdCBhIGNsYWltXG4gICAqIGF3YWl0IGNsYWltcy52ZXJpZnkoJ2NsYWltX2FiYzEyMycsIHtcbiAgICogICB2ZXJkaWN0OiAncmVqZWN0ZWQnLFxuICAgKiAgIG5vdGVzOiAnQ3VzdG9tZXIgY29udGV4dCB3YXMgbWlzc2luZycsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHZlcmlmeShcbiAgICBjbGFpbUlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgdmVyZGljdDogJ2NvbmZpcm1lZCcgfCAncmVqZWN0ZWQnIHwgJ21vZGlmaWVkJztcbiAgICAgIG5vdGVzPzogc3RyaW5nO1xuICAgICAgbW9kaWZpZWRUZXh0Pzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IGNsYWltSWQ6IHN0cmluZzsgdmVyZGljdDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9jbGFpbXMvJHtjbGFpbUlkfS92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBmYWN0cyB2cyBpbmZlcmVuY2VzIHN1bW1hcnlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBTdW1tYXJ5IGZvciBhIHNwZWNpZmljIHJ1blxuICAgKiBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgY2xhaW1zLnN1bW1hcnkoeyBydW5JZDogJ3J1bl9hYmMxMjMnIH0pO1xuICAgKlxuICAgKiAvLyBTdW1tYXJ5IGZvciBtdWx0aXBsZSBhbmFseXNlc1xuICAgKiBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgY2xhaW1zLnN1bW1hcnkoe1xuICAgKiAgIGFuYWx5c2lzSWRzOiBbJ2FuYWx5c2lzXzEnLCAnYW5hbHlzaXNfMiddLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdW1tYXJ5KFxuICAgIG9wdGlvbnM6IHsgcnVuSWQ/OiBzdHJpbmc7IGFuYWx5c2lzSWRzPzogc3RyaW5nW10gfSA9IHt9XG4gICk6IFByb21pc2U8RmFjdHNWc0luZmVyZW5jZXNTdW1tYXJ5PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zLnJ1bklkKSBwYXJhbXMuc2V0KCdydW5JZCcsIG9wdGlvbnMucnVuSWQpO1xuICAgIGlmIChvcHRpb25zLmFuYWx5c2lzSWRzKSBwYXJhbXMuc2V0KCdhbmFseXNpc0lkcycsIG9wdGlvbnMuYW5hbHlzaXNJZHMuam9pbignLCcpKTtcblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8RmFjdHNWc0luZmVyZW5jZXNTdW1tYXJ5PihcbiAgICAgIGAvY2xhaW1zL3N1bW1hcnk/JHtwYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGNsYWltIGlzIGEgZmFjdCAob2JzZXJ2ZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZhY3QoY2xhaW06IENsYWltKTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbS5jbGFpbVR5cGUgPT09ICdvYnNlcnZlZCc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBjbGFpbSBpcyBhbiBpbmZlcmVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5mZXJlbmNlKGNsYWltOiBDbGFpbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnaW5mZXJyZWQnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY2xhaW0gaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcHV0ZWQoY2xhaW06IENsYWltKTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbS5jbGFpbVR5cGUgPT09ICdjb21wdXRlZCc7XG59XG5cbi8qKlxuICogR2V0IGhpZ2ggY29uZmlkZW5jZSBjbGFpbXMgKD49IHRocmVzaG9sZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hDb25maWRlbmNlQ2xhaW1zKFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdLFxuICB0aHJlc2hvbGQ6IG51bWJlciA9IDAuOFxuKTogQ2xhaW1bXSB7XG4gIHJldHVybiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jb25maWRlbmNlID49IHRocmVzaG9sZCk7XG59XG5cbi8qKlxuICogR3JvdXAgY2xhaW1zIGJ5IHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQ2xhaW1zQnlUeXBlKFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdXG4pOiBSZWNvcmQ8Q2xhaW1UeXBlLCBDbGFpbVtdPiB7XG4gIHJldHVybiB7XG4gICAgb2JzZXJ2ZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ29ic2VydmVkJyksXG4gICAgaW5mZXJyZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ2luZmVycmVkJyksXG4gICAgY29tcHV0ZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ2NvbXB1dGVkJyksXG4gIH07XG59XG5cbi8qKlxuICogR3JvdXAgY2xhaW1zIGJ5IGNhdGVnb3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncm91cENsYWltc0J5Q2F0ZWdvcnkoXG4gIGNsYWltc0xpc3Q6IENsYWltW11cbik6IFJlY29yZDxDbGFpbUNhdGVnb3J5LCBDbGFpbVtdPiB7XG4gIGNvbnN0IGdyb3VwczogUmVjb3JkPENsYWltQ2F0ZWdvcnksIENsYWltW10+ID0ge1xuICAgIG91dGNvbWU6IFtdLFxuICAgIHJvb3RfY2F1c2U6IFtdLFxuICAgIGN1c3RvbWVyX2ltcGFjdDogW10sXG4gICAgY2h1cm5fcmlzazogW10sXG4gICAgcmV2ZW51ZV9pbXBhY3Q6IFtdLFxuICAgIHF1YWxpdHk6IFtdLFxuICAgIG90aGVyOiBbXSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGNsYWltIG9mIGNsYWltc0xpc3QpIHtcbiAgICBncm91cHNbY2xhaW0uY2xhaW1DYXRlZ29yeV0ucHVzaChjbGFpbSk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufVxuIl19
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGFpbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQStUSCx3QkFFQztBQUtELGtDQUVDO0FBS0QsZ0NBRUM7QUFLRCwwREFLQztBQUtELDhDQVFDO0FBS0Qsc0RBa0JDO0FBM1hELDJDQUFnRTtBQThFaEU7O0dBRUc7QUFDVSxRQUFBLE1BQU0sR0FBRztJQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QjtRQUNqRCxPQUFPLElBQUEsMkJBQWtCLEVBQWlCLFdBQVcsRUFBRTtZQUNyRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsYUFBYSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsU0FBUyxLQUFLLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFhcEMsT0FBTyxJQUFBLDJCQUFrQixFQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLFVBQWtCLEVBQ2xCLE9BR0M7UUFFRCxPQUFPLElBQUEsMkJBQWtCLEVBQUMsYUFBYSxVQUFVLFlBQVksRUFBRTtZQUM3RCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQ1IsVUFBNkIsRUFBRTtRQUUvQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBTyxDQUFDLEtBQUs7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxPQUFPLENBQUMsVUFBVTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksT0FBTyxDQUFDLGFBQWE7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLE9BQU8sQ0FBQyxNQUFNO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxtQkFBVSxFQUMvQixXQUFXLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUM5QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLElBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBZTtRQUN2QixPQUFPLElBQUEsMkJBQWtCLEVBQVEsV0FBVyxPQUFPLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLE9BQWUsRUFDZixPQUlDO1FBRUQsT0FBTyxJQUFBLDJCQUFrQixFQUFDLFdBQVcsT0FBTyxTQUFTLEVBQUU7WUFDckQsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FDWCxVQUFzRCxFQUFFO1FBRXhELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxPQUFPLENBQUMsS0FBSztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLE9BQU8sQ0FBQyxXQUFXO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsRixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLG1CQUFtQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFDdEMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxtQkFBbUI7QUFDbkIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEtBQVk7SUFDakMsT0FBTyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBWTtJQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDO0FBQ3hDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxLQUFZO0lBQ3JDLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7QUFDeEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLFVBQW1CLEVBQ25CLFlBQW9CLEdBQUc7SUFFdkIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixVQUFtQjtJQUVuQixPQUFPO1FBQ0wsUUFBUSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDO1FBQzlELFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQztRQUM5RCxRQUFRLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7S0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxVQUFtQjtJQUVuQixNQUFNLE1BQU0sR0FBbUM7UUFDN0MsT0FBTyxFQUFFLEVBQUU7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFVBQVUsRUFBRSxFQUFFO1FBQ2QsY0FBYyxFQUFFLEVBQUU7UUFDbEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7SUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDbGFpbXMgQVBJXG4gKlxuICogRmFjdHMgdnMgSW5mZXJlbmNlcyBBUEkgZm9yIGFjY2Vzc2luZyBhbmFseXNpcyBjbGFpbXNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYWltLFxuICBDbGFpbVR5cGUsXG4gIENsYWltQ2F0ZWdvcnksXG4gIEFuYWx5c2lzUmVzdWx0LFxuICBBcGlSZXNwb25zZSxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIEV2aWRlbmNlUmVmZXJlbmNlLFxufSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xBSU1TIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBMaXN0IGNsYWltcyBxdWVyeSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENsYWltc09wdGlvbnMge1xuICBydW5JZD86IHN0cmluZztcbiAgYW5hbHlzaXNJZD86IHN0cmluZztcbiAgY2xhaW1UeXBlPzogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5PzogQ2xhaW1DYXRlZ29yeTtcbiAgbWluQ29uZmlkZW5jZT86IG51bWJlcjtcbiAgaHVtYW5WZXJpZmllZD86IGJvb2xlYW47XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuYWx5c2lzIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBbmFseXNpc09wdGlvbnMge1xuICBydW5JZDogc3RyaW5nO1xuICBtb2RlbFVzZWQ/OiBzdHJpbmc7XG4gIG91dGNvbWVWZXJkaWN0OiAnc3VjY2VzcycgfCAncGFydGlhbF9zdWNjZXNzJyB8ICdmYWlsdXJlJztcbiAgb3V0Y29tZUNvbmZpZGVuY2U/OiBudW1iZXI7XG4gIHJvb3RDYXVzZUNhdGVnb3J5Pzogc3RyaW5nO1xuICByb290Q2F1c2VDb25maWRlbmNlPzogbnVtYmVyO1xuICBjbGFpbXM/OiBDcmVhdGVDbGFpbUlucHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xhaW1JbnB1dCB7XG4gIGNsYWltVHlwZTogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5OiBDbGFpbUNhdGVnb3J5O1xuICBjbGFpbVRleHQ6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBjb25maWRlbmNlQ2FsaWJyYXRpb24/OiAnY2FsaWJyYXRlZCcgfCAndW5jYWxpYnJhdGVkJyB8ICduZWVkc19tb3JlX2RhdGEnO1xuICBldmlkZW5jZT86IEV2aWRlbmNlUmVmZXJlbmNlW107XG4gIGlzRXhwbGFpbmFibGU/OiBib29sZWFuO1xuICBwcm9iYWJpbGl0eVZhbHVlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZhY3RzIHZzIGluZmVyZW5jZXMgc3VtbWFyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeSB7XG4gIGFuYWx5c2lzSWRzOiBzdHJpbmdbXTtcbiAgdG90YWxDbGFpbXM6IG51bWJlcjtcbiAgb2JzZXJ2ZWQ6IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGF2Z0NvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBjYXRlZ29yaWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICB9O1xuICBpbmZlcnJlZDoge1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgYXZnQ29uZmlkZW5jZTogbnVtYmVyO1xuICAgIGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIH07XG4gIGNvbXB1dGVkOiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgfTtcbiAgaHVtYW5WZXJpZmllZENvdW50OiBudW1iZXI7XG4gIGh1bWFuUmVqZWN0ZWRDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENsYWltcyBBUEkgY2xpZW50IGZvciBmYWN0cyB2cyBpbmZlcmVuY2VzIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGNsYWltcyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBhbmFseXNpcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5jcmVhdGVBbmFseXNpcyh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBvdXRjb21lVmVyZGljdDogJ2ZhaWx1cmUnLFxuICAgKiAgIG91dGNvbWVDb25maWRlbmNlOiAwLjg1LFxuICAgKiAgIHJvb3RDYXVzZUNhdGVnb3J5OiAncmV0cmlldmFsX2ZhaWx1cmUnLFxuICAgKiAgIGNsYWltczogW1xuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdvYnNlcnZlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdyb290X2NhdXNlJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnVmVjdG9yIHNlYXJjaCByZXR1cm5lZCAwIHJlc3VsdHMnLFxuICAgKiAgICAgICBjb25maWRlbmNlOiAxLjAsXG4gICAqICAgICAgIGV2aWRlbmNlOiBbeyB0eXBlOiAnc3BhbicsIHJlZmVyZW5jZUlkOiAnc3Bhbl8xMjMnLCByZWxldmFuY2U6ICdkaXJlY3QnLCBjb25maWRlbmNlOiAxLjAgfV0sXG4gICAqICAgICB9LFxuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnSGlnaCBjaHVybiByaXNrIGR1ZSB0byByZXBlYXRlZCBmYWlsdXJlcycsXG4gICAqICAgICAgIGNvbmZpZGVuY2U6IDAuNyxcbiAgICogICAgIH0sXG4gICAqICAgXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQW5hbHlzaXMob3B0aW9uczogQ3JlYXRlQW5hbHlzaXNPcHRpb25zKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KCcvYW5hbHlzZXMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYW5hbHlzaXMgYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpcygnYW5hbHlzaXNfYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QW5hbHlzaXMoYW5hbHlzaXNJZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvYW5hbHlzZXMvJHthbmFseXNpc0lkfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgYW5hbHlzaXMgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYW5hbHlzaXMgPSBhd2FpdCBjbGFpbXMuZ2V0UnVuQW5hbHlzaXMoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRSdW5BbmFseXNpcyhydW5JZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvcnVucy8ke3J1bklkfS9hbmFseXNpc2AsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFuYWx5c2lzIGhpc3RvcnkgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGlzdG9yeSA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpc0hpc3RvcnkoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRBbmFseXNpc0hpc3RvcnkocnVuSWQ6IHN0cmluZyk6IFByb21pc2U8e1xuICAgIHJ1bklkOiBzdHJpbmc7XG4gICAgYW5hbHlzZXM6IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBhbmFseXNpc1ZlcnNpb246IHN0cmluZztcbiAgICAgIG1vZGVsVXNlZDogc3RyaW5nO1xuICAgICAgb3V0Y29tZVZlcmRpY3Q6IHN0cmluZztcbiAgICAgIGlzQ3VycmVudDogYm9vbGVhbjtcbiAgICAgIHN1cGVyc2VkZWRCeT86IHN0cmluZztcbiAgICAgIHN1cGVyc2Vzc2lvblJlYXNvbj86IHN0cmluZztcbiAgICAgIGFuYWx5emVkQXQ6IHN0cmluZztcbiAgICB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L2FuYWx5c2VzYCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTdXBlcnNlZGUgYW4gYW5hbHlzaXMgd2l0aCBhIG5ldyBvbmVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBuZXdBbmFseXNpcyA9IGF3YWl0IGNsYWltcy5zdXBlcnNlZGVBbmFseXNpcygnYW5hbHlzaXNfb2xkJywge1xuICAgKiAgIHJlYXNvbjogJ0ltcHJvdmVkIG1vZGVsIGFjY3VyYWN5JyxcbiAgICogICBuZXdBbmFseXNpczoge1xuICAgKiAgICAgb3V0Y29tZVZlcmRpY3Q6ICdzdWNjZXNzJyxcbiAgICogICAgIG91dGNvbWVDb25maWRlbmNlOiAwLjk1LFxuICAgKiAgICAgY2xhaW1zOiBbLi4uXSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdXBlcnNlZGVBbmFseXNpcyhcbiAgICBhbmFseXNpc0lkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICBuZXdBbmFseXNpczogT21pdDxDcmVhdGVBbmFseXNpc09wdGlvbnMsICdydW5JZCc+O1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IHN1cGVyc2VkZWRBbmFseXNpc0lkOiBzdHJpbmc7IG5ld0FuYWx5c2lzOiBBbmFseXNpc1Jlc3VsdCB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2FuYWx5c2VzLyR7YW5hbHlzaXNJZH0vc3VwZXJzZWRlYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdCBjbGFpbXMgd2l0aCBmaWx0ZXJzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gR2V0IGFsbCBpbmZlcnJlZCBjbGFpbXMgd2l0aCBoaWdoIGNvbmZpZGVuY2VcbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgbWluQ29uZmlkZW5jZTogMC44LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gR2V0IGFsbCBjaHVybiByaXNrIGNsYWltcyBmb3IgYSBydW5cbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBydW5JZDogJ3J1bl9hYmMxMjMnLFxuICAgKiAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgbGlzdChcbiAgICBvcHRpb25zOiBMaXN0Q2xhaW1zT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8eyBjbGFpbXM6IENsYWltW107IGxpbWl0OiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBoYXNNb3JlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMucnVuSWQpIHBhcmFtcy5zZXQoJ3J1bklkJywgb3B0aW9ucy5ydW5JZCk7XG4gICAgaWYgKG9wdGlvbnMuYW5hbHlzaXNJZCkgcGFyYW1zLnNldCgnYW5hbHlzaXNJZCcsIG9wdGlvbnMuYW5hbHlzaXNJZCk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1UeXBlKSBwYXJhbXMuc2V0KCdjbGFpbVR5cGUnLCBvcHRpb25zLmNsYWltVHlwZSk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1DYXRlZ29yeSkgcGFyYW1zLnNldCgnY2xhaW1DYXRlZ29yeScsIG9wdGlvbnMuY2xhaW1DYXRlZ29yeSk7XG4gICAgaWYgKG9wdGlvbnMubWluQ29uZmlkZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMuc2V0KCdtaW5Db25maWRlbmNlJywgU3RyaW5nKG9wdGlvbnMubWluQ29uZmlkZW5jZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5odW1hblZlcmlmaWVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2h1bWFuVmVyaWZpZWQnLCBTdHJpbmcob3B0aW9ucy5odW1hblZlcmlmaWVkKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnMub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0aW9ucy5vZmZzZXQpKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdDxBcGlSZXNwb25zZTx7IGNsYWltczogQ2xhaW1bXTsgbGltaXQ6IG51bWJlcjsgb2Zmc2V0OiBudW1iZXI7IGhhc01vcmU6IGJvb2xlYW4gfT4+KFxuICAgICAgYC9jbGFpbXM/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhITtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgY2xhaW0gYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBjbGFpbSA9IGF3YWl0IGNsYWltcy5nZXQoJ2NsYWltX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldChjbGFpbUlkOiBzdHJpbmcpOiBQcm9taXNlPENsYWltPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxDbGFpbT4oYC9jbGFpbXMvJHtjbGFpbUlkfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogVmVyaWZ5IG9yIHJlamVjdCBhIGNsYWltIChodW1hbiBmZWVkYmFjaylcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBDb25maXJtIGEgY2xhaW1cbiAgICogYXdhaXQgY2xhaW1zLnZlcmlmeSgnY2xhaW1fYWJjMTIzJywge1xuICAgKiAgIHZlcmRpY3Q6ICdjb25maXJtZWQnLFxuICAgKiAgIG5vdGVzOiAnVmVyaWZpZWQgYWdhaW5zdCB0aWNrZXQgaGlzdG9yeScsXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBSZWplY3QgYSBjbGFpbVxuICAgKiBhd2FpdCBjbGFpbXMudmVyaWZ5KCdjbGFpbV9hYmMxMjMnLCB7XG4gICAqICAgdmVyZGljdDogJ3JlamVjdGVkJyxcbiAgICogICBub3RlczogJ0N1c3RvbWVyIGNvbnRleHQgd2FzIG1pc3NpbmcnLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyB2ZXJpZnkoXG4gICAgY2xhaW1JZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHZlcmRpY3Q6ICdjb25maXJtZWQnIHwgJ3JlamVjdGVkJyB8ICdtb2RpZmllZCc7XG4gICAgICBub3Rlcz86IHN0cmluZztcbiAgICAgIG1vZGlmaWVkVGV4dD86IHN0cmluZztcbiAgICB9XG4gICk6IFByb21pc2U8eyBjbGFpbUlkOiBzdHJpbmc7IHZlcmRpY3Q6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvY2xhaW1zLyR7Y2xhaW1JZH0vdmVyaWZ5YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGZhY3RzIHZzIGluZmVyZW5jZXMgc3VtbWFyeVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFN1bW1hcnkgZm9yIGEgc3BlY2lmaWMgcnVuXG4gICAqIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCBjbGFpbXMuc3VtbWFyeSh7IHJ1bklkOiAncnVuX2FiYzEyMycgfSk7XG4gICAqXG4gICAqIC8vIFN1bW1hcnkgZm9yIG11bHRpcGxlIGFuYWx5c2VzXG4gICAqIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCBjbGFpbXMuc3VtbWFyeSh7XG4gICAqICAgYW5hbHlzaXNJZHM6IFsnYW5hbHlzaXNfMScsICdhbmFseXNpc18yJ10sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN1bW1hcnkoXG4gICAgb3B0aW9uczogeyBydW5JZD86IHN0cmluZzsgYW5hbHlzaXNJZHM/OiBzdHJpbmdbXSB9ID0ge31cbiAgKTogUHJvbWlzZTxGYWN0c1ZzSW5mZXJlbmNlc1N1bW1hcnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMucnVuSWQpIHBhcmFtcy5zZXQoJ3J1bklkJywgb3B0aW9ucy5ydW5JZCk7XG4gICAgaWYgKG9wdGlvbnMuYW5hbHlzaXNJZHMpIHBhcmFtcy5zZXQoJ2FuYWx5c2lzSWRzJywgb3B0aW9ucy5hbmFseXNpc0lkcy5qb2luKCcsJykpO1xuXG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxGYWN0c1ZzSW5mZXJlbmNlc1N1bW1hcnk+KFxuICAgICAgYC9jbGFpbXMvc3VtbWFyeT8ke3BhcmFtcy50b1N0cmluZygpfWAsXG4gICAgICB7IGFwaVZlcnNpb246ICd2MycgfVxuICAgICk7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBjbGFpbSBpcyBhIGZhY3QgKG9ic2VydmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYWN0KGNsYWltOiBDbGFpbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnb2JzZXJ2ZWQnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY2xhaW0gaXMgYW4gaW5mZXJlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luZmVyZW5jZShjbGFpbTogQ2xhaW0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNsYWltLmNsYWltVHlwZSA9PT0gJ2luZmVycmVkJztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGNsYWltIGlzIGNvbXB1dGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXB1dGVkKGNsYWltOiBDbGFpbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnY29tcHV0ZWQnO1xufVxuXG4vKipcbiAqIEdldCBoaWdoIGNvbmZpZGVuY2UgY2xhaW1zICg+PSB0aHJlc2hvbGQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaWdoQ29uZmlkZW5jZUNsYWltcyhcbiAgY2xhaW1zTGlzdDogQ2xhaW1bXSxcbiAgdGhyZXNob2xkOiBudW1iZXIgPSAwLjhcbik6IENsYWltW10ge1xuICByZXR1cm4gY2xhaW1zTGlzdC5maWx0ZXIoKGMpID0+IGMuY29uZmlkZW5jZSA+PSB0aHJlc2hvbGQpO1xufVxuXG4vKipcbiAqIEdyb3VwIGNsYWltcyBieSB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncm91cENsYWltc0J5VHlwZShcbiAgY2xhaW1zTGlzdDogQ2xhaW1bXVxuKTogUmVjb3JkPENsYWltVHlwZSwgQ2xhaW1bXT4ge1xuICByZXR1cm4ge1xuICAgIG9ic2VydmVkOiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jbGFpbVR5cGUgPT09ICdvYnNlcnZlZCcpLFxuICAgIGluZmVycmVkOiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jbGFpbVR5cGUgPT09ICdpbmZlcnJlZCcpLFxuICAgIGNvbXB1dGVkOiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jbGFpbVR5cGUgPT09ICdjb21wdXRlZCcpLFxuICB9O1xufVxuXG4vKipcbiAqIEdyb3VwIGNsYWltcyBieSBjYXRlZ29yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBDbGFpbXNCeUNhdGVnb3J5KFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdXG4pOiBSZWNvcmQ8Q2xhaW1DYXRlZ29yeSwgQ2xhaW1bXT4ge1xuICBjb25zdCBncm91cHM6IFJlY29yZDxDbGFpbUNhdGVnb3J5LCBDbGFpbVtdPiA9IHtcbiAgICBvdXRjb21lOiBbXSxcbiAgICByb290X2NhdXNlOiBbXSxcbiAgICBjdXN0b21lcl9pbXBhY3Q6IFtdLFxuICAgIGNodXJuX3Jpc2s6IFtdLFxuICAgIHJldmVudWVfaW1wYWN0OiBbXSxcbiAgICBxdWFsaXR5OiBbXSxcbiAgICBvdGhlcjogW10sXG4gIH07XG5cbiAgZm9yIChjb25zdCBjbGFpbSBvZiBjbGFpbXNMaXN0KSB7XG4gICAgZ3JvdXBzW2NsYWltLmNsYWltQ2F0ZWdvcnldLnB1c2goY2xhaW0pO1xuICB9XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn1cbiJdfQ==