genassist-chat-react 1.0.15 → 1.0.16

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.
@@ -418,13 +418,25 @@ var ChatService = /** @class */ (function () {
418
418
  if (Array.isArray(data.payload)) {
419
419
  var messages = data.payload;
420
420
  // Adjust timestamps to be relative to conversation start
421
+ // Also normalize message_id field (backend might send 'id' instead of 'message_id')
421
422
  var adjustedMessages = messages
422
- .map(function (msg) { return _this.adjustMessageTimestamps(msg); })
423
+ .map(function (msg) {
424
+ var adjusted = _this.adjustMessageTimestamps(msg);
425
+ // Normalize: if backend sends 'id', use it as 'message_id'
426
+ if (!adjusted.message_id && msg.id) {
427
+ adjusted.message_id = msg.id;
428
+ }
429
+ return adjusted;
430
+ })
423
431
  .filter(function (msg) { return msg.speaker !== "customer"; });
424
432
  adjustedMessages.forEach(_this.messageHandler);
425
433
  }
426
434
  else {
427
435
  var adjustedMessage = _this.adjustMessageTimestamps(data.payload);
436
+ // Normalize: if backend sends 'id', use it as 'message_id'
437
+ if (!adjustedMessage.message_id && data.payload.id) {
438
+ adjustedMessage.message_id = data.payload.id;
439
+ }
428
440
  if (adjustedMessage.speaker !== "customer") {
429
441
  _this.messageHandler(adjustedMessage);
430
442
  }
@@ -529,28 +541,37 @@ var ChatService = /** @class */ (function () {
529
541
  // Add feedback to a specific agent message in the conversation
530
542
  ChatService.prototype.addFeedback = function (messageId, feedback, feedback_message) {
531
543
  return __awaiter(this, void 0, void 0, function () {
532
- var error_4;
533
- return __generator(this, function (_a) {
534
- switch (_a.label) {
544
+ var url, payload, error_4;
545
+ var _a, _b;
546
+ return __generator(this, function (_c) {
547
+ switch (_c.label) {
535
548
  case 0:
536
- if (!this.conversationId) {
537
- throw new Error("Conversation not started");
549
+ if (!messageId) {
550
+ throw new Error("Message ID is required for feedback");
538
551
  }
539
- _a.label = 1;
552
+ _c.label = 1;
540
553
  case 1:
541
- _a.trys.push([1, 3, , 4]);
542
- return [4 /*yield*/, axios.patch("".concat(this.baseUrl, "/api/conversations/message/add-feedback/").concat(this.conversationId), {
543
- message_id: messageId,
544
- feedback: feedback,
545
- feedback_message: feedback_message,
546
- }, {
554
+ _c.trys.push([1, 3, , 4]);
555
+ url = "".concat(this.baseUrl, "/api/conversations/message/add-feedback/").concat(messageId);
556
+ payload = {
557
+ feedback: feedback,
558
+ };
559
+ if (feedback_message) {
560
+ payload.feedback_message = feedback_message;
561
+ }
562
+ return [4 /*yield*/, axios.patch(url, payload, {
547
563
  headers: __assign({ "x-api-key": this.apiKey, "Content-Type": "application/json" }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
548
564
  })];
549
565
  case 2:
550
- _a.sent();
566
+ _c.sent();
551
567
  return [3 /*break*/, 4];
552
568
  case 3:
553
- error_4 = _a.sent();
569
+ error_4 = _c.sent();
570
+ console.error('Feedback API call failed:', {
571
+ message: error_4.message,
572
+ response: (_a = error_4.response) === null || _a === void 0 ? void 0 : _a.data,
573
+ status: (_b = error_4.response) === null || _b === void 0 ? void 0 : _b.status,
574
+ });
554
575
  throw error_4;
555
576
  case 4: return [2 /*return*/];
556
577
  }
@@ -567,4 +588,4 @@ var ChatService = /** @class */ (function () {
567
588
  return ChatService;
568
589
  }());
569
590
  export { ChatService };
570
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2hhdFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUNMLFlBQVksSUFBSSxTQUFTLEdBRzFCLE1BQU0sV0FBVyxDQUFDO0FBU25CO0lBdUJFLHFCQUNFLE9BQWUsRUFDZixNQUFjLEVBQ2QsUUFBOEIsRUFDOUIsTUFBZTtRQXZCVCxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFDckMsMkJBQXNCLEdBQWtCLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUM5RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQXFCLElBQUksQ0FBQztRQUNuQyxtQkFBYyxHQUE0QyxJQUFJLENBQUM7UUFDL0Qsb0JBQWUsR0FBd0IsSUFBSSxDQUFDO1FBQzVDLHFCQUFnQixHQUF3QixJQUFJLENBQUM7UUFDN0MsMkJBQXNCLEdBRW5CLElBQUksQ0FBQztRQUNSLHVCQUFrQixHQUE4QyxJQUFJLENBQUM7UUFDckUsbUJBQWMsR0FBRyx3QkFBd0IsQ0FBQztRQUMxQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFxQixFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBd0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDLENBQUMscUJBQXFCO1FBVW5FLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FB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VyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQ3hCLGNBQWMsRUFBRSxrQkFBa0IsSUFDL0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUN2RDs2QkFDRixDQUNGLEVBQUE7O3dCQWRELFNBY0MsQ0FBQzs7Ozt3QkFFRixNQUFNLE9BQUssQ0FBQzs7Ozs7S0FFZjtJQUVELDRFQUE0RTtJQUNwRSw2Q0FBdUIsR0FBL0IsVUFBZ0MsT0FBb0I7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCw2QkFDSyxPQUFPLEtBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUM1RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQ3hEO0lBQ0osQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQXJsQkQsSUFxbEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHtcbiAgdzNjd2Vic29ja2V0IGFzIFdlYlNvY2tldCxcbiAgSU1lc3NhZ2VFdmVudCxcbiAgSUNsb3NlRXZlbnQsXG59IGZyb20gXCJ3ZWJzb2NrZXRcIjtcbmltcG9ydCB7XG4gIENoYXRNZXNzYWdlLFxuICBTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlLFxuICBBdHRhY2htZW50LFxuICBBZ2VudFRoaW5raW5nQ29uZmlnLFxuICBBZ2VudFdlbGNvbWVEYXRhLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIENoYXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbnZlcnNhdGlvbkNyZWF0ZVRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsOyAvLyBUcmFjayBjb252ZXJzYXRpb24gc3RhcnQgdGltZVxuICBwcml2YXRlIGlzRmluYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgd2ViU29ja2V0OiBXZWJTb2NrZXQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtZXNzYWdlSGFuZGxlcjogKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0YWtlb3ZlckhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZpbmFsaXplZEhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0ZUhhbmRsZXI6XG4gICAgfCAoKHN0YXRlOiBcImNvbm5lY3RpbmdcIiB8IFwiY29ubmVjdGVkXCIgfCBcImRpc2Nvbm5lY3RlZFwiKSA9PiB2b2lkKVxuICAgIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgd2VsY29tZURhdGFIYW5kbGVyOiAoKGRhdGE6IEFnZW50V2VsY29tZURhdGEpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RvcmFnZUtleUJhc2UgPSBcImdlbmFzc2lzdF9jb252ZXJzYXRpb25cIjtcbiAgcHJpdmF0ZSBwb3NzaWJsZVF1ZXJpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgd2VsY29tZURhdGE6IEFnZW50V2VsY29tZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSB0aGlua2luZ0NvbmZpZzogQWdlbnRUaGlua2luZ0NvbmZpZyA9IHsgcGhyYXNlczogW10sIGRlbGF5TXM6IDEwMDAgfTtcbiAgcHJpdmF0ZSB3ZWxjb21lT2JqZWN0VXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gdG8gcmV2b2tlIG9uIHJlc2V0XG4gIHByaXZhdGUgdGVuYW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgdGVuYW50Pzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwuZW5kc1dpdGgoXCIvXCIpID8gYmFzZVVybC5zbGljZSgwLCAtMSkgOiBiYXNlVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICB0aGlzLnRlbmFudCA9IHRlbmFudDtcbiAgICAvLyBUcnkgdG8gbG9hZCBhIHNhdmVkIGNvbnZlcnNhdGlvbiBmb3IgdGhpcyBhcGlLZXkgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICB0aGlzLmxvYWRTYXZlZENvbnZlcnNhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgLy8gUG9pbnRlciB0byBjdXJyZW50IGNvbnZlcnNhdGlvbiBtZXRhZGF0YSBmb3IgdGhpcyBhcGlLZXlcbiAgICByZXR1cm4gYCR7dGhpcy5zdG9yYWdlS2V5QmFzZX06JHt0aGlzLmFwaUtleX1gO1xuICB9XG5cbiAgc2V0TWVzc2FnZUhhbmRsZXIoaGFuZGxlcjogKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRUYWtlb3ZlckhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudGFrZW92ZXJIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIHNldEZpbmFsaXplZEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuZmluYWxpemVkSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRDb25uZWN0aW9uU3RhdGVIYW5kbGVyKFxuICAgIGhhbmRsZXI6IChzdGF0ZTogXCJjb25uZWN0aW5nXCIgfCBcImNvbm5lY3RlZFwiIHwgXCJkaXNjb25uZWN0ZWRcIikgPT4gdm9pZFxuICApIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0V2VsY29tZURhdGFIYW5kbGVyKGhhbmRsZXI6ICgoZGF0YTogQWdlbnRXZWxjb21lRGF0YSkgPT4gdm9pZCkgfCBudWxsKSB7XG4gICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0UG9zc2libGVRdWVyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wb3NzaWJsZVF1ZXJpZXM7XG4gIH1cblxuICBnZXRXZWxjb21lRGF0YSgpOiBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy53ZWxjb21lRGF0YTtcbiAgfVxuXG4gIGdldFRoaW5raW5nQ29uZmlnKCk6IEFnZW50VGhpbmtpbmdDb25maWcge1xuICAgIHJldHVybiB0aGlzLnRoaW5raW5nQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBzYXZlZCBjb252ZXJzYXRpb24gSUQgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgbG9hZFNhdmVkQ29udmVyc2F0aW9uKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgc2F2ZWRDb252ZXJzYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldFN0b3JhZ2VLZXkoKSk7XG4gICAgICAvLyBCYWNrd2FyZC1jb21wYXQ6IGNoZWNrIG9sZCB1bnNjb3BlZCBrZXkgaWYgc2NvcGVkIG9uZSBtaXNzaW5nXG4gICAgICBpZiAoIXNhdmVkQ29udmVyc2F0aW9uKSB7XG4gICAgICAgIHNhdmVkQ29udmVyc2F0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5QmFzZSk7XG4gICAgICB9XG4gICAgICBpZiAoc2F2ZWRDb252ZXJzYXRpb24pIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIGNyZWF0ZVRpbWUsXG4gICAgICAgICAgaXNGaW5hbGl6ZWQsXG4gICAgICAgICAgcG9zc2libGVRdWVyaWVzLFxuICAgICAgICAgIHdlbGNvbWVEYXRhLFxuICAgICAgICAgIHRoaW5raW5nQ29uZmlnLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgIH0gPSBKU09OLnBhcnNlKHNhdmVkQ29udmVyc2F0aW9uKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBjcmVhdGVUaW1lO1xuICAgICAgICB0aGlzLmlzRmluYWxpemVkID0gaXNGaW5hbGl6ZWQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMucG9zc2libGVRdWVyaWVzID0gQXJyYXkuaXNBcnJheShwb3NzaWJsZVF1ZXJpZXMpXG4gICAgICAgICAgPyBwb3NzaWJsZVF1ZXJpZXNcbiAgICAgICAgICA6IFtdO1xuICAgICAgICB0aGlzLndlbGNvbWVEYXRhID0gd2VsY29tZURhdGEgfHwge307XG4gICAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5wb3NzaWJsZVF1ZXJpZXMpIHtcbiAgICAgICAgICB0aGlzLndlbGNvbWVEYXRhLnBvc3NpYmxlUXVlcmllcyA9IHRoaXMucG9zc2libGVRdWVyaWVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcgPSB7XG4gICAgICAgICAgcGhyYXNlczogKHRoaW5raW5nQ29uZmlnICYmIHRoaW5raW5nQ29uZmlnLnBocmFzZXMpIHx8IFtdLFxuICAgICAgICAgIGRlbGF5TXM6XG4gICAgICAgICAgICB0aGlua2luZ0NvbmZpZyAmJiB0eXBlb2YgdGhpbmtpbmdDb25maWcuZGVsYXlNcyA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICA/IHRoaW5raW5nQ29uZmlnLmRlbGF5TXNcbiAgICAgICAgICAgICAgOiAxMDAwLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFnZW50SWQgPSBhZ2VudElkO1xuICAgICAgICBpZiAoIXRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgJiYgdGhpcy5hZ2VudElkKSB7XG4gICAgICAgICAgdGhpcy5mZXRjaFdlbGNvbWVJbWFnZSh0aGlzLmFnZW50SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLndlbGNvbWVEYXRhSGFuZGxlcikge1xuICAgICAgICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyKHRoaXMud2VsY29tZURhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBJRCB0byBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnZlcnNhdGlvbigpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY29udmVyc2F0aW9uSWQgJiYgdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbkRhdGEgPSB7XG4gICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXG4gICAgICAgICAgY3JlYXRlVGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLFxuICAgICAgICAgIGlzRmluYWxpemVkOiB0aGlzLmlzRmluYWxpemVkLFxuICAgICAgICAgIHBvc3NpYmxlUXVlcmllczogdGhpcy5wb3NzaWJsZVF1ZXJpZXMsXG4gICAgICAgICAgd2VsY29tZURhdGE6IHtcbiAgICAgICAgICAgIC4uLnRoaXMud2VsY29tZURhdGEsXG4gICAgICAgICAgICBpbWFnZVVybDpcbiAgICAgICAgICAgICAgdGhpcy53ZWxjb21lT2JqZWN0VXJsICYmXG4gICAgICAgICAgICAgIHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgJiZcbiAgICAgICAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybC5zdGFydHNXaXRoKFwiYmxvYjpcIilcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgfHwgbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaW5raW5nQ29uZmlnOiB0aGlzLnRoaW5raW5nQ29uZmlnLFxuICAgICAgICAgIGFnZW50SWQ6IHRoaXMuYWdlbnRJZCxcbiAgICAgICAgfTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KGNvbnZlcnNhdGlvbkRhdGEpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBieSBjbGVhcmluZyB0aGUgSUQgYW5kIHdlYnNvY2tldFxuICAgKi9cbiAgcmVzZXRDb252ZXJzYXRpb24oKTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24gaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy53ZWJTb2NrZXQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIHRoZSBjb252ZXJzYXRpb24gSURcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gbnVsbDtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBudWxsO1xuICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8vIENsZWFyIHBvc3NpYmxlIHF1ZXJpZXNcbiAgICB0aGlzLnBvc3NpYmxlUXVlcmllcyA9IFtdO1xuICAgIHRoaXMud2VsY29tZURhdGEgPSB7fTtcbiAgICB0aGlzLnRoaW5raW5nQ29uZmlnID0geyBwaHJhc2VzOiBbXSwgZGVsYXlNczogMTAwMCB9O1xuICAgIGlmICh0aGlzLndlbGNvbWVPYmplY3RVcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy53ZWxjb21lT2JqZWN0VXJsKTtcbiAgICAgIH0gY2F0Y2gge31cbiAgICAgIHRoaXMud2VsY29tZU9iamVjdFVybCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuYWdlbnRJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIFJlbW92ZSBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlcmUncyBhIGN1cnJlbnQgY29udmVyc2F0aW9uXG4gICAqL1xuICBoYXNBY3RpdmVDb252ZXJzYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIElEXG4gICAqL1xuICBnZXRDb252ZXJzYXRpb25JZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgfVxuXG4gIGlzQ29udmVyc2F0aW9uRmluYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRmluYWxpemVkO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDb252ZXJzYXRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgICByZWNvcmRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBkYXRhX3NvdXJjZV9pZDogXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGFkYXRhKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5Lm1ldGFkYXRhID0gdGhpcy5tZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL2luLXByb2dyZXNzL3N0YXJ0YCxcbiAgICAgICAgcmVxdWVzdEJvZHksXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IHJlc3BvbnNlLmRhdGEuY29udmVyc2F0aW9uX2lkO1xuICAgICAgLy8gU3RvcmUgY29udmVyc2F0aW9uIGNyZWF0ZSB0aW1lICh1c2UgZnJvbSByZXNwb25zZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjdXJyZW50IHRpbWUpXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSByZXNwb25zZS5kYXRhLmNyZWF0ZV90aW1lXG4gICAgICAgID8gcmVzcG9uc2UuZGF0YS5jcmVhdGVfdGltZSAvIDEwMDBcbiAgICAgICAgOiBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSBmYWxzZTtcblxuICAgICAgLy8gU3RvcmUgcG9zc2libGUgcXVlcmllcyBpZiBhdmFpbGFibGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5hZ2VudF9wb3NzaWJsZV9xdWVyaWVzICYmXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuYWdlbnRfcG9zc2libGVfcXVlcmllcy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wb3NzaWJsZVF1ZXJpZXMgPSByZXNwb25zZS5kYXRhLmFnZW50X3Bvc3NpYmxlX3F1ZXJpZXMuZmlsdGVyKFxuICAgICAgICAgIChxdWVyeSkgPT4gdHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiICYmIHF1ZXJ5LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFueURhdGE6IGFueSA9IHJlc3BvbnNlLmRhdGEgYXMgYW55O1xuICAgICAgY29uc3QgYWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gYW55RGF0YS5hZ2VudF9pZDtcbiAgICAgIHRoaXMuYWdlbnRJZCA9IGFnZW50SWQ7XG4gICAgICBjb25zdCB3ZWxjb21lVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGFueURhdGEuYWdlbnRfd2VsY29tZV90aXRsZTtcbiAgICAgIGNvbnN0IHdlbGNvbWVJbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgICAgYW55RGF0YS5hZ2VudF93ZWxjb21lX2ltYWdlX3VybDtcbiAgICAgIGNvbnN0IHRoaW5raW5nUGhyYXNlczogc3RyaW5nW10gfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZXM7XG4gICAgICBjb25zdCB0aGlua2luZ0RlbGF5U2VjOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheTtcblxuICAgICAgdGhpcy53ZWxjb21lRGF0YSA9IHtcbiAgICAgICAgdGl0bGU6IHdlbGNvbWVUaXRsZSB8fCBudWxsLFxuICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICBpbWFnZVVybDogd2VsY29tZUltYWdlVXJsIHx8IG51bGwsXG4gICAgICAgIHBvc3NpYmxlUXVlcmllczogdGhpcy5wb3NzaWJsZVF1ZXJpZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlua2luZ1BocmFzZXMpICYmIHRoaW5raW5nUGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcucGhyYXNlcyA9IHRoaW5raW5nUGhyYXNlcztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpbmtpbmdEZWxheVNlYyA9PT0gXCJudW1iZXJcIiAmJiB0aGlua2luZ0RlbGF5U2VjID49IDApIHtcbiAgICAgICAgdGhpcy50aGlua2luZ0NvbmZpZy5kZWxheU1zID0gTWF0aC5tYXgoXG4gICAgICAgICAgMjUwLFxuICAgICAgICAgIE1hdGgucm91bmQodGhpbmtpbmdEZWxheVNlYyAqIDEwMDApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCAmJiBhZ2VudElkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hXZWxjb21lSW1hZ2UoYWdlbnRJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgYWdlbnQgd2VsY29tZSBtZXNzYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYWdlbnRfd2VsY29tZV9tZXNzYWdlICYmIHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgIGNvbnN0IHdlbGNvbWVNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSwgLy8gUmVsYXRpdmUgdG8gY29udmVyc2F0aW9uIHN0YXJ0XG4gICAgICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgICAgIHNwZWFrZXI6IFwiYWdlbnRcIixcbiAgICAgICAgICB0ZXh0OiByZXNwb25zZS5kYXRhLmFnZW50X3dlbGNvbWVfbWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5hZ2VudF93ZWxjb21lX21lc3NhZ2U7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIod2VsY29tZU1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2F2ZUNvbnZlcnNhdGlvbigpO1xuICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5jb252ZXJzYXRpb25faWQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXSxcbiAgICBleHRyYU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQgfHwgIXRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29udmVyc2F0aW9uIG5vdCBzdGFydGVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgIGNvbnN0IGNoYXRNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICBzdGFydF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgc3BlYWtlcjogXCJjdXN0b21lclwiLFxuICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoY2hhdE1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgICBtZXNzYWdlczogW2NoYXRNZXNzYWdlXSxcbiAgICAgICAgcmVjb3JkZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIEluY2x1ZGUgbWV0YWRhdGFcbiAgICAgIGNvbnN0IG1lcmdlZE1ldGFkYXRhID0ge1xuICAgICAgICAuLi4odGhpcy5tZXRhZGF0YSB8fCB7fSksXG4gICAgICAgIC4uLihleHRyYU1ldGFkYXRhIHx8IHt9KSxcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXMobWVyZ2VkTWV0YWRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdEJvZHkubWV0YWRhdGEgPSBtZXJnZWRNZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYXhpb3MucGF0Y2goXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2NvbnZlcnNhdGlvbnMvaW4tcHJvZ3Jlc3MvdXBkYXRlLyR7dGhpcy5jb252ZXJzYXRpb25JZH1gLFxuICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAuLi4odGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIGFnZW50IGluYWN0aXZlIGVycm9yXG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yLnJlc3BvbnNlICYmXG4gICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEgJiZcbiAgICAgICAgZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcl9rZXkgPT09IFwiQUdFTlRfSU5BQ1RJVkVcIlxuICAgICAgKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZXNzYWdlIGZvciB0aGUgYWdlbnQgaW5hY3RpdmUgZXJyb3JcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgICAgICAgIGVuZF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxLFxuICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBhZ2VudCBpcyBjdXJyZW50bHkgb2ZmbGluZSwgcGxlYXNlIGNoZWNrIGJhY2sgbGF0ZXIuIFRoYW5rIHlvdSFcIixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCB0aHJvdyB0aGUgZXJyb3Igc2luY2Ugd2UgaGFuZGxlZCBpdCB3aXRoIGEgbWVzc2FnZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoY2hhdElkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBQcm9taXNlPHsgZmlsZVVybDogc3RyaW5nIH0+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnNhdGlvbiBub3Qgc3RhcnRlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImNoYXRfaWRcIiwgY2hhdElkKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGZpbGVVcmw6IHN0cmluZyB9PihcbiAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hcGkvZ2VuYWdlbnQva25vd2xlZGdlL3VwbG9hZC1jaGF0LWZpbGVgLFxuICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgICAgICAgICAuLi4odGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3RXZWJTb2NrZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29udmVyc2F0aW9uIElEIGlzIHJlcXVpcmVkIGZvciBXZWJTb2NrZXQgY29ubmVjdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKSB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIoXCJjb25uZWN0aW5nXCIpO1xuICAgIGxldCB3c1VybCA9IGAke3RoaXMuYmFzZVVybC5yZXBsYWNlKFwiaHR0cFwiLCBcIndzXCIpfS9hcGkvY29udmVyc2F0aW9ucy93cy8ke1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZFxuICAgIH0/YXBpX2tleT0ke1xuICAgICAgdGhpcy5hcGlLZXlcbiAgICB9Jmxhbmc9ZW4mdG9waWNzPW1lc3NhZ2UmdG9waWNzPXRha2VvdmVyJnRvcGljcz1maW5hbGl6ZWA7XG4gICAgXG4gICAgLy8gQWRkIHRlbmFudCBhcyBxdWVyeSBwYXJhbWV0ZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy50ZW5hbnQpIHtcbiAgICAgIHdzVXJsICs9IGAmWC1UZW5hbnQtSWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy50ZW5hbnQpfWA7XG4gICAgfVxuICAgIFxuICAgIC8vIEFsc28gdHJ5IHRvIHBhc3MgdGVuYW50IGFzIGhlYWRlciAoZm9yIE5vZGUuanMgZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBpdClcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLndlYlNvY2tldCA9IG5ldyBXZWJTb2NrZXQod3NVcmwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcblxuXG4gICAgdGhpcy53ZWJTb2NrZXQub25vcGVuID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcikgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiY29ubmVjdGVkXCIpO1xuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQ6IElNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gXCJtZXNzYWdlXCIgJiYgdGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucGF5bG9hZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gZGF0YS5wYXlsb2FkIGFzIENoYXRNZXNzYWdlW107XG4gICAgICAgICAgICAvLyBBZGp1c3QgdGltZXN0YW1wcyB0byBiZSByZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTWVzc2FnZXMgPSBtZXNzYWdlc1xuICAgICAgICAgICAgICAubWFwKChtc2cpID0+IHRoaXMuYWRqdXN0TWVzc2FnZVRpbWVzdGFtcHMobXNnKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigobXNnKSA9PiBtc2cuc3BlYWtlciAhPT0gXCJjdXN0b21lclwiKTtcbiAgICAgICAgICAgIGFkanVzdGVkTWVzc2FnZXMuZm9yRWFjaCh0aGlzLm1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWRNZXNzYWdlID0gdGhpcy5hZGp1c3RNZXNzYWdlVGltZXN0YW1wcyhcbiAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkIGFzIENoYXRNZXNzYWdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGFkanVzdGVkTWVzc2FnZS5zcGVha2VyICE9PSBcImN1c3RvbWVyXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlcihhZGp1c3RlZE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09IFwidGFrZW92ZXJcIikge1xuICAgICAgICAgIC8vIEhhbmRsZSB0YWtlb3ZlciBldmVudFxuICAgICAgICAgIC8vIENyZWF0ZSBzcGVjaWFsIG1lc3NhZ2UgZm9yIHRoZSB0YWtlb3ZlciBpbmRpY2F0b3JcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgICAgICBjb25zdCB0YWtlb3Zlck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgICAgICBzdGFydF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgZW5kX3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lICsgMC4wMVxuICAgICAgICAgICAgICAgIDogMC4wMSxcbiAgICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiU3VwZXJ2aXNvciB0b29rIG92ZXJcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKHRha2VvdmVyTWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2FsbCB0aGUgdGFrZW92ZXIgaGFuZGxlciBpZiBwcm92aWRlZFxuICAgICAgICAgIGlmICh0aGlzLnRha2VvdmVySGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy50YWtlb3ZlckhhbmRsZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09PSBcImZpbmFsaXplXCIpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgZmluYWxpemVkIGV2ZW50XG4gICAgICAgICAgLy8gQ3JlYXRlIHNwZWNpYWwgbWVzc2FnZSBmb3IgdGhlIGZpbmFsaXplZCBpbmRpY2F0b3JcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgICAgICBjb25zdCBmaW5hbGl6ZWRNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICAgICAgc3RhcnRfdGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgPyBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgIGVuZF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDFcbiAgICAgICAgICAgICAgICA6IDAuMDEsXG4gICAgICAgICAgICAgIHNwZWFrZXI6IFwic3BlY2lhbFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcIkNvbnZlcnNhdGlvbiBGaW5hbGl6ZWRcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGZpbmFsaXplZE1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENhbGwgdGhlIGZpbmFsaXplZCBoYW5kbGVyIGlmIHByb3ZpZGVkXG4gICAgICAgICAgaWYgKHRoaXMuZmluYWxpemVkSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5maW5hbGl6ZWRIYW5kbGVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2F2ZUNvbnZlcnNhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy53ZWJTb2NrZXQub25lcnJvciA9IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIpXG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcihcImRpc2Nvbm5lY3RlZFwiKTtcbiAgICB9O1xuXG4gICAgdGhpcy53ZWJTb2NrZXQub25jbG9zZSA9IChldmVudDogSUNsb3NlRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIpXG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcihcImRpc2Nvbm5lY3RlZFwiKTtcbiAgICB9O1xuICB9XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53ZWJTb2NrZXQpIHtcbiAgICAgIHRoaXMud2ViU29ja2V0LmNsb3NlKCk7XG4gICAgICB0aGlzLndlYlNvY2tldCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFdlbGNvbWVJbWFnZShhZ2VudElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hcGkvZ2VuYWdlbnQvYWdlbnRzL2NvbmZpZ3MvJHthZ2VudElkfS93ZWxjb21lLWltYWdlYCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZVR5cGU6IFwiYmxvYlwiLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgY29uc3QgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2VSZXNwb25zZS5kYXRhKTtcbiAgICAgIHRoaXMud2VsY29tZU9iamVjdFVybCA9IGJsb2JVcmw7XG4gICAgICB0aGlzLndlbGNvbWVEYXRhLmltYWdlVXJsID0gYmxvYlVybDtcbiAgICAgIGlmICh0aGlzLndlbGNvbWVEYXRhSGFuZGxlcikge1xuICAgICAgICB0aGlzLndlbGNvbWVEYXRhSGFuZGxlcih0aGlzLndlbGNvbWVEYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBmZWVkYmFjayB0byBhIHNwZWNpZmljIGFnZW50IG1lc3NhZ2UgaW4gdGhlIGNvbnZlcnNhdGlvblxuICBhc3luYyBhZGRGZWVkYmFjayhcbiAgICBtZXNzYWdlSWQ6IHN0cmluZyxcbiAgICBmZWVkYmFjazogXCJnb29kXCIgfCBcImJhZFwiLFxuICAgIGZlZWRiYWNrX21lc3NhZ2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb252ZXJzYXRpb24gbm90IHN0YXJ0ZWRcIik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBhdGNoKFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL21lc3NhZ2UvYWRkLWZlZWRiYWNrLyR7dGhpcy5jb252ZXJzYXRpb25JZH1gLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZUlkLFxuICAgICAgICAgIGZlZWRiYWNrLFxuICAgICAgICAgIGZlZWRiYWNrX21lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBhZGp1c3QgbWVzc2FnZSB0aW1lc3RhbXBzIHJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICBwcml2YXRlIGFkanVzdE1lc3NhZ2VUaW1lc3RhbXBzKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogQ2hhdE1lc3NhZ2Uge1xuICAgIGlmICghdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIHN0YXJ0X3RpbWU6IG1lc3NhZ2Uuc3RhcnRfdGltZSAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgIGVuZF90aW1lOiBtZXNzYWdlLmVuZF90aW1lIC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
591
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2hhdFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUNMLFlBQVksSUFBSSxTQUFTLEdBRzFCLE1BQU0sV0FBVyxDQUFDO0FBU25CO0lBdUJFLHFCQUNFLE9BQWUsRUFDZixNQUFjLEVBQ2QsUUFBOEIsRUFDOUIsTUFBZTtRQXZCVCxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFDckMsMkJBQXNCLEdBQWtCLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUM5RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQXFCLElBQUksQ0FBQztRQUNuQyxtQkFBYyxHQUE0QyxJQUFJLENBQUM7UUFDL0Qsb0JBQWUsR0FBd0IsSUFBSSxDQUFDO1FBQzVDLHFCQUFnQixHQUF3QixJQUFJLENBQUM7UUFDN0MsMkJBQXNCLEdBRW5CLElBQUksQ0FBQztRQUNSLHVCQUFrQixHQUE4QyxJQUFJLENBQUM7UUFDckUsbUJBQWMsR0FBRyx3QkFBd0IsQ0FBQztRQUMxQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFxQixFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBd0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDLENBQUMscUJBQXFCO1FBVW5FLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FB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Q2pDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCw2QkFDSyxPQUFPLEtBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUM1RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQ3hEO0lBQ0osQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQTdtQkQsSUE2bUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHtcbiAgdzNjd2Vic29ja2V0IGFzIFdlYlNvY2tldCxcbiAgSU1lc3NhZ2VFdmVudCxcbiAgSUNsb3NlRXZlbnQsXG59IGZyb20gXCJ3ZWJzb2NrZXRcIjtcbmltcG9ydCB7XG4gIENoYXRNZXNzYWdlLFxuICBTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlLFxuICBBdHRhY2htZW50LFxuICBBZ2VudFRoaW5raW5nQ29uZmlnLFxuICBBZ2VudFdlbGNvbWVEYXRhLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIENoYXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbnZlcnNhdGlvbkNyZWF0ZVRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsOyAvLyBUcmFjayBjb252ZXJzYXRpb24gc3RhcnQgdGltZVxuICBwcml2YXRlIGlzRmluYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgd2ViU29ja2V0OiBXZWJTb2NrZXQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtZXNzYWdlSGFuZGxlcjogKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0YWtlb3ZlckhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZpbmFsaXplZEhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0ZUhhbmRsZXI6XG4gICAgfCAoKHN0YXRlOiBcImNvbm5lY3RpbmdcIiB8IFwiY29ubmVjdGVkXCIgfCBcImRpc2Nvbm5lY3RlZFwiKSA9PiB2b2lkKVxuICAgIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgd2VsY29tZURhdGFIYW5kbGVyOiAoKGRhdGE6IEFnZW50V2VsY29tZURhdGEpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RvcmFnZUtleUJhc2UgPSBcImdlbmFzc2lzdF9jb252ZXJzYXRpb25cIjtcbiAgcHJpdmF0ZSBwb3NzaWJsZVF1ZXJpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgd2VsY29tZURhdGE6IEFnZW50V2VsY29tZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSB0aGlua2luZ0NvbmZpZzogQWdlbnRUaGlua2luZ0NvbmZpZyA9IHsgcGhyYXNlczogW10sIGRlbGF5TXM6IDEwMDAgfTtcbiAgcHJpdmF0ZSB3ZWxjb21lT2JqZWN0VXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gdG8gcmV2b2tlIG9uIHJlc2V0XG4gIHByaXZhdGUgdGVuYW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgdGVuYW50Pzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwuZW5kc1dpdGgoXCIvXCIpID8gYmFzZVVybC5zbGljZSgwLCAtMSkgOiBiYXNlVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICB0aGlzLnRlbmFudCA9IHRlbmFudDtcbiAgICAvLyBUcnkgdG8gbG9hZCBhIHNhdmVkIGNvbnZlcnNhdGlvbiBmb3IgdGhpcyBhcGlLZXkgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICB0aGlzLmxvYWRTYXZlZENvbnZlcnNhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgLy8gUG9pbnRlciB0byBjdXJyZW50IGNvbnZlcnNhdGlvbiBtZXRhZGF0YSBmb3IgdGhpcyBhcGlLZXlcbiAgICByZXR1cm4gYCR7dGhpcy5zdG9yYWdlS2V5QmFzZX06JHt0aGlzLmFwaUtleX1gO1xuICB9XG5cbiAgc2V0TWVzc2FnZUhhbmRsZXIoaGFuZGxlcjogKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRUYWtlb3ZlckhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudGFrZW92ZXJIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIHNldEZpbmFsaXplZEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuZmluYWxpemVkSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRDb25uZWN0aW9uU3RhdGVIYW5kbGVyKFxuICAgIGhhbmRsZXI6IChzdGF0ZTogXCJjb25uZWN0aW5nXCIgfCBcImNvbm5lY3RlZFwiIHwgXCJkaXNjb25uZWN0ZWRcIikgPT4gdm9pZFxuICApIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0V2VsY29tZURhdGFIYW5kbGVyKGhhbmRsZXI6ICgoZGF0YTogQWdlbnRXZWxjb21lRGF0YSkgPT4gdm9pZCkgfCBudWxsKSB7XG4gICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0UG9zc2libGVRdWVyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wb3NzaWJsZVF1ZXJpZXM7XG4gIH1cblxuICBnZXRXZWxjb21lRGF0YSgpOiBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy53ZWxjb21lRGF0YTtcbiAgfVxuXG4gIGdldFRoaW5raW5nQ29uZmlnKCk6IEFnZW50VGhpbmtpbmdDb25maWcge1xuICAgIHJldHVybiB0aGlzLnRoaW5raW5nQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBzYXZlZCBjb252ZXJzYXRpb24gSUQgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgbG9hZFNhdmVkQ29udmVyc2F0aW9uKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgc2F2ZWRDb252ZXJzYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldFN0b3JhZ2VLZXkoKSk7XG4gICAgICAvLyBCYWNrd2FyZC1jb21wYXQ6IGNoZWNrIG9sZCB1bnNjb3BlZCBrZXkgaWYgc2NvcGVkIG9uZSBtaXNzaW5nXG4gICAgICBpZiAoIXNhdmVkQ29udmVyc2F0aW9uKSB7XG4gICAgICAgIHNhdmVkQ29udmVyc2F0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5QmFzZSk7XG4gICAgICB9XG4gICAgICBpZiAoc2F2ZWRDb252ZXJzYXRpb24pIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIGNyZWF0ZVRpbWUsXG4gICAgICAgICAgaXNGaW5hbGl6ZWQsXG4gICAgICAgICAgcG9zc2libGVRdWVyaWVzLFxuICAgICAgICAgIHdlbGNvbWVEYXRhLFxuICAgICAgICAgIHRoaW5raW5nQ29uZmlnLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgIH0gPSBKU09OLnBhcnNlKHNhdmVkQ29udmVyc2F0aW9uKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBjcmVhdGVUaW1lO1xuICAgICAgICB0aGlzLmlzRmluYWxpemVkID0gaXNGaW5hbGl6ZWQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMucG9zc2libGVRdWVyaWVzID0gQXJyYXkuaXNBcnJheShwb3NzaWJsZVF1ZXJpZXMpXG4gICAgICAgICAgPyBwb3NzaWJsZVF1ZXJpZXNcbiAgICAgICAgICA6IFtdO1xuICAgICAgICB0aGlzLndlbGNvbWVEYXRhID0gd2VsY29tZURhdGEgfHwge307XG4gICAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5wb3NzaWJsZVF1ZXJpZXMpIHtcbiAgICAgICAgICB0aGlzLndlbGNvbWVEYXRhLnBvc3NpYmxlUXVlcmllcyA9IHRoaXMucG9zc2libGVRdWVyaWVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcgPSB7XG4gICAgICAgICAgcGhyYXNlczogKHRoaW5raW5nQ29uZmlnICYmIHRoaW5raW5nQ29uZmlnLnBocmFzZXMpIHx8IFtdLFxuICAgICAgICAgIGRlbGF5TXM6XG4gICAgICAgICAgICB0aGlua2luZ0NvbmZpZyAmJiB0eXBlb2YgdGhpbmtpbmdDb25maWcuZGVsYXlNcyA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgICA/IHRoaW5raW5nQ29uZmlnLmRlbGF5TXNcbiAgICAgICAgICAgICAgOiAxMDAwLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFnZW50SWQgPSBhZ2VudElkO1xuICAgICAgICBpZiAoIXRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgJiYgdGhpcy5hZ2VudElkKSB7XG4gICAgICAgICAgdGhpcy5mZXRjaFdlbGNvbWVJbWFnZSh0aGlzLmFnZW50SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLndlbGNvbWVEYXRhSGFuZGxlcikge1xuICAgICAgICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyKHRoaXMud2VsY29tZURhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBJRCB0byBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnZlcnNhdGlvbigpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY29udmVyc2F0aW9uSWQgJiYgdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbkRhdGEgPSB7XG4gICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXG4gICAgICAgICAgY3JlYXRlVGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLFxuICAgICAgICAgIGlzRmluYWxpemVkOiB0aGlzLmlzRmluYWxpemVkLFxuICAgICAgICAgIHBvc3NpYmxlUXVlcmllczogdGhpcy5wb3NzaWJsZVF1ZXJpZXMsXG4gICAgICAgICAgd2VsY29tZURhdGE6IHtcbiAgICAgICAgICAgIC4uLnRoaXMud2VsY29tZURhdGEsXG4gICAgICAgICAgICBpbWFnZVVybDpcbiAgICAgICAgICAgICAgdGhpcy53ZWxjb21lT2JqZWN0VXJsICYmXG4gICAgICAgICAgICAgIHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgJiZcbiAgICAgICAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybC5zdGFydHNXaXRoKFwiYmxvYjpcIilcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgfHwgbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaW5raW5nQ29uZmlnOiB0aGlzLnRoaW5raW5nQ29uZmlnLFxuICAgICAgICAgIGFnZW50SWQ6IHRoaXMuYWdlbnRJZCxcbiAgICAgICAgfTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KGNvbnZlcnNhdGlvbkRhdGEpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBieSBjbGVhcmluZyB0aGUgSUQgYW5kIHdlYnNvY2tldFxuICAgKi9cbiAgcmVzZXRDb252ZXJzYXRpb24oKTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24gaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy53ZWJTb2NrZXQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIHRoZSBjb252ZXJzYXRpb24gSURcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gbnVsbDtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBudWxsO1xuICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8vIENsZWFyIHBvc3NpYmxlIHF1ZXJpZXNcbiAgICB0aGlzLnBvc3NpYmxlUXVlcmllcyA9IFtdO1xuICAgIHRoaXMud2VsY29tZURhdGEgPSB7fTtcbiAgICB0aGlzLnRoaW5raW5nQ29uZmlnID0geyBwaHJhc2VzOiBbXSwgZGVsYXlNczogMTAwMCB9O1xuICAgIGlmICh0aGlzLndlbGNvbWVPYmplY3RVcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy53ZWxjb21lT2JqZWN0VXJsKTtcbiAgICAgIH0gY2F0Y2gge31cbiAgICAgIHRoaXMud2VsY29tZU9iamVjdFVybCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuYWdlbnRJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIFJlbW92ZSBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlcmUncyBhIGN1cnJlbnQgY29udmVyc2F0aW9uXG4gICAqL1xuICBoYXNBY3RpdmVDb252ZXJzYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIElEXG4gICAqL1xuICBnZXRDb252ZXJzYXRpb25JZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgfVxuXG4gIGlzQ29udmVyc2F0aW9uRmluYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRmluYWxpemVkO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDb252ZXJzYXRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgICByZWNvcmRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBkYXRhX3NvdXJjZV9pZDogXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGFkYXRhKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5Lm1ldGFkYXRhID0gdGhpcy5tZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL2luLXByb2dyZXNzL3N0YXJ0YCxcbiAgICAgICAgcmVxdWVzdEJvZHksXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IHJlc3BvbnNlLmRhdGEuY29udmVyc2F0aW9uX2lkO1xuICAgICAgLy8gU3RvcmUgY29udmVyc2F0aW9uIGNyZWF0ZSB0aW1lICh1c2UgZnJvbSByZXNwb25zZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjdXJyZW50IHRpbWUpXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSByZXNwb25zZS5kYXRhLmNyZWF0ZV90aW1lXG4gICAgICAgID8gcmVzcG9uc2UuZGF0YS5jcmVhdGVfdGltZSAvIDEwMDBcbiAgICAgICAgOiBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSBmYWxzZTtcblxuICAgICAgLy8gU3RvcmUgcG9zc2libGUgcXVlcmllcyBpZiBhdmFpbGFibGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5hZ2VudF9wb3NzaWJsZV9xdWVyaWVzICYmXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuYWdlbnRfcG9zc2libGVfcXVlcmllcy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wb3NzaWJsZVF1ZXJpZXMgPSByZXNwb25zZS5kYXRhLmFnZW50X3Bvc3NpYmxlX3F1ZXJpZXMuZmlsdGVyKFxuICAgICAgICAgIChxdWVyeSkgPT4gdHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiICYmIHF1ZXJ5LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFueURhdGE6IGFueSA9IHJlc3BvbnNlLmRhdGEgYXMgYW55O1xuICAgICAgY29uc3QgYWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gYW55RGF0YS5hZ2VudF9pZDtcbiAgICAgIHRoaXMuYWdlbnRJZCA9IGFnZW50SWQ7XG4gICAgICBjb25zdCB3ZWxjb21lVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGFueURhdGEuYWdlbnRfd2VsY29tZV90aXRsZTtcbiAgICAgIGNvbnN0IHdlbGNvbWVJbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgICAgYW55RGF0YS5hZ2VudF93ZWxjb21lX2ltYWdlX3VybDtcbiAgICAgIGNvbnN0IHRoaW5raW5nUGhyYXNlczogc3RyaW5nW10gfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZXM7XG4gICAgICBjb25zdCB0aGlua2luZ0RlbGF5U2VjOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheTtcblxuICAgICAgdGhpcy53ZWxjb21lRGF0YSA9IHtcbiAgICAgICAgdGl0bGU6IHdlbGNvbWVUaXRsZSB8fCBudWxsLFxuICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICBpbWFnZVVybDogd2VsY29tZUltYWdlVXJsIHx8IG51bGwsXG4gICAgICAgIHBvc3NpYmxlUXVlcmllczogdGhpcy5wb3NzaWJsZVF1ZXJpZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlua2luZ1BocmFzZXMpICYmIHRoaW5raW5nUGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcucGhyYXNlcyA9IHRoaW5raW5nUGhyYXNlcztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpbmtpbmdEZWxheVNlYyA9PT0gXCJudW1iZXJcIiAmJiB0aGlua2luZ0RlbGF5U2VjID49IDApIHtcbiAgICAgICAgdGhpcy50aGlua2luZ0NvbmZpZy5kZWxheU1zID0gTWF0aC5tYXgoXG4gICAgICAgICAgMjUwLFxuICAgICAgICAgIE1hdGgucm91bmQodGhpbmtpbmdEZWxheVNlYyAqIDEwMDApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCAmJiBhZ2VudElkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hXZWxjb21lSW1hZ2UoYWdlbnRJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgYWdlbnQgd2VsY29tZSBtZXNzYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYWdlbnRfd2VsY29tZV9tZXNzYWdlICYmIHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgIGNvbnN0IHdlbGNvbWVNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSwgLy8gUmVsYXRpdmUgdG8gY29udmVyc2F0aW9uIHN0YXJ0XG4gICAgICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgICAgIHNwZWFrZXI6IFwiYWdlbnRcIixcbiAgICAgICAgICB0ZXh0OiByZXNwb25zZS5kYXRhLmFnZW50X3dlbGNvbWVfbWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5hZ2VudF93ZWxjb21lX21lc3NhZ2U7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIod2VsY29tZU1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2F2ZUNvbnZlcnNhdGlvbigpO1xuICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5jb252ZXJzYXRpb25faWQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXSxcbiAgICBleHRyYU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQgfHwgIXRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29udmVyc2F0aW9uIG5vdCBzdGFydGVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgIGNvbnN0IGNoYXRNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICBzdGFydF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgc3BlYWtlcjogXCJjdXN0b21lclwiLFxuICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoY2hhdE1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgICBtZXNzYWdlczogW2NoYXRNZXNzYWdlXSxcbiAgICAgICAgcmVjb3JkZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIEluY2x1ZGUgbWV0YWRhdGFcbiAgICAgIGNvbnN0IG1lcmdlZE1ldGFkYXRhID0ge1xuICAgICAgICAuLi4odGhpcy5tZXRhZGF0YSB8fCB7fSksXG4gICAgICAgIC4uLihleHRyYU1ldGFkYXRhIHx8IHt9KSxcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXMobWVyZ2VkTWV0YWRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdEJvZHkubWV0YWRhdGEgPSBtZXJnZWRNZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYXhpb3MucGF0Y2goXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2NvbnZlcnNhdGlvbnMvaW4tcHJvZ3Jlc3MvdXBkYXRlLyR7dGhpcy5jb252ZXJzYXRpb25JZH1gLFxuICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAuLi4odGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIGFnZW50IGluYWN0aXZlIGVycm9yXG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yLnJlc3BvbnNlICYmXG4gICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEgJiZcbiAgICAgICAgZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcl9rZXkgPT09IFwiQUdFTlRfSU5BQ1RJVkVcIlxuICAgICAgKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZXNzYWdlIGZvciB0aGUgYWdlbnQgaW5hY3RpdmUgZXJyb3JcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgICAgICAgIGVuZF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxLFxuICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBhZ2VudCBpcyBjdXJyZW50bHkgb2ZmbGluZSwgcGxlYXNlIGNoZWNrIGJhY2sgbGF0ZXIuIFRoYW5rIHlvdSFcIixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCB0aHJvdyB0aGUgZXJyb3Igc2luY2Ugd2UgaGFuZGxlZCBpdCB3aXRoIGEgbWVzc2FnZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoY2hhdElkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBQcm9taXNlPHsgZmlsZVVybDogc3RyaW5nIH0+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnNhdGlvbiBub3Qgc3RhcnRlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImNoYXRfaWRcIiwgY2hhdElkKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGZpbGVVcmw6IHN0cmluZyB9PihcbiAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hcGkvZ2VuYWdlbnQva25vd2xlZGdlL3VwbG9hZC1jaGF0LWZpbGVgLFxuICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgICAgICAgICAuLi4odGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3RXZWJTb2NrZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29udmVyc2F0aW9uIElEIGlzIHJlcXVpcmVkIGZvciBXZWJTb2NrZXQgY29ubmVjdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKSB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIoXCJjb25uZWN0aW5nXCIpO1xuICAgIGxldCB3c1VybCA9IGAke3RoaXMuYmFzZVVybC5yZXBsYWNlKFwiaHR0cFwiLCBcIndzXCIpfS9hcGkvY29udmVyc2F0aW9ucy93cy8ke1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZFxuICAgIH0/YXBpX2tleT0ke1xuICAgICAgdGhpcy5hcGlLZXlcbiAgICB9Jmxhbmc9ZW4mdG9waWNzPW1lc3NhZ2UmdG9waWNzPXRha2VvdmVyJnRvcGljcz1maW5hbGl6ZWA7XG4gICAgXG4gICAgLy8gQWRkIHRlbmFudCBhcyBxdWVyeSBwYXJhbWV0ZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy50ZW5hbnQpIHtcbiAgICAgIHdzVXJsICs9IGAmWC1UZW5hbnQtSWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy50ZW5hbnQpfWA7XG4gICAgfVxuICAgIFxuICAgIC8vIEFsc28gdHJ5IHRvIHBhc3MgdGVuYW50IGFzIGhlYWRlciAoZm9yIE5vZGUuanMgZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBpdClcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLndlYlNvY2tldCA9IG5ldyBXZWJTb2NrZXQod3NVcmwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcblxuXG4gICAgdGhpcy53ZWJTb2NrZXQub25vcGVuID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcikgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiY29ubmVjdGVkXCIpO1xuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQ6IElNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gXCJtZXNzYWdlXCIgJiYgdGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucGF5bG9hZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gZGF0YS5wYXlsb2FkIGFzIENoYXRNZXNzYWdlW107XG4gICAgICAgICAgICAvLyBBZGp1c3QgdGltZXN0YW1wcyB0byBiZSByZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgICAgICAgIC8vIEFsc28gbm9ybWFsaXplIG1lc3NhZ2VfaWQgZmllbGQgKGJhY2tlbmQgbWlnaHQgc2VuZCAnaWQnIGluc3RlYWQgb2YgJ21lc3NhZ2VfaWQnKVxuICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWRNZXNzYWdlcyA9IG1lc3NhZ2VzXG4gICAgICAgICAgICAgIC5tYXAoKG1zZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkID0gdGhpcy5hZGp1c3RNZXNzYWdlVGltZXN0YW1wcyhtc2cpO1xuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZTogaWYgYmFja2VuZCBzZW5kcyAnaWQnLCB1c2UgaXQgYXMgJ21lc3NhZ2VfaWQnXG4gICAgICAgICAgICAgICAgaWYgKCFhZGp1c3RlZC5tZXNzYWdlX2lkICYmIChtc2cgYXMgYW55KS5pZCkge1xuICAgICAgICAgICAgICAgICAgYWRqdXN0ZWQubWVzc2FnZV9pZCA9IChtc2cgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKChtc2cpID0+IG1zZy5zcGVha2VyICE9PSBcImN1c3RvbWVyXCIpO1xuICAgICAgICAgICAgYWRqdXN0ZWRNZXNzYWdlcy5mb3JFYWNoKHRoaXMubWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhZGp1c3RlZE1lc3NhZ2UgPSB0aGlzLmFkanVzdE1lc3NhZ2VUaW1lc3RhbXBzKFxuICAgICAgICAgICAgICBkYXRhLnBheWxvYWQgYXMgQ2hhdE1lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBOb3JtYWxpemU6IGlmIGJhY2tlbmQgc2VuZHMgJ2lkJywgdXNlIGl0IGFzICdtZXNzYWdlX2lkJ1xuICAgICAgICAgICAgaWYgKCFhZGp1c3RlZE1lc3NhZ2UubWVzc2FnZV9pZCAmJiAoZGF0YS5wYXlsb2FkIGFzIGFueSkuaWQpIHtcbiAgICAgICAgICAgICAgYWRqdXN0ZWRNZXNzYWdlLm1lc3NhZ2VfaWQgPSAoZGF0YS5wYXlsb2FkIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWRqdXN0ZWRNZXNzYWdlLnNwZWFrZXIgIT09IFwiY3VzdG9tZXJcIikge1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGFkanVzdGVkTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gXCJ0YWtlb3ZlclwiKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIHRha2VvdmVyIGV2ZW50XG4gICAgICAgICAgLy8gQ3JlYXRlIHNwZWNpYWwgbWVzc2FnZSBmb3IgdGhlIHRha2VvdmVyIGluZGljYXRvclxuICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRha2VvdmVyTWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICAgICAgICAgIHN0YXJ0X3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgICBlbmRfdGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgPyBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxXG4gICAgICAgICAgICAgICAgOiAwLjAxLFxuICAgICAgICAgICAgICBzcGVha2VyOiBcInNwZWNpYWxcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJTdXBlcnZpc29yIHRvb2sgb3ZlclwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIodGFrZW92ZXJNZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDYWxsIHRoZSB0YWtlb3ZlciBoYW5kbGVyIGlmIHByb3ZpZGVkXG4gICAgICAgICAgaWYgKHRoaXMudGFrZW92ZXJIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRha2VvdmVySGFuZGxlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09IFwiZmluYWxpemVcIikge1xuICAgICAgICAgIC8vIEhhbmRsZSBmaW5hbGl6ZWQgZXZlbnRcbiAgICAgICAgICAvLyBDcmVhdGUgc3BlY2lhbCBtZXNzYWdlIGZvciB0aGUgZmluYWxpemVkIGluZGljYXRvclxuICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsaXplZE1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgICAgICBzdGFydF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgZW5kX3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lICsgMC4wMVxuICAgICAgICAgICAgICAgIDogMC4wMSxcbiAgICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiQ29udmVyc2F0aW9uIEZpbmFsaXplZFwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoZmluYWxpemVkTWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2FsbCB0aGUgZmluYWxpemVkIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAodGhpcy5maW5hbGl6ZWRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmZpbmFsaXplZEhhbmRsZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbmFsaXplZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zYXZlQ29udmVyc2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbmVycm9yID0gKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcilcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiZGlzY29ubmVjdGVkXCIpO1xuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbmNsb3NlID0gKGV2ZW50OiBJQ2xvc2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcilcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiZGlzY29ubmVjdGVkXCIpO1xuICAgIH07XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndlYlNvY2tldCkge1xuICAgICAgdGhpcy53ZWJTb2NrZXQuY2xvc2UoKTtcbiAgICAgIHRoaXMud2ViU29ja2V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoV2VsY29tZUltYWdlKGFnZW50SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9nZW5hZ2VudC9hZ2VudHMvY29uZmlncy8ke2FnZW50SWR9L3dlbGNvbWUtaW1hZ2VgLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJ4LWFwaS1rZXlcIjogdGhpcy5hcGlLZXksXG4gICAgICAgICAgICAuLi4odGhpcy50ZW5hbnQgPyB7IFwiWC1UZW5hbnQtSWRcIjogdGhpcy50ZW5hbnQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogXCJibG9iXCIsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZVJlc3BvbnNlLmRhdGEpO1xuICAgICAgdGhpcy53ZWxjb21lT2JqZWN0VXJsID0gYmxvYlVybDtcbiAgICAgIHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgPSBibG9iVXJsO1xuICAgICAgaWYgKHRoaXMud2VsY29tZURhdGFIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyKHRoaXMud2VsY29tZURhdGEpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGZlZWRiYWNrIHRvIGEgc3BlY2lmaWMgYWdlbnQgbWVzc2FnZSBpbiB0aGUgY29udmVyc2F0aW9uXG4gIGFzeW5jIGFkZEZlZWRiYWNrKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGZlZWRiYWNrOiBcImdvb2RcIiB8IFwiYmFkXCIsXG4gICAgZmVlZGJhY2tfbWVzc2FnZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW1lc3NhZ2VJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWVzc2FnZSBJRCBpcyByZXF1aXJlZCBmb3IgZmVlZGJhY2tcIik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBtZXNzYWdlIElEIGluIHRoZSBVUkwgcGF0aCwgbm90IGNvbnZlcnNhdGlvbiBJRFxuICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9hcGkvY29udmVyc2F0aW9ucy9tZXNzYWdlL2FkZC1mZWVkYmFjay8ke21lc3NhZ2VJZH1gO1xuICAgICAgLy8gQm9keSBzaG91bGQgb25seSBjb250YWluIGZlZWRiYWNrIGFuZCBmZWVkYmFja19tZXNzYWdlIChubyBtZXNzYWdlX2lkKVxuICAgICAgY29uc3QgcGF5bG9hZDoge1xuICAgICAgICBmZWVkYmFjazogXCJnb29kXCIgfCBcImJhZFwiO1xuICAgICAgICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xuICAgICAgfSA9IHtcbiAgICAgICAgZmVlZGJhY2ssXG4gICAgICB9O1xuICAgICAgXG4gICAgICBpZiAoZmVlZGJhY2tfbWVzc2FnZSkge1xuICAgICAgICBwYXlsb2FkLmZlZWRiYWNrX21lc3NhZ2UgPSBmZWVkYmFja19tZXNzYWdlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBhd2FpdCBheGlvcy5wYXRjaCh1cmwsIHBheWxvYWQsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwieC1hcGkta2V5XCI6IHRoaXMuYXBpS2V5LFxuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIC4uLih0aGlzLnRlbmFudCA/IHsgXCJYLVRlbmFudC1JZFwiOiB0aGlzLnRlbmFudCB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGZWVkYmFjayBBUEkgY2FsbCBmYWlsZWQ6Jywge1xuICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICByZXNwb25zZTogZXJyb3IucmVzcG9uc2U/LmRhdGEsXG4gICAgICAgIHN0YXR1czogZXJyb3IucmVzcG9uc2U/LnN0YXR1cyxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBhZGp1c3QgbWVzc2FnZSB0aW1lc3RhbXBzIHJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICBwcml2YXRlIGFkanVzdE1lc3NhZ2VUaW1lc3RhbXBzKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogQ2hhdE1lc3NhZ2Uge1xuICAgIGlmICghdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIHN0YXJ0X3RpbWU6IG1lc3NhZ2Uuc3RhcnRfdGltZSAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgIGVuZF90aW1lOiBtZXNzYWdlLmVuZF90aW1lIC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { Translations } from '../utils/i18n';
1
2
  export interface MessageFeedback {
2
3
  feedback: "good" | "bad";
3
4
  feedback_timestamp?: string;
@@ -89,6 +90,8 @@ export interface GenAgentChatProps {
89
90
  };
90
91
  headerTitle?: string;
91
92
  placeholder?: string;
93
+ agentName?: string;
94
+ logoUrl?: string;
92
95
  mode?: "embedded" | "floating";
93
96
  floatingConfig?: {
94
97
  position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
@@ -99,4 +102,7 @@ export interface GenAgentChatProps {
99
102
  toggleButtonIcon?: React.ReactElement;
100
103
  closeButtonIcon?: React.ReactElement;
101
104
  };
105
+ language?: string;
106
+ translations?: Partial<Translations>;
102
107
  }
108
+ export type { Translations } from '../utils/i18n';
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENoYXQgbWVzc2FnZSB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRmVlZGJhY2sge1xuICBmZWVkYmFjazogXCJnb29kXCIgfCBcImJhZFwiO1xuICBmZWVkYmFja190aW1lc3RhbXA/OiBzdHJpbmc7XG4gIGZlZWRiYWNrX3VzZXJfaWQ/OiBzdHJpbmc7XG4gIGZlZWRiYWNrX21lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2Uge1xuICBjcmVhdGVfdGltZTogbnVtYmVyO1xuICBzdGFydF90aW1lOiBudW1iZXI7XG4gIGVuZF90aW1lOiBudW1iZXI7XG4gIHNwZWFrZXI6IFwiY3VzdG9tZXJcIiB8IFwiYWdlbnRcIiB8IFwic3BlY2lhbFwiO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICAvLyBPcHRpb25hbCBtZXRhZGF0YVxuICBtZXNzYWdlX2lkPzogc3RyaW5nO1xuICBmZWVkYmFjaz86IE1lc3NhZ2VGZWVkYmFja1tdO1xufVxuXG4vLyBBdHRhY2htZW50IHR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHVybDogc3RyaW5nO1xufVxuXG4vLyBBUEkgUmVzcG9uc2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29udmVyc2F0aW9uX2lkOiBzdHJpbmc7XG4gIGFnZW50X3dlbGNvbWVfbWVzc2FnZT86IHN0cmluZztcbiAgYWdlbnRfcG9zc2libGVfcXVlcmllcz86IHN0cmluZ1tdO1xuICBhZ2VudF93ZWxjb21lX3RpdGxlPzogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX2ltYWdlX3VybD86IHN0cmluZztcbiAgYWdlbnRfaWQ/OiBzdHJpbmc7XG4gIGFnZW50X3RoaW5raW5nX3BocmFzZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfdGhpbmtpbmdfcGhyYXNlX2RlbGF5PzogbnVtYmVyOyAvLyBzZWNvbmRzXG4gIGNyZWF0ZV90aW1lPzogbnVtYmVyO1xufVxuXG4vLyBBZ2VudCB3ZWxjb21lL2NvbmZpZyBpbmZvXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50V2VsY29tZURhdGEge1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG4gIG1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsO1xuICBpbWFnZVVybD86IHN0cmluZyB8IG51bGw7XG4gIHBvc3NpYmxlUXVlcmllcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50VGhpbmtpbmdDb25maWcge1xuICBwaHJhc2VzOiBzdHJpbmdbXTtcbiAgZGVsYXlNczogbnVtYmVyOyAvLyByb3RhdGlvbiBkZWxheSBpbiBtc1xufVxuXG4vLyBJbnRlcmFjdGl2ZSBjb250ZW50IHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNDaGF0SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGltYWdlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdmVudWVJZD86IHN0cmluZztcbiAgc2xvdHM/OiBzdHJpbmdbXTtcbiAgc2VsZWN0ZWRTbG90Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzdGF1cmFudHM6IER5bmFtaWNDaGF0SXRlbVtdO1xufVxuXG5leHBvcnQgdHlwZSBDaGF0Q29udGVudEJsb2NrID1cbiAgfCB7IGtpbmQ6IFwidGV4dFwiOyB0ZXh0OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJpdGVtc1wiOyBpdGVtczogRHluYW1pY0NoYXRJdGVtW10gfVxuICB8IHsga2luZDogXCJzY2hlZHVsZVwiOyBzY2hlZHVsZTogU2NoZWR1bGVJdGVtIH1cbiAgfCB7IGtpbmQ6IFwib3B0aW9uc1wiOyBvcHRpb25zOiBzdHJpbmdbXSB9O1xuXG4vLyBQcm9wcyBmb3IgdGhlIEdlbkFnZW50Q2hhdCBjb21wb25lbnRcbmV4cG9ydCBpbnRlcmZhY2UgR2VuQWdlbnRDaGF0UHJvcHMge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGFwaUtleTogc3RyaW5nO1xuICB0ZW5hbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyAvLyBGb3IgcGFzc2luZyB1c2VyIGluZm9ybWF0aW9uIG9yIG90aGVyIG1ldGFkYXRhXG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRha2VvdmVyPzogKCkgPT4gdm9pZDtcbiAgb25GaW5hbGl6ZT86ICgpID0+IHZvaWQ7XG4gIHRoZW1lPzoge1xuICAgIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgICBzZWNvbmRhcnlDb2xvcj86IHN0cmluZztcbiAgICBmb250RmFtaWx5Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogc3RyaW5nO1xuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIH07XG4gIGhlYWRlclRpdGxlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgbW9kZT86IFwiZW1iZWRkZWRcIiB8IFwiZmxvYXRpbmdcIjtcbiAgZmxvYXRpbmdDb25maWc/OiB7XG4gICAgcG9zaXRpb24/OiBcImJvdHRvbS1yaWdodFwiIHwgXCJib3R0b20tbGVmdFwiIHwgXCJ0b3AtcmlnaHRcIiB8IFwidG9wLWxlZnRcIjtcbiAgICBvZmZzZXQ/OiB7IHg/OiBudW1iZXI7IHk/OiBudW1iZXIgfTtcbiAgICB0b2dnbGVCdXR0b25JY29uPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIGNsb3NlQnV0dG9uSWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgfTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuXG4vLyBDaGF0IG1lc3NhZ2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZlZWRiYWNrIHtcbiAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIjtcbiAgZmVlZGJhY2tfdGltZXN0YW1wPzogc3RyaW5nO1xuICBmZWVkYmFja191c2VyX2lkPzogc3RyaW5nO1xuICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcbiAgY3JlYXRlX3RpbWU6IG51bWJlcjtcbiAgc3RhcnRfdGltZTogbnVtYmVyO1xuICBlbmRfdGltZTogbnVtYmVyO1xuICBzcGVha2VyOiBcImN1c3RvbWVyXCIgfCBcImFnZW50XCIgfCBcInNwZWNpYWxcIjtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgLy8gT3B0aW9uYWwgbWV0YWRhdGFcbiAgbWVzc2FnZV9pZD86IHN0cmluZztcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbn1cblxuLy8gQXR0YWNobWVudCB0eXBlXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuLy8gQVBJIFJlc3BvbnNlIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX21lc3NhZ2U/OiBzdHJpbmc7XG4gIGFnZW50X3Bvc3NpYmxlX3F1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfd2VsY29tZV90aXRsZT86IHN0cmluZztcbiAgYWdlbnRfd2VsY29tZV9pbWFnZV91cmw/OiBzdHJpbmc7XG4gIGFnZW50X2lkPzogc3RyaW5nO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VzPzogc3RyaW5nW107XG4gIGFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheT86IG51bWJlcjsgLy8gc2Vjb25kc1xuICBjcmVhdGVfdGltZT86IG51bWJlcjtcbn1cblxuLy8gQWdlbnQgd2VsY29tZS9jb25maWcgaW5mb1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VVcmw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFRoaW5raW5nQ29uZmlnIHtcbiAgcGhyYXNlczogc3RyaW5nW107XG4gIGRlbGF5TXM6IG51bWJlcjsgLy8gcm90YXRpb24gZGVsYXkgaW4gbXNcbn1cblxuLy8gSW50ZXJhY3RpdmUgY29udGVudCB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljQ2hhdEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBpbWFnZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHZlbnVlSWQ/OiBzdHJpbmc7XG4gIHNsb3RzPzogc3RyaW5nW107XG4gIHNlbGVjdGVkU2xvdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG4gIHJlc3RhdXJhbnRzOiBEeW5hbWljQ2hhdEl0ZW1bXTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdENvbnRlbnRCbG9jayA9XG4gIHwgeyBraW5kOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwiaXRlbXNcIjsgaXRlbXM6IER5bmFtaWNDaGF0SXRlbVtdIH1cbiAgfCB7IGtpbmQ6IFwic2NoZWR1bGVcIjsgc2NoZWR1bGU6IFNjaGVkdWxlSXRlbSB9XG4gIHwgeyBraW5kOiBcIm9wdGlvbnNcIjsgb3B0aW9uczogc3RyaW5nW10gfTtcblxuLy8gUHJvcHMgZm9yIHRoZSBHZW5BZ2VudENoYXQgY29tcG9uZW50XG5leHBvcnQgaW50ZXJmYWNlIEdlbkFnZW50Q2hhdFByb3BzIHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBhcGlLZXk6IHN0cmluZztcbiAgdGVuYW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gRm9yIHBhc3NpbmcgdXNlciBpbmZvcm1hdGlvbiBvciBvdGhlciBtZXRhZGF0YVxuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UYWtlb3Zlcj86ICgpID0+IHZvaWQ7XG4gIG9uRmluYWxpemU/OiAoKSA9PiB2b2lkO1xuICB0aGVtZT86IHtcbiAgICBwcmltYXJ5Q29sb3I/OiBzdHJpbmc7XG4gICAgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gICAgZm9udEZhbWlseT86IHN0cmluZztcbiAgICBmb250U2l6ZT86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgdGV4dENvbG9yPzogc3RyaW5nO1xuICB9O1xuICBoZWFkZXJUaXRsZT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGFnZW50TmFtZT86IHN0cmluZzsgLy8gQ3VzdG9tIGFnZW50IG5hbWUgdG8gZGlzcGxheSBpbnN0ZWFkIG9mIFwiQWdlbnRcIlxuICBsb2dvVXJsPzogc3RyaW5nOyAvLyBDdXN0b20gbG9nbyBVUkwgdG8gZGlzcGxheSBpbiBoZWFkZXIgaW5zdGVhZCBvZiBkZWZhdWx0IGxvZ29cbiAgbW9kZT86IFwiZW1iZWRkZWRcIiB8IFwiZmxvYXRpbmdcIjtcbiAgZmxvYXRpbmdDb25maWc/OiB7XG4gICAgcG9zaXRpb24/OiBcImJvdHRvbS1yaWdodFwiIHwgXCJib3R0b20tbGVmdFwiIHwgXCJ0b3AtcmlnaHRcIiB8IFwidG9wLWxlZnRcIjtcbiAgICBvZmZzZXQ/OiB7IHg/OiBudW1iZXI7IHk/OiBudW1iZXIgfTtcbiAgICB0b2dnbGVCdXR0b25JY29uPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIGNsb3NlQnV0dG9uSWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgfTtcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7IC8vIExhbmd1YWdlIGNvZGUgKGUuZy4sICdlbicsICdlcycsICdmcicpLiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgdXNlIGJyb3dzZXIgbGFuZ3VhZ2VcbiAgdHJhbnNsYXRpb25zPzogUGFydGlhbDxUcmFuc2xhdGlvbnM+OyAvLyBDdXN0b20gdHJhbnNsYXRpb25zLiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgdXNlIGRlZmF1bHQgRW5nbGlzaCB0cmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgeyBUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi91dGlscy9pMThuJztcbiJdfQ==
@@ -0,0 +1,90 @@
1
+ {
2
+ "header": {
3
+ "subtitle": "Support"
4
+ },
5
+ "menu": {
6
+ "title": "Menü",
7
+ "resetConversation": "Konversation zurücksetzen",
8
+ "language": "Sprache"
9
+ },
10
+ "buttons": {
11
+ "startConversation": "Konversation starten",
12
+ "cancel": "Abbrechen",
13
+ "reset": "Zurücksetzen",
14
+ "save": "Speichern",
15
+ "saveChanges": "Änderungen speichern",
16
+ "add": "Hinzufügen"
17
+ },
18
+ "input": {
19
+ "placeholder": "Stellen Sie eine Frage"
20
+ },
21
+ "labels": {
22
+ "agent": "Agent",
23
+ "you": "Sie"
24
+ },
25
+ "dialog": {
26
+ "resetConversation": {
27
+ "title": "Konversation zurücksetzen",
28
+ "message": "Dies löscht den aktuellen Konversationsverlauf und startet eine neue Konversation. Sind Sie sicher?"
29
+ }
30
+ },
31
+ "feedback": {
32
+ "thumbsUp": "Daumen hoch",
33
+ "thumbsDown": "Daumen runter"
34
+ },
35
+ "thinking": {
36
+ "messages": [
37
+ "Denken…",
38
+ "Ihre Frage wird analysiert…",
39
+ "Wissen wird durchsucht…",
40
+ "Relevante Informationen werden abgerufen…",
41
+ "Antwort wird verfasst…",
42
+ "Details werden überprüft…",
43
+ "Alles wird zusammengefügt…",
44
+ "Fast fertig…"
45
+ ]
46
+ },
47
+ "time": {
48
+ "justNow": "Gerade eben",
49
+ "today": "Heute",
50
+ "yesterday": "Gestern"
51
+ },
52
+ "settings": {
53
+ "defaultDescription": "Support"
54
+ },
55
+ "metadata": {
56
+ "addParameter": "Parameter hinzufügen",
57
+ "editParameter": "Parameter bearbeiten",
58
+ "defineKeyValue": "Definieren Sie Schlüssel/Wert-Parameter, die als Chat-Metadaten gesendet werden."
59
+ },
60
+ "configPanel": {
61
+ "appearance": "AUSSEHEN",
62
+ "settings": "EINSTELLUNGEN",
63
+ "metadata": "METADATEN",
64
+ "primaryColor": "Primärfarbe",
65
+ "secondaryColor": "Sekundärfarbe",
66
+ "backgroundColor": "Hintergrundfarbe",
67
+ "textColor": "Textfarbe",
68
+ "fontSize": "Schriftgröße",
69
+ "fontFamily": "Schriftfamilie",
70
+ "name": "Name",
71
+ "description": "Beschreibung",
72
+ "small": "Klein (12px)",
73
+ "medium": "Mittel (15px)",
74
+ "large": "Groß (18px)",
75
+ "parameterName": "Parametername",
76
+ "type": "Typ",
77
+ "required": "Erforderlich",
78
+ "defaultValue": "Standardwert",
79
+ "value": "Wert",
80
+ "yes": "Ja",
81
+ "no": "Nein",
82
+ "true": "Wahr",
83
+ "false": "Falsch",
84
+ "string": "Zeichenkette",
85
+ "number": "Zahl",
86
+ "boolean": "Boolesch",
87
+ "edit": "Bearbeiten",
88
+ "remove": "Entfernen"
89
+ }
90
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "header": {
3
+ "subtitle": "Support"
4
+ },
5
+ "menu": {
6
+ "title": "Menu",
7
+ "resetConversation": "Reset conversation",
8
+ "language": "Language"
9
+ },
10
+ "buttons": {
11
+ "startConversation": "Start Conversation",
12
+ "cancel": "Cancel",
13
+ "reset": "Reset",
14
+ "save": "Save",
15
+ "saveChanges": "Save Changes",
16
+ "add": "Add"
17
+ },
18
+ "input": {
19
+ "placeholder": "Ask a question"
20
+ },
21
+ "labels": {
22
+ "agent": "Agent",
23
+ "you": "You"
24
+ },
25
+ "dialog": {
26
+ "resetConversation": {
27
+ "title": "Reset Conversation",
28
+ "message": "This will clear the current conversation history and start a new conversation. Are you sure?"
29
+ }
30
+ },
31
+ "feedback": {
32
+ "thumbsUp": "Thumbs up",
33
+ "thumbsDown": "Thumbs down"
34
+ },
35
+ "thinking": {
36
+ "messages": [
37
+ "Thinking…",
38
+ "Analyzing your question…",
39
+ "Searching knowledge…",
40
+ "Pulling relevant info…",
41
+ "Drafting the answer…",
42
+ "Double‑checking details…",
43
+ "Tying it together…",
44
+ "Almost there…"
45
+ ]
46
+ },
47
+ "time": {
48
+ "justNow": "Just now",
49
+ "today": "Today",
50
+ "yesterday": "Yesterday"
51
+ },
52
+ "settings": {
53
+ "defaultDescription": "Support"
54
+ },
55
+ "metadata": {
56
+ "addParameter": "Add Parameter",
57
+ "editParameter": "Edit Parameter",
58
+ "defineKeyValue": "Define key/value parameters sent as chat metadata."
59
+ },
60
+ "configPanel": {
61
+ "appearance": "APPEARANCE",
62
+ "settings": "SETTINGS",
63
+ "metadata": "METADATA",
64
+ "primaryColor": "Primary Color",
65
+ "secondaryColor": "Secondary Color",
66
+ "backgroundColor": "Background Color",
67
+ "textColor": "Text Color",
68
+ "fontSize": "Font Size",
69
+ "fontFamily": "Font Family",
70
+ "name": "Name",
71
+ "description": "Description",
72
+ "small": "Small (12px)",
73
+ "medium": "Medium (15px)",
74
+ "large": "Large (18px)",
75
+ "parameterName": "Parameter Name",
76
+ "type": "Type",
77
+ "required": "Required",
78
+ "defaultValue": "Default / Value",
79
+ "value": "Value",
80
+ "yes": "Yes",
81
+ "no": "No",
82
+ "true": "True",
83
+ "false": "False",
84
+ "string": "String",
85
+ "number": "Number",
86
+ "boolean": "Boolean",
87
+ "edit": "Edit",
88
+ "remove": "Remove"
89
+ }
90
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "header": {
3
+ "subtitle": "Soporte"
4
+ },
5
+ "menu": {
6
+ "title": "Menú",
7
+ "resetConversation": "Reiniciar conversación",
8
+ "language": "Idioma"
9
+ },
10
+ "buttons": {
11
+ "startConversation": "Iniciar Conversación",
12
+ "cancel": "Cancelar",
13
+ "reset": "Reiniciar",
14
+ "save": "Guardar",
15
+ "saveChanges": "Guardar Cambios",
16
+ "add": "Agregar"
17
+ },
18
+ "input": {
19
+ "placeholder": "Haz una pregunta"
20
+ },
21
+ "labels": {
22
+ "agent": "Agente",
23
+ "you": "Tú"
24
+ },
25
+ "dialog": {
26
+ "resetConversation": {
27
+ "title": "Reiniciar Conversación",
28
+ "message": "Esto borrará el historial de conversación actual y comenzará una nueva conversación. ¿Estás seguro?"
29
+ }
30
+ },
31
+ "feedback": {
32
+ "thumbsUp": "Pulgar arriba",
33
+ "thumbsDown": "Pulgar abajo"
34
+ },
35
+ "thinking": {
36
+ "messages": [
37
+ "Pensando…",
38
+ "Analizando tu pregunta…",
39
+ "Buscando información…",
40
+ "Obteniendo información relevante…",
41
+ "Redactando la respuesta…",
42
+ "Verificando detalles…",
43
+ "Uniendo todo…",
44
+ "Casi listo…"
45
+ ]
46
+ },
47
+ "time": {
48
+ "justNow": "Ahora",
49
+ "today": "Hoy",
50
+ "yesterday": "Ayer"
51
+ },
52
+ "settings": {
53
+ "defaultDescription": "Soporte"
54
+ },
55
+ "metadata": {
56
+ "addParameter": "Agregar Parámetro",
57
+ "editParameter": "Editar Parámetro",
58
+ "defineKeyValue": "Define parámetros clave/valor enviados como metadatos del chat."
59
+ },
60
+ "configPanel": {
61
+ "appearance": "APARIENCIA",
62
+ "settings": "CONFIGURACIÓN",
63
+ "metadata": "METADATOS",
64
+ "primaryColor": "Color Principal",
65
+ "secondaryColor": "Color Secundario",
66
+ "backgroundColor": "Color de Fondo",
67
+ "textColor": "Color de Texto",
68
+ "fontSize": "Tamaño de Fuente",
69
+ "fontFamily": "Familia de Fuente",
70
+ "name": "Nombre",
71
+ "description": "Descripción",
72
+ "small": "Pequeño (12px)",
73
+ "medium": "Mediano (15px)",
74
+ "large": "Grande (18px)",
75
+ "parameterName": "Nombre del Parámetro",
76
+ "type": "Tipo",
77
+ "required": "Requerido",
78
+ "defaultValue": "Valor por Defecto",
79
+ "value": "Valor",
80
+ "yes": "Sí",
81
+ "no": "No",
82
+ "true": "Verdadero",
83
+ "false": "Falso",
84
+ "string": "Cadena",
85
+ "number": "Número",
86
+ "boolean": "Booleano",
87
+ "edit": "Editar",
88
+ "remove": "Eliminar"
89
+ }
90
+ }