@cometchat/chat-uikit-angular 4.0.0-beta.1.1 → 4.0.0-beta.1.3

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.
Files changed (72) hide show
  1. package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +5 -2
  2. package/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.d.ts +139 -0
  3. package/Calls/CometChatCallDetails/cometchat-call-details.module.d.ts +10 -0
  4. package/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.d.ts +125 -0
  5. package/Calls/CometChatCallHistory/cometchat-call-history.module.d.ts +10 -0
  6. package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.d.ts +59 -0
  7. package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.d.ts +12 -0
  8. package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +0 -1
  9. package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +4 -0
  10. package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +6 -4
  11. package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +12 -2
  12. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +1 -1
  13. package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +18 -10
  14. package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +1 -1
  15. package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +1 -1
  16. package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +1 -1
  17. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +5 -8
  18. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +1 -1
  19. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +4 -1
  20. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +1 -1
  21. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +1 -1
  22. package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +1 -1
  23. package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +1 -1
  24. package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +1 -1
  25. package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +1 -1
  26. package/Extensions/Stickers/StickersExtensionDecorator.d.ts +2 -1
  27. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +5 -1
  28. package/Shared/Utils/ComeChatException.d.ts +2 -0
  29. package/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.d.ts +53 -0
  30. package/Shared/Views/CometChatTabs/cometchat-tabs.module.d.ts +12 -0
  31. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +13 -6
  32. package/esm2020/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.mjs +452 -0
  33. package/esm2020/Calls/CometChatCallDetails/cometchat-call-details.module.mjs +31 -0
  34. package/esm2020/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.mjs +397 -0
  35. package/esm2020/Calls/CometChatCallHistory/cometchat-call-history.module.mjs +28 -0
  36. package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.mjs +143 -0
  37. package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.mjs +39 -0
  38. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +1 -24
  39. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +25 -7
  40. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +6 -16
  41. package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +9 -3
  42. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +77 -9
  43. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +17 -13
  44. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +3 -1
  45. package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +111 -55
  46. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +8 -3
  47. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +10 -25
  48. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +3 -1
  49. package/esm2020/CometChatList/cometchat-list.component.mjs +2 -2
  50. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +42 -15
  51. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +7 -4
  52. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +68 -55
  53. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +5 -4
  54. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +6 -5
  55. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +1 -1
  56. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +9 -23
  57. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +3 -1
  58. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +1 -1
  59. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +1 -1
  60. package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +1 -1
  61. package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +3 -2
  62. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +41 -25
  63. package/esm2020/Shared/Utils/ComeChatException.mjs +10 -0
  64. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.mjs +88 -0
  65. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs.module.mjs +39 -0
  66. package/esm2020/public-api.mjs +4 -2
  67. package/fesm2015/cometchat-chat-uikit-angular.mjs +1609 -285
  68. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
  69. package/fesm2020/cometchat-chat-uikit-angular.mjs +1600 -285
  70. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
  71. package/package.json +3 -3
  72. package/public-api.d.ts +3 -1
@@ -0,0 +1,143 @@
1
+ import { Component, Input, ChangeDetectionStrategy } from "@angular/core";
2
+ import { CometChat } from "@cometchat-pro/chat";
3
+ import { CallDetailsConfiguration, CallHistoryConfiguration, WithDetailsStyle } from '@cometchat/uikit-shared';
4
+ import { fontHelper, localize, CometChatUIKitConstants } from '@cometchat/uikit-resources';
5
+ import '@cometchat/uikit-elements';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../CometChatTheme.service";
8
+ import * as i2 from "../../CometChatCallHistory/cometchat-call-history/cometchat-call-history.component";
9
+ import * as i3 from "../../CometChatCallDetails/cometchat-call-details/cometchat-call-details.component";
10
+ import * as i4 from "@angular/common";
11
+ /**
12
+ *
13
+ * CometChatCallHistoryWithDetailsComponent is a wrapper component for CometChatCallDetailsComponent and CometChatCallHistorycomponent to show history and details of calls in one screen
14
+ *
15
+ * @version 1.0.0
16
+ * @author CometChatTeam
17
+ * @copyright © 2022 CometChat Inc.
18
+ *
19
+ */
20
+ export class CometChatCallHistoryWithDetailsComponent {
21
+ constructor(elementRef, ref, themeService) {
22
+ this.elementRef = elementRef;
23
+ this.ref = ref;
24
+ this.themeService = themeService;
25
+ this.isMobileView = false;
26
+ this.messageText = localize("NO_CALLS_SELECTED");
27
+ this.callHistoryWithDetailsStyle = {};
28
+ this.callDetailsConfiguration = new CallDetailsConfiguration({});
29
+ this.callHistoryConfiguration = new CallHistoryConfiguration({});
30
+ this.onError = (error) => {
31
+ console.log(error);
32
+ };
33
+ this.labelStyle = {
34
+ background: "transparent",
35
+ textFont: "700 22px Inter",
36
+ textColor: "rgba(20, 20, 20, 0.33)"
37
+ };
38
+ this.closeDetailsPage = () => {
39
+ this.activeCall = null;
40
+ this.user = null;
41
+ this.group = null;
42
+ this.ref.detectChanges();
43
+ };
44
+ this.onBack = () => {
45
+ this.user = null;
46
+ this.group = null;
47
+ this.activeCall = null;
48
+ };
49
+ this.onItemClick = (call) => {
50
+ this.call = call;
51
+ this.setActiveChat();
52
+ };
53
+ this.emptyMessageStyle = () => {
54
+ return {
55
+ background: this.callHistoryWithDetailsStyle.background || this.themeService.theme.palette.getBackground(),
56
+ height: this.callHistoryWithDetailsStyle.height,
57
+ width: `calc(${this.callHistoryWithDetailsStyle.width} - 280px)`,
58
+ border: this.callHistoryWithDetailsStyle.border,
59
+ borderRadius: this.callHistoryWithDetailsStyle.borderRadius,
60
+ };
61
+ };
62
+ this.chatsWrapperStyles = () => {
63
+ return {
64
+ height: this.callHistoryWithDetailsStyle.height,
65
+ width: this.callHistoryWithDetailsStyle.width,
66
+ border: this.callHistoryWithDetailsStyle.border,
67
+ borderRadius: this.callHistoryWithDetailsStyle.borderRadius,
68
+ background: this.callHistoryWithDetailsStyle.background || this.themeService.theme.palette.getBackground(),
69
+ };
70
+ };
71
+ }
72
+ ngOnChanges(changes) {
73
+ if (changes["user"] || changes["group"]) {
74
+ this.setActiveChat();
75
+ }
76
+ }
77
+ setWithDetailsStyle() {
78
+ let defaultStyle = new WithDetailsStyle({
79
+ width: "100%",
80
+ height: "100%",
81
+ background: this.themeService.theme.palette.getBackground(),
82
+ borderRadius: "none",
83
+ border: "none",
84
+ messageTextColor: this.themeService.theme.palette.getAccent600(),
85
+ messageTextFont: fontHelper(this.themeService.theme.typography.title1),
86
+ });
87
+ this.callHistoryWithDetailsStyle = {
88
+ ...defaultStyle,
89
+ ...this.callHistoryWithDetailsStyle
90
+ };
91
+ this.labelStyle.textFont = this.callHistoryWithDetailsStyle.messageTextFont;
92
+ this.labelStyle.textColor = this.callHistoryWithDetailsStyle.messageTextColor;
93
+ }
94
+ setActiveChat() {
95
+ this.activeCall = this.call;
96
+ if (this.call.getSender().getUid() == this.loggedInUser?.getUid()) {
97
+ if (this.call.getReceiverType() == CometChatUIKitConstants.MessageReceiverType.user) {
98
+ this.user = this.call.getReceiver();
99
+ this.group = null;
100
+ }
101
+ else {
102
+ this.user = null;
103
+ this.group = this.call.getReceiver();
104
+ }
105
+ }
106
+ else {
107
+ this.user = this.call.getSender();
108
+ }
109
+ }
110
+ ngOnInit() {
111
+ this.setWithDetailsStyle();
112
+ CometChat.getLoggedinUser()
113
+ .then((user) => {
114
+ this.loggedInUser = user;
115
+ })
116
+ .catch((error) => {
117
+ if (this.onError) {
118
+ this.onError(error);
119
+ }
120
+ });
121
+ }
122
+ }
123
+ CometChatCallHistoryWithDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetailsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
124
+ CometChatCallHistoryWithDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallHistoryWithDetailsComponent, selector: "cometchat-call-history-with-details", inputs: { call: "call", isMobileView: "isMobileView", messageText: "messageText", callHistoryWithDetailsStyle: "callHistoryWithDetailsStyle", callDetailsConfiguration: "callDetailsConfiguration", callHistoryConfiguration: "callHistoryConfiguration", onError: "onError" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\" >\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-history\n #conversationRef\n [activeCall]=\"activeCall\"\n [onItemClick]=\"callHistoryConfiguration.onItemClick || onItemClick\"\n [conversationsStyle]=\"callHistoryConfiguration.callHistoryStyle\"\n [subtitleView]=\"callHistoryConfiguration.subtitleView\"\n [options]=\"callHistoryConfiguration.options\"\n [conversationsRequestBuilder]=\"callHistoryConfiguration.messageRequestBuilder\"\n [emptyStateView]=\"callHistoryConfiguration.emptyStateView\"\n [onSelect]=\"callHistoryConfiguration.onSelect\"\n [loadingIconURL]=\"callHistoryConfiguration.loadingIconURL\"\n [errorStateView]=\"callHistoryConfiguration.errorStateView\"\n [loadingStateView]=\"callHistoryConfiguration.loadingStateView\"\n [titleAlignment]=\"callHistoryConfiguration.titleAlignment\"\n [listItemView]=\"callHistoryConfiguration.listItemView\"\n [menu]=\"callHistoryConfiguration.menu\"\n [hideSeparator]=\"callHistoryConfiguration.hideSeparator\"\n [hideError]=\"callHistoryConfiguration.hideError\"\n [selectionMode]=\"callHistoryConfiguration.selectionMode\"\n [listItemStyle]=\"callHistoryConfiguration.listItemStyle\"\n [avatarStyle]=\"callHistoryConfiguration.avatarStyle\"\n ></cometchat-call-history>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user || group\">\n <!--call details Screen-->\n <cometchat-call-details\n #messagesRef\n [user]=\"user!\"\n [group]=\"group!\"\n [callDetailsStyle]=\"callDetailsConfiguration.callDetailsStyle\"\n [callButtonsConfiguration]=\"callDetailsConfiguration.callButtonsConfiguration\"\n [onClose]=\"callDetailsConfiguration.onClose || closeDetailsPage\" [listItemStyle]=\"callDetailsConfiguration.listItemStyle\" [avatarStyle]=\"callDetailsConfiguration.avatarStyle\" [statusIndicatorStyle]=\"callDetailsConfiguration.statusIndicatorStyle\" [customProfileView]=\"callDetailsConfiguration.customProfileView\" [subtitleView]=\"callDetailsConfiguration.subtitleView\" [hideProfile]=\"callDetailsConfiguration.hideProfile\" [onError]=\"callDetailsConfiguration.onError\" [closeButtonIconURL]=\"callDetailsConfiguration.closeButtonIconURL\"\n >\n </cometchat-call-details>\n <!--call details Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user && !group\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n", styles: [".cc-with-details__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-details__sidebar{width:280px;height:100%;position:relative}.cc-with-details__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"], components: [{ type: i2.CometChatCallHistoryComponent, selector: "cometchat-call-history", inputs: ["messageRequestBuilder", "subtitleView", "listItemView", "menu", "options", "activeCall", "hideSeparator", "selectionMode", "hideError", "title", "onError", "onSelect", "emptyStateView", "errorStateView", "loadingIconURL", "datePattern", "loadingStateView", "emptyStateText", "errorStateText", "titleAlignment", "avatarStyle", "dateStyle", "callHistoryStyle", "listItemStyle", "onItemClick"] }, { type: i3.CometChatCallDetailsComponent, selector: "cometchat-call-details", inputs: ["group", "user", "title", "closeButtonIconURL", "hideProfile", "subtitleView", "customProfileView", "disableUsersPresence", "privateGroupIcon", "protectedGroupIcon", "onError", "data", "onClose", "statusIndicatorStyle", "avatarStyle", "callDetailsStyle", "callButtonsConfiguration", "listItemStyle"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetailsComponent, decorators: [{
126
+ type: Component,
127
+ args: [{ selector: "cometchat-call-history-with-details", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\" >\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-history\n #conversationRef\n [activeCall]=\"activeCall\"\n [onItemClick]=\"callHistoryConfiguration.onItemClick || onItemClick\"\n [conversationsStyle]=\"callHistoryConfiguration.callHistoryStyle\"\n [subtitleView]=\"callHistoryConfiguration.subtitleView\"\n [options]=\"callHistoryConfiguration.options\"\n [conversationsRequestBuilder]=\"callHistoryConfiguration.messageRequestBuilder\"\n [emptyStateView]=\"callHistoryConfiguration.emptyStateView\"\n [onSelect]=\"callHistoryConfiguration.onSelect\"\n [loadingIconURL]=\"callHistoryConfiguration.loadingIconURL\"\n [errorStateView]=\"callHistoryConfiguration.errorStateView\"\n [loadingStateView]=\"callHistoryConfiguration.loadingStateView\"\n [titleAlignment]=\"callHistoryConfiguration.titleAlignment\"\n [listItemView]=\"callHistoryConfiguration.listItemView\"\n [menu]=\"callHistoryConfiguration.menu\"\n [hideSeparator]=\"callHistoryConfiguration.hideSeparator\"\n [hideError]=\"callHistoryConfiguration.hideError\"\n [selectionMode]=\"callHistoryConfiguration.selectionMode\"\n [listItemStyle]=\"callHistoryConfiguration.listItemStyle\"\n [avatarStyle]=\"callHistoryConfiguration.avatarStyle\"\n ></cometchat-call-history>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user || group\">\n <!--call details Screen-->\n <cometchat-call-details\n #messagesRef\n [user]=\"user!\"\n [group]=\"group!\"\n [callDetailsStyle]=\"callDetailsConfiguration.callDetailsStyle\"\n [callButtonsConfiguration]=\"callDetailsConfiguration.callButtonsConfiguration\"\n [onClose]=\"callDetailsConfiguration.onClose || closeDetailsPage\" [listItemStyle]=\"callDetailsConfiguration.listItemStyle\" [avatarStyle]=\"callDetailsConfiguration.avatarStyle\" [statusIndicatorStyle]=\"callDetailsConfiguration.statusIndicatorStyle\" [customProfileView]=\"callDetailsConfiguration.customProfileView\" [subtitleView]=\"callDetailsConfiguration.subtitleView\" [hideProfile]=\"callDetailsConfiguration.hideProfile\" [onError]=\"callDetailsConfiguration.onError\" [closeButtonIconURL]=\"callDetailsConfiguration.closeButtonIconURL\"\n >\n </cometchat-call-details>\n <!--call details Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user && !group\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n", styles: [".cc-with-details__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-details__sidebar{width:280px;height:100%;position:relative}.cc-with-details__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"] }]
128
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { call: [{
129
+ type: Input
130
+ }], isMobileView: [{
131
+ type: Input
132
+ }], messageText: [{
133
+ type: Input
134
+ }], callHistoryWithDetailsStyle: [{
135
+ type: Input
136
+ }], callDetailsConfiguration: [{
137
+ type: Input
138
+ }], callHistoryConfiguration: [{
139
+ type: Input
140
+ }], onError: [{
141
+ type: Input
142
+ }] } });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtaGlzdG9yeS13aXRoLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsSGlzdG9yeVdpdGhEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ2FsbHMvQ29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlscy9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LXdpdGgtZGV0YWlscy9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsdUJBQXVCLEVBQTJELE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBRXpGLE9BQU8sMkJBQTJCLENBQUE7Ozs7OztBQUVoQzs7Ozs7Ozs7RUFRQztBQU9ILE1BQU0sT0FBTyx3Q0FBd0M7SUF1Qm5ELFlBQW9CLFVBQXNCLEVBQVMsR0FBc0IsRUFBUyxZQUFrQztRQUFoRyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FB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RUFBcUIsQ0FBQTthQUN6RDtTQUVEO2FBQ0c7WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFLLENBQUMsU0FBUyxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBQ3hCLFNBQVMsQ0FBQyxlQUFlLEVBQUU7YUFDeEIsSUFBSSxDQUFDLENBQUMsSUFBMEIsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQWtDLEVBQUUsRUFBRTtZQUM1QyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBRVQsQ0FBQzs7c0lBOUZVLHdDQUF3QzswSEFBeEMsd0NBQXdDLGdYQ3ZCckQsZ25GQXlDQTs0RkRsQmEsd0NBQXdDO2tCQU5wRCxTQUFTOytCQUNFLHFDQUFxQyxtQkFHOUIsdUJBQXVCLENBQUMsTUFBTTtxS0FLdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSBcIkBjb21ldGNoYXQtcHJvL2NoYXRcIjtcblxuaW1wb3J0IHsgQ2FsbERldGFpbHNDb25maWd1cmF0aW9uLCBDYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24sIFdpdGhEZXRhaWxzU3R5bGV9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJ1xuaW1wb3J0IHsgZm9udEhlbHBlciwgbG9jYWxpemUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlcydcblxuaW1wb3J0ICdAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzJ1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbiAgLyoqXG4gKlxuICogQ29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlsc0NvbXBvbmVudCBpcyBhIHdyYXBwZXIgY29tcG9uZW50IGZvciBDb21ldENoYXRDYWxsRGV0YWlsc0NvbXBvbmVudCBhbmQgQ29tZXRDaGF0Q2FsbEhpc3Rvcnljb21wb25lbnQgdG8gc2hvdyBoaXN0b3J5IGFuZCBkZXRhaWxzIG9mIGNhbGxzICBpbiBvbmUgc2NyZWVuXG4gKlxuICogQHZlcnNpb24gMS4wLjBcbiAqIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuICogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LWNhbGwtaGlzdG9yeS13aXRoLWRldGFpbHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LWNhbGwtaGlzdG9yeS13aXRoLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRDYWxsSGlzdG9yeVdpdGhEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgdXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgIGdyb3VwITogQ29tZXRDaGF0Lkdyb3VwIHwgbnVsbDtcbiAgQElucHV0KCkgY2FsbCE6Q29tZXRDaGF0LkNhbGwgfCBudWxsO1xuICBASW5wdXQoKSBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWVzc2FnZVRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiTk9fQ0FMTFNfU0VMRUNURURcIik7XG4gIEBJbnB1dCgpIGNhbGxIaXN0b3J5V2l0aERldGFpbHNTdHlsZTogV2l0aERldGFpbHNTdHlsZSA9IHt9O1xuICBASW5wdXQoKSBjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb246IENhbGxEZXRhaWxzQ29uZmlndXJhdGlvbiA9IG5ldyBDYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24oe30pO1xuICBASW5wdXQoKSBjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb246IENhbGxIaXN0b3J5Q29uZmlndXJhdGlvbiA9IG5ldyBDYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24oe30pO1xuICBASW5wdXQoKSBvbkVycm9yOigoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PnZvaWQgKSB8IG51bGw9IChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICB9XG4gICAgLyoqXG4gICAgICogUHJvcGVydGllcyBmb3IgaW50ZXJuYWwgdXNlXG4gICAgICovXG4gIHB1YmxpYyBsb2dnZWRJblVzZXIhOiBDb21ldENoYXQuVXNlciB8IG51bGw7XG4gIHB1YmxpYyBhY3RpdmVDYWxsITogQ29tZXRDaGF0LkNhbGwgfCBudWxsO1xuICBsYWJlbFN0eWxlOmFueSA9IHtcbiAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcbiAgICB0ZXh0Rm9udDpcIjcwMCAyMnB4IEludGVyXCIsXG4gICAgdGV4dENvbG9yOlwicmdiYSgyMCwgMjAsIDIwLCAwLjMzKVwiXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYscHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdGhlbWVTZXJ2aWNlOkNvbWV0Q2hhdFRoZW1lU2VydmljZSkge1xuICAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgIGlmKGNoYW5nZXNbXCJ1c2VyXCJdIHx8IGNoYW5nZXNbXCJncm91cFwiXSl7XG4gICAgdGhpcy5zZXRBY3RpdmVDaGF0KCk7XG4gICB9XG4gIH1cbiAgY2xvc2VEZXRhaWxzUGFnZSA9ICgpPT57XG4gICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICAgIHRoaXMudXNlciA9IG51bGxcbiAgICB0aGlzLmdyb3VwID0gbnVsbFxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIG9uQmFjayA9ICgpPT57XG4gICAgdGhpcy51c2VyID0gbnVsbFxuICAgIHRoaXMuZ3JvdXAgPSBudWxsXG4gICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICB9XG4gIHNldFdpdGhEZXRhaWxzU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOldpdGhEZXRhaWxzU3R5bGUgPSBuZXcgV2l0aERldGFpbHNTdHlsZSh7XG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXJSYWRpdXM6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIG1lc3NhZ2VUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBtZXNzYWdlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgIH0pXG4gICAgdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUgPSB7XG4gICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gICAgICAuLi50aGlzLmNhbGxIaXN0b3J5V2l0aERldGFpbHNTdHlsZVxuICAgIH1cbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dEZvbnQgPSB0aGlzLmNhbGxIaXN0b3J5V2l0aERldGFpbHNTdHlsZS5tZXNzYWdlVGV4dEZvbnRcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUubWVzc2FnZVRleHRDb2xvclxuICB9XG4gIHB1YmxpYyBvbkl0ZW1DbGljazogKChjYWxsOkNvbWV0Q2hhdC5DYWxsKT0+dm9pZCkgPSAoY2FsbDpDb21ldENoYXQuQ2FsbCk9PntcbiAgICB0aGlzLmNhbGwgPSBjYWxsXG4gIHRoaXMuc2V0QWN0aXZlQ2hhdCgpXG4gIH07XG5cblxuICBzZXRBY3RpdmVDaGF0KCl7XG4gICAgdGhpcy5hY3RpdmVDYWxsID0gdGhpcy5jYWxsXG4gICAgaWYodGhpcy5jYWxsIS5nZXRTZW5kZXIoKS5nZXRVaWQoKSA9PSB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkpe1xuICAgICBpZih0aGlzLmNhbGwhLmdldFJlY2VpdmVyVHlwZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUudXNlcil7XG4gICAgICB0aGlzLnVzZXIgPSB0aGlzLmNhbGwhLmdldFJlY2VpdmVyKCkgYXMgQ29tZXRDaGF0LlVzZXJcbiAgICAgIHRoaXMuZ3JvdXAgPSBudWxsXG4gICAgIH1cbiAgICAgZWxzZXtcbiAgICAgICB0aGlzLnVzZXIgPSBudWxsXG4gICAgICAgdGhpcy5ncm91cCA9IHRoaXMuY2FsbCEuZ2V0UmVjZWl2ZXIoKSBhcyBDb21ldENoYXQuR3JvdXBcbiAgICAgfVxuXG4gICAgfVxuICAgIGVsc2V7XG4gICAgIHRoaXMudXNlciA9IHRoaXMuY2FsbCEuZ2V0U2VuZGVyKClcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRXaXRoRGV0YWlsc1N0eWxlKClcbiAgICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKVxuICAgICAgICAudGhlbigodXNlcjpDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlZEluVXNlciA9IHVzZXI7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICB9XG5cblxuXG4gIGVtcHR5TWVzc2FnZVN0eWxlID0gKCk9PntcbiAgICByZXR1cm4ge1xuICAgICAgYmFja2dyb3VuZDogdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUuYmFja2dyb3VuZCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGhlaWdodDp0aGlzLmNhbGxIaXN0b3J5V2l0aERldGFpbHNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDpgY2FsYygke3RoaXMuY2FsbEhpc3RvcnlXaXRoRGV0YWlsc1N0eWxlLndpZHRofSAtIDI4MHB4KWAsXG4gICAgICBib3JkZXI6dGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOnRoaXMuY2FsbEhpc3RvcnlXaXRoRGV0YWlsc1N0eWxlLmJvcmRlclJhZGl1cyxcbiAgICB9XG4gIH1cbiAgY2hhdHNXcmFwcGVyU3R5bGVzID0gICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmNhbGxIaXN0b3J5V2l0aERldGFpbHNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUud2lkdGgsXG4gICAgICBib3JkZXI6IHRoaXMuY2FsbEhpc3RvcnlXaXRoRGV0YWlsc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy5jYWxsSGlzdG9yeVdpdGhEZXRhaWxzU3R5bGUuYmFja2dyb3VuZCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy13aXRoLWRldGFpbHNfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJjaGF0c1dyYXBwZXJTdHlsZXMoKVwiID5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtZGV0YWlsc19fc2lkZWJhclwiIFtuZ0NsYXNzXT1cInttb2JpbGUgOiBpc01vYmlsZVZpZXd9XCI+XG4gICAgPGNvbWV0Y2hhdC1jYWxsLWhpc3RvcnlcbiAgICAjY29udmVyc2F0aW9uUmVmXG4gICAgW2FjdGl2ZUNhbGxdPVwiYWN0aXZlQ2FsbFwiXG4gICAgW29uSXRlbUNsaWNrXT1cImNhbGxIaXN0b3J5Q29uZmlndXJhdGlvbi5vbkl0ZW1DbGljayB8fCBvbkl0ZW1DbGlja1wiXG4gICAgW2NvbnZlcnNhdGlvbnNTdHlsZV09XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24uY2FsbEhpc3RvcnlTdHlsZVwiXG4gICAgW3N1YnRpdGxlVmlld109XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24uc3VidGl0bGVWaWV3XCJcbiAgICBbb3B0aW9uc109XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24ub3B0aW9uc1wiXG4gICAgW2NvbnZlcnNhdGlvbnNSZXF1ZXN0QnVpbGRlcl09XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24ubWVzc2FnZVJlcXVlc3RCdWlsZGVyXCJcbiAgICBbZW1wdHlTdGF0ZVZpZXddPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmVtcHR5U3RhdGVWaWV3XCJcbiAgICBbb25TZWxlY3RdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLm9uU2VsZWN0XCJcbiAgICBbbG9hZGluZ0ljb25VUkxdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmxvYWRpbmdJY29uVVJMXCJcbiAgICBbZXJyb3JTdGF0ZVZpZXddPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmVycm9yU3RhdGVWaWV3XCJcbiAgICBbbG9hZGluZ1N0YXRlVmlld109XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24ubG9hZGluZ1N0YXRlVmlld1wiXG4gICAgW3RpdGxlQWxpZ25tZW50XT1cImNhbGxIaXN0b3J5Q29uZmlndXJhdGlvbi50aXRsZUFsaWdubWVudFwiXG4gICAgW2xpc3RJdGVtVmlld109XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24ubGlzdEl0ZW1WaWV3XCJcbiAgICBbbWVudV09XCJjYWxsSGlzdG9yeUNvbmZpZ3VyYXRpb24ubWVudVwiXG4gICAgW2hpZGVTZXBhcmF0b3JdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmhpZGVTZXBhcmF0b3JcIlxuICAgIFtoaWRlRXJyb3JdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmhpZGVFcnJvclwiXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLnNlbGVjdGlvbk1vZGVcIlxuICAgIFtsaXN0SXRlbVN0eWxlXT1cImNhbGxIaXN0b3J5Q29uZmlndXJhdGlvbi5saXN0SXRlbVN0eWxlXCJcbiAgICBbYXZhdGFyU3R5bGVdPVwiY2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLmF2YXRhclN0eWxlXCJcbiAgICA+PC9jb21ldGNoYXQtY2FsbC1oaXN0b3J5PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtZGV0YWlsc19fbWFpblwiIFtuZ0NsYXNzXT1cInttb2JpbGUgOiBpc01vYmlsZVZpZXd9XCIgKm5nSWY9XCJ1c2VyIHx8IGdyb3VwXCI+XG4gICAgPCEtLWNhbGwgZGV0YWlscyBTY3JlZW4tLT5cbiAgICA8Y29tZXRjaGF0LWNhbGwtZGV0YWlsc1xuICAgICNtZXNzYWdlc1JlZlxuICAgIFt1c2VyXT1cInVzZXIhXCJcbiAgICBbZ3JvdXBdPVwiZ3JvdXAhXCJcbiAgICBbY2FsbERldGFpbHNTdHlsZV09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24uY2FsbERldGFpbHNTdHlsZVwiXG4gICAgW2NhbGxCdXR0b25zQ29uZmlndXJhdGlvbl09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24uY2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uXCJcbiBbb25DbG9zZV09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24ub25DbG9zZSB8fCBjbG9zZURldGFpbHNQYWdlXCIgW2xpc3RJdGVtU3R5bGVdPVwiY2FsbERldGFpbHNDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIiAgW2F2YXRhclN0eWxlXT1cImNhbGxEZXRhaWxzQ29uZmlndXJhdGlvbi5hdmF0YXJTdHlsZVwiIFtzdGF0dXNJbmRpY2F0b3JTdHlsZV09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24uc3RhdHVzSW5kaWNhdG9yU3R5bGVcIiAgW2N1c3RvbVByb2ZpbGVWaWV3XT1cImNhbGxEZXRhaWxzQ29uZmlndXJhdGlvbi5jdXN0b21Qcm9maWxlVmlld1wiIFtzdWJ0aXRsZVZpZXddPVwiY2FsbERldGFpbHNDb25maWd1cmF0aW9uLnN1YnRpdGxlVmlld1wiIFtoaWRlUHJvZmlsZV09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24uaGlkZVByb2ZpbGVcIiBbb25FcnJvcl09XCJjYWxsRGV0YWlsc0NvbmZpZ3VyYXRpb24ub25FcnJvclwiIFtjbG9zZUJ1dHRvbkljb25VUkxdPVwiY2FsbERldGFpbHNDb25maWd1cmF0aW9uLmNsb3NlQnV0dG9uSWNvblVSTFwiXG4gICAgPlxuICAgIDwvY29tZXRjaGF0LWNhbGwtZGV0YWlscz5cbiAgICA8IS0tY2FsbCBkZXRhaWxzIFNjcmVlbiBFTkRTLS0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtZGVjb3JhdG9yX19tZXNzYWdlLS1lbXB0eVwiICpuZ0lmPVwiIXVzZXIgJiYgIWdyb3VwXCIgW25nU3R5bGVdPVwiZW1wdHlNZXNzYWdlU3R5bGUoKVwiPlxuICAgIDxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwibWVzc2FnZVRleHRcIiBbbGFiZWxTdHlsZV09XCJsYWJlbFN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICA8L2Rpdj5cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { BrowserModule } from "@angular/platform-browser";
4
+ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
5
+ import { CometChatCallHistoryWithDetailsComponent } from "./cometchat-call-history-with-details/cometchat-call-history-with-details.component";
6
+ import { CometChatCallHistory } from "../CometChatCallHistory/cometchat-call-history.module";
7
+ import { CometChatCallDetails } from "../CometChatCallDetails/cometchat-call-details.module";
8
+ import * as i0 from "@angular/core";
9
+ export class CometChatCallHistoryWithDetails {
10
+ }
11
+ CometChatCallHistoryWithDetails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetails, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ CometChatCallHistoryWithDetails.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetails, declarations: [CometChatCallHistoryWithDetailsComponent], imports: [CommonModule,
13
+ CometChatCallHistory,
14
+ CometChatCallDetails,
15
+ BrowserModule,
16
+ BrowserAnimationsModule], exports: [CometChatCallHistoryWithDetailsComponent] });
17
+ CometChatCallHistoryWithDetails.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetails, imports: [[
18
+ CommonModule,
19
+ CometChatCallHistory,
20
+ CometChatCallDetails,
21
+ BrowserModule,
22
+ BrowserAnimationsModule,
23
+ ]] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryWithDetails, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ declarations: [CometChatCallHistoryWithDetailsComponent],
28
+ imports: [
29
+ CommonModule,
30
+ CometChatCallHistory,
31
+ CometChatCallDetails,
32
+ BrowserModule,
33
+ BrowserAnimationsModule,
34
+ ],
35
+ exports: [CometChatCallHistoryWithDetailsComponent],
36
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtaGlzdG9yeS13aXRoLWRldGFpbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsSGlzdG9yeVdpdGhEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0scUZBQXFGLENBQUM7QUFDL0ksT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7O0FBYzdGLE1BQU0sT0FBTywrQkFBK0I7OzZIQUEvQiwrQkFBK0I7OEhBQS9CLCtCQUErQixpQkFYM0Isd0NBQXdDLGFBRXJELFlBQVk7UUFDWixvQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYix1QkFBdUIsYUFFZix3Q0FBd0M7OEhBR3ZDLCtCQUErQixZQVZqQztZQUNQLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLGFBQWE7WUFDYix1QkFBdUI7U0FDeEI7NEZBSVUsK0JBQStCO2tCQVozQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHdDQUF3QyxDQUFDO29CQUN4RCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRSxDQUFDLHdDQUF3QyxDQUFDO29CQUNuRCxPQUFPLEVBQUMsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0Q2FsbEhpc3RvcnkgfSBmcm9tIFwiLi4vQ29tZXRDaGF0Q2FsbEhpc3RvcnkvY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5tb2R1bGVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdENhbGxEZXRhaWxzIH0gZnJvbSBcIi4uL0NvbWV0Q2hhdENhbGxEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWRldGFpbHMubW9kdWxlXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbWV0Q2hhdENhbGxIaXN0b3J5V2l0aERldGFpbHNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvbWV0Q2hhdENhbGxIaXN0b3J5LFxuICAgIENvbWV0Q2hhdENhbGxEZXRhaWxzLFxuICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtDb21ldENoYXRDYWxsSGlzdG9yeVdpdGhEZXRhaWxzQ29tcG9uZW50XSxcbiAgc2NoZW1hczpbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlscyB7fVxuIl19
@@ -101,29 +101,6 @@ export class CometChatIncomingCallComponent {
101
101
  });
102
102
  this.ongoingCallStyle = { ...defaultStyle, ...this.ongoingCallStyle };
103
103
  };
104
- this.startDefaultCall = () => {
105
- let call = this.call;
106
- const sessionId = call?.getSessionId();
107
- const callType = call?.getType() === CometChatUIKitConstants.MessageTypes.audio ? true : false;
108
- const showRecordingButton = true;
109
- const callSettings = new CometChat.CallSettingsBuilder()
110
- .setSessionID(sessionId)
111
- .enableDefaultLayout(true)
112
- .setMode(CometChat.CALL_MODE.DEFAULT)
113
- .setIsAudioOnlyCall(callType)
114
- .showRecordingButton(showRecordingButton)
115
- .build();
116
- const el = "";
117
- CometChat.startCall(callSettings, el, new CometChat.OngoingCallListener({
118
- onCallEnded: (endedCall) => {
119
- /* Notification received here if current ongoing call is ended. */
120
- if (endedCall.getAction() == CometChatUIKitConstants.calls.ended) {
121
- CometChatCallEvents.ccCallEnded.next(endedCall);
122
- }
123
- /* hiding/closing the call screen can be done here. */
124
- },
125
- }));
126
- };
127
104
  this.checkForActiveCallAndEndCall = () => {
128
105
  let call = CometChat.getActiveCall();
129
106
  return new Promise((resolve, reject) => {
@@ -420,4 +397,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
420
397
  }], incomingCallStyle: [{
421
398
  type: Input
422
399
  }] } });
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRJbmNvbWluZ0NhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRJbmNvbWluZ0NhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsV0FBVyxFQUFjLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBR2xGLE9BQU8sRUFBRyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUF5QyxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUMzSzs7Ozs7Ozs7RUFRRTtBQU9GLE1BQU0sT0FBTyw4QkFBOEI7SUFxRHpDLFlBQW9CLEdBQXNCLEVBQVUsWUFBbUM7UUFBbkUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFuRDlFLHlCQUFvQixHQUFXLEtBQUssQ0FBQztRQUlyQyxxQkFBZ0IsR0FBVyxRQUFR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dEUsZUFBZSxFQUFFLEVBQUU7WUFDbkIsc0JBQXNCLEVBQUUsRUFBRTtTQUMzQixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDN0QsQ0FBQzs7NEhBL1dVLDhCQUE4QjtnSEFBOUIsOEJBQThCLDBkQ3RCM0MseS9EQW9DQTs0RkRkYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gJ0Bjb21ldGNoYXQtcHJvL2NoYXQnO1xuaW1wb3J0IHsgU3RvcmFnZVV0aWxzLENhbGxzY3JlZW5TdHlsZSwgSW5jb21pbmdDYWxsU3R5bGUsIENvbWV0Q2hhdFNvdW5kTWFuYWdlciB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuaW1wb3J0IHsgQXZhdGFyU3R5bGUsICBJY29uU3R5bGUsIExpc3RJdGVtU3R5bGUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21ldENoYXRUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9Db21ldENoYXRUaGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7ICBsb2NhbGl6ZSwgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMsIGZvbnRIZWxwZXIsIENvbWV0Q2hhdENhbGxFdmVudHMsIENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMsIE1lc3NhZ2VTdGF0dXMsIENvbWV0Q2hhdExvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuLyoqXG4qXG4qIENvbWV0Q2hhdEluY29taW5nQ2FsbENvbXBvbmVudCBpcyBhIGNvbXBvbmVudCB3aGljaCBzaG93cyBvdXRnb2luZyBjYWxsIHNjcmVlbiBmb3IgZGVmYXVsdCBhdWRpbyBhbmQgdmlkZW8gY2FsbC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtaW5jb21pbmctY2FsbFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1pbmNvbWluZy1jYWxsLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtaW5jb21pbmctY2FsbC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0SW5jb21pbmdDYWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNhbGwhOiBDb21ldENoYXQuQ2FsbCB8IG51bGw7XG4gIEBJbnB1dCgpIGRpc2FibGVTb3VuZEZvckNhbGxzOmJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tU291bmRGb3JDYWxscyE6c3RyaW5nO1xuICBASW5wdXQoKSBvbkFjY2VwdCE6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25EZWNsaW5lITogKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB2b2lkO1xuICBASW5wdXQoKSBhY2NlcHRCdXR0b25UZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIkFDQ0VQVFwiKTtcbiAgQElucHV0KCkgZGVjbGluZUJ1dHRvblRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiREVDTElORVwiKTtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgb25FcnJvcjogKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB2b2lkID0gKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgQElucHV0KCkgbGlzdEl0ZW1TdHlsZTogTGlzdEl0ZW1TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICBiYWNrZ3JvdW5kOiBcIlwiLFxuICAgIGFjdGl2ZUJhY2tncm91bmQ6IFwiXCIsXG4gICAgYm9yZGVyOiBcIlwiLFxuICB9O1xuICBASW5wdXQoKSBhdmF0YXJTdHlsZTogQXZhdGFyU3R5bGUgPSB7XG4gICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICB3aWR0aDogXCIzOHB4XCIsXG4gICAgaGVpZ2h0OiBcIjM4cHhcIixcbiAgfTtcbiAgQElucHV0KCkgaW5jb21pbmdDYWxsU3R5bGU6IEluY29taW5nQ2FsbFN0eWxlID0ge1xuICAgIHdpZHRoOiBcImZpdC1jb250ZW50XCIsXG4gICAgaGVpZ2h0OiBcImZpdC1jb250ZW50XCIsXG4gIH07XG4gIHB1YmxpYyBpbmNvbWluZ2NhbGxMaXN0ZW5lcklkOiBzdHJpbmcgPSBcImluY29taW5nY2FsbF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBzdWJ0aXRsZVRleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJJTkNPTUlOR19DQUxMXCIpXG4gIGJ1dHRvblN0eWxlOmFueSA9IHtcbiAgICBoZWlnaHQ6XCIxMDAlXCIsXG4gICAgd2lkdGg6XCIxMDAlXCIsXG4gICAgZGlzcGxheTpcImZsZXhcIixcbiAgICBmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsXG4gICAganVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixcbiAgICBhbGlnbkl0ZW1zOlwiY2VudGVyXCIsXG4gICAgcGFkZGluZzpcIjhweCAyOHB4XCJcbiAgfVxuICBvbmdvaW5nQ2FsbFN0eWxlOiBDYWxsc2NyZWVuU3R5bGUgPSB7fVxuICBzaG93T25nb2luZ0NhbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0luY29taW5nQ2FsbFNjcmVlbjpib29sZWFuID0gZmFsc2VcbiAgc2Vzc2lvbklkOiBzdHJpbmcgPSBcIlwiO1xuICBhY2NlcHRCdXR0b25TdHlsZTogYW55ID0ge31cbiAgZGVjbGluZUJ1dHRvblN0eWxlOiBhbnkgPSB7fVxuICBwdWJsaWMgbG9nZ2VkSW5Vc2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwgPSBudWxsO1xuICBpY29uU3R5bGU6IEljb25TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjE2cHhcIixcbiAgICBpY29uVGludDogXCJSR0JBKDIwLCAyMCwgMjAsIDAuNjgpXCJcbiAgfVxuYWN0aXZlQ2FsbDpDb21ldENoYXQuQ2FsbCB8IG51bGwgPSBudWxsO1xuY2NDYWxsRW5kZWQhOlN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRoZW1lU2VydmljZTogQ29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7ICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgIGlmKGNoYW5nZXNbXCJjYWxsXCJdICYmIGNoYW5nZXNbXCJjYWxsXCJdLmN1cnJlbnRWYWx1ZSApe1xuICAgdGhpcy5zaG93Q2FsbCh0aGlzLmNhbGwhKVxuICAgfVxuICB9XG4gIHBsYXlBdWRpbygpIHtcbiAgICBpZiAodGhpcy5jdXN0b21Tb3VuZEZvckNhbGxzKSB7XG4gICAgICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGxheShDb21ldENoYXRTb3VuZE1hbmFnZXIuU291bmQuaW5jb21pbmdDYWxsLCB0aGlzLmN1c3RvbVNvdW5kRm9yQ2FsbHMpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgQ29tZXRDaGF0U291bmRNYW5hZ2VyLnBsYXkoQ29tZXRDaGF0U291bmRNYW5hZ2VyLlNvdW5kLmluY29taW5nQ2FsbClcbiAgICB9XG4gIH1cbiAgaXNDYWxsQWN0aXZlKGNhbGw6Q29tZXRDaGF0LkNhbGwpe1xuICAgIGxldCBpc0N1cnJlbnRDYWxsOmJvb2xlYW4gPSBmYWxzZVxuICAgIGlmKFN0b3JhZ2VVdGlscy5nZXRJdGVtKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLmFjdGl2ZWNhbGwpKXtcbiAgICAgbGV0IG9sZENhbGw6YW55ID0gIFN0b3JhZ2VVdGlscy5nZXRJdGVtKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLmFjdGl2ZWNhbGwpXG4gICAgIGlmKG9sZENhbGwgJiYgb2xkQ2FsbC5zZXNzaW9uSWQgPT0gY2FsbC5nZXRTZXNzaW9uSWQoKSl7XG4gICAgICBpc0N1cnJlbnRDYWxsID0gIHRydWVcbiAgICAgfVxuICAgICBlbHNle1xuICAgICAgaXNDdXJyZW50Q2FsbCA9ICBmYWxzZVxuICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBpc0N1cnJlbnRDYWxsID0gIGZhbHNlXG4gICAgfVxuICAgcmV0dXJuIGlzQ3VycmVudENhbGxcbiAgfVxuICBzaG93Q2FsbChjYWxsOkNvbWV0Q2hhdC5DYWxsKXtcbiAgICBpZighdGhpcy5pc0NhbGxBY3RpdmUoY2FsbCkgJiYgdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpICE9IGNhbGw/LmdldFNlbmRlcigpPy5nZXRVaWQoKSAmJiAhdGhpcy5jYWxsKXtcbiAgICAgIGlmKCF0aGlzLmRpc2FibGVTb3VuZEZvckNhbGxzKXtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbGF5QXVkaW8oKVxuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWxsID0gY2FsbFxuICAgICAgdGhpcy5zaG93SW5jb21pbmdDYWxsU2NyZWVuID0gdHJ1ZVxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuICAgICAgdGhpcy5yZWplY3RJbmNvbWluZ0NhbGwoQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuYnVzeSlcbiAgICB9XG4gIH1cbiAgYXR0YWNoTGlzdGVuZXJzKCkge1xuICAgIENvbWV0Q2hhdC5hZGRDYWxsTGlzdGVuZXIoXG4gICAgICB0aGlzLmluY29taW5nY2FsbExpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0LkNhbGxMaXN0ZW5lcih7XG4gICAgICAgIG9uSW5jb21pbmdDYWxsUmVjZWl2ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0NhbGwoY2FsbClcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSxcbiAgICAgICAgb25JbmNvbWluZ0NhbGxDYW5jZWxsZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIENvbWV0Q2hhdFNvdW5kTWFuYWdlci5wYXVzZSgpXG4gICAgICAgICAgdGhpcy5jYWxsID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICByZW1vdmVMaXN0ZW5lcigpIHtcbiAgICBDb21ldENoYXQucmVtb3ZlQ2FsbExpc3RlbmVyKHRoaXMuaW5jb21pbmdjYWxsTGlzdGVuZXJJZCk7XG4gIH1cbiAgbG9jYWxTdG9yYWdlQ2hhbmdlID0gKGV2ZW50OmFueSk6YW55ID0+IHtcblx0XHRpZiAoZXZlbnQ/LmtleSAhPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuYWN0aXZlY2FsbCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoZXZlbnQubmV3VmFsdWUgfHwgZXZlbnQub2xkVmFsdWUpIHtcblx0XHRcdGxldCBjYWxsO1xuXHRcdFx0aWYgKGV2ZW50Lm5ld1ZhbHVlKSB7XG5cdFx0XHRcdGNhbGwgPSBKU09OLnBhcnNlKGV2ZW50Lm5ld1ZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoZXZlbnQub2xkVmFsdWUpIHtcblx0XHRcdFx0Y2FsbCA9IEpTT04ucGFyc2UoZXZlbnQub2xkVmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuY2FsbD8uZ2V0U2Vzc2lvbklkKCkgPT09IGNhbGw/LnNlc3Npb25JZCkge1xuICAgICAgICB0aGlzLnNob3dJbmNvbWluZ0NhbGxTY3JlZW4gPSBmYWxzZVxuXHRcdFx0XHRDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuXHRcdFx0XHR0aGlzLmNhbGwgPSBudWxsO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcblx0XHRcdH1cblx0XHR9XG4gICAgcmV0dXJuXG5cdH07XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKS50aGVuKCh1c2VyOkNvbWV0Q2hhdC5Vc2VyIHwgbnVsbCk9PntcbiAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlclxuICAgIH0pLmNhdGNoKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgICAgaWYodGhpcy5vbkVycm9yKXtcbiAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgU3RvcmFnZVV0aWxzLmF0dGFjaENoYW5nZURldGVjdGlvbih0aGlzLmxvY2FsU3RvcmFnZUNoYW5nZSlcbiAgICB0aGlzLmF0dGFjaExpc3RlbmVycygpXG4gIHRoaXMuc2V0VGhlbWVTdHlsZSgpXG4gIHRoaXMuY2NDYWxsRW5kZWQgPSBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbEVuZGVkLnN1YnNjcmliZSgoY2FsbDpDb21ldENoYXQuQ2FsbCk9PntcbiAgICB0aGlzLnNob3dPbmdvaW5nQ2FsbCA9IGZhbHNlXG4gICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICAgIHRoaXMuY2FsbCA9IG51bGxcbiAgICB0aGlzLnNlc3Npb25JZCA9IFwiXCJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfSlcbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIFN0b3JhZ2VVdGlscy5kZXRhY2hDaGFuZ2VEZXRlY3Rpb24odGhpcy5sb2NhbFN0b3JhZ2VDaGFuZ2UpXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcigpXG4gICAgdGhpcy5jY0NhbGxFbmRlZD8udW5zdWJzY3JpYmUoKVxuICB9XG4gIHNldE9uZ29pbmdDYWxsU3R5bGUgPSAoKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZSA9IG5ldyBDYWxsc2NyZWVuU3R5bGUoe1xuICAgICAgbWF4SGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgYmFja2dyb3VuZDogXCIjMWMyMjI2XCIsXG4gICAgICBtaW5IZWlnaHQ6IFwiNDAwcHhcIixcbiAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXG4gICAgICBtaW5pbWl6ZUljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDkwMCgpLFxuICAgICAgbWF4aW1pemVJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICB9KVxuICAgIHRoaXMub25nb2luZ0NhbGxTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLm9uZ29pbmdDYWxsU3R5bGUgfVxuICB9XG4gIGdldENhbGxUeXBlSWNvbigpIHtcbiAgICBpZiAodGhpcy5jYWxsPy5nZXRUeXBlKCkgPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvKSB7XG4gICAgICByZXR1cm4gXCJhc3NldHMvQXVkaW8tQ2FsbC5zdmdcIlxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBcImFzc2V0cy9WaWRlby1jYWxsLnN2Z1wiXG4gICAgfVxuICB9XG4gIHN0YXJ0RGVmYXVsdENhbGwgPSAoKSA9PiB7XG4gICAgbGV0IGNhbGw6Q29tZXRDaGF0LkNhbGwgPSB0aGlzLmNhbGwhXG5cdFx0Y29uc3Qgc2Vzc2lvbklkID0gY2FsbD8uZ2V0U2Vzc2lvbklkKCk7XG5cdFx0Y29uc3QgY2FsbFR5cGUgPSBjYWxsPy5nZXRUeXBlKCkgPT09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbyA/IHRydWUgOiBmYWxzZTtcblx0XHRjb25zdCBzaG93UmVjb3JkaW5nQnV0dG9uID0gdHJ1ZVxuXHRcdGNvbnN0IGNhbGxTZXR0aW5ncyA9IG5ldyBDb21ldENoYXQuQ2FsbFNldHRpbmdzQnVpbGRlcigpXG5cdFx0XHQuc2V0U2Vzc2lvbklEKHNlc3Npb25JZClcblx0XHRcdC5lbmFibGVEZWZhdWx0TGF5b3V0KHRydWUpXG5cdFx0XHQuc2V0TW9kZShDb21ldENoYXQuQ0FMTF9NT0RFLkRFRkFVTFQpXG5cdFx0XHQuc2V0SXNBdWRpb09ubHlDYWxsKGNhbGxUeXBlKVxuXHRcdFx0LnNob3dSZWNvcmRpbmdCdXR0b24oc2hvd1JlY29yZGluZ0J1dHRvbilcblx0XHRcdC5idWlsZCgpO1xuXHRcdGNvbnN0IGVsOmFueSA9IFwiXCI7XG5cdFx0Q29tZXRDaGF0LnN0YXJ0Q2FsbChcblx0XHRcdGNhbGxTZXR0aW5ncyxcblx0XHRcdGVsLFxuXHRcdFx0bmV3IENvbWV0Q2hhdC5PbmdvaW5nQ2FsbExpc3RlbmVyKHtcblx0XHRcdFx0b25DYWxsRW5kZWQ6IChlbmRlZENhbGw6Q29tZXRDaGF0LkNhbGwpID0+IHtcblx0XHRcdFx0XHQvKiBOb3RpZmljYXRpb24gcmVjZWl2ZWQgaGVyZSBpZiBjdXJyZW50IG9uZ29pbmcgY2FsbCBpcyBlbmRlZC4gKi9cbiAgICAgICAgICBpZihlbmRlZENhbGwuZ2V0QWN0aW9uKCkgPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuZW5kZWQpe1xuICAgICAgICAgICAgQ29tZXRDaGF0Q2FsbEV2ZW50cy5jY0NhbGxFbmRlZC5uZXh0KGVuZGVkQ2FsbClcbiAgICAgICAgICB9XG5cdFx0XHRcdFx0LyogaGlkaW5nL2Nsb3NpbmcgdGhlIGNhbGwgc2NyZWVuIGNhbiBiZSBkb25lIGhlcmUuICovXG5cdFx0XHRcdH0sXG5cdFx0XHR9KVxuXHRcdCk7XG5cdH07XG5hY2NlcHRJbmNvbWluZ0NhbGwoKXtcbiAgQ29tZXRDaGF0U291bmRNYW5hZ2VyLnBhdXNlKClcbiAgaWYodGhpcy5vbkFjY2VwdCAmJiB0aGlzLmNhbGwpe1xuICAgIHRoaXMub25BY2NlcHQodGhpcy5jYWxsKVxuICB9XG5cbiAgZWxzZXtcbiAgICB0aGlzLmNoZWNrRm9yQWN0aXZlQ2FsbEFuZEVuZENhbGwoKVxuICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgQ29tZXRDaGF0LmFjY2VwdENhbGwodGhpcy5jYWxsIS5nZXRTZXNzaW9uSWQoKSlcbiAgICAgICAgLnRoZW4oKGNhbGwpID0+IHtcbiAgICAgICAgICBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbEFjY2VwdGVkLm5leHQoY2FsbClcbiAgICAgICAgICBTdG9yYWdlVXRpbHMuc2V0SXRlbShDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5hY3RpdmVjYWxsLCBjYWxsKVxuICAgICAgICAgIHRoaXMuc2hvd09uZ29pbmdDYWxsID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuYWN0aXZlQ2FsbCA9IGNhbGxcbiAgICAgICAgICB0aGlzLnNlc3Npb25JZCA9IGNhbGw/LmdldFNlc3Npb25JZCgpXG4gICAgICAgICAgdGhpcy5zaG93SW5jb21pbmdDYWxsU2NyZWVuID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2hlY2tGb3JBY3RpdmVDYWxsQW5kRW5kQ2FsbCA9ICgpID0+IHtcbiAgbGV0IGNhbGw6Q29tZXRDaGF0LkNhbGwgPSBDb21ldENoYXQuZ2V0QWN0aXZlQ2FsbCgpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCFjYWxsKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZSh7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuICAgIGxldCBzZXNzaW9uSUQgPSBjYWxsPy5nZXRTZXNzaW9uSWQoKTtcbiAgICBDb21ldENoYXQuZW5kQ2FsbChzZXNzaW9uSUQpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSk7XG59O1xucmVqZWN0SW5jb21pbmdDYWxsKHJlYXNvbjpzdHJpbmcgPSAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMucmVqZWN0ZWQpe1xuICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuICBpZih0aGlzLm9uRGVjbGluZSAmJiB0aGlzLmNhbGwpe1xuICAgIHRoaXMub25EZWNsaW5lKHRoaXMuY2FsbClcbiAgfVxuZWxzZXtcblxuXHRDb21ldENoYXQucmVqZWN0Q2FsbCh0aGlzLmNhbGwhLmdldFNlc3Npb25JZCgpLCByZWFzb24pXG4gIC50aGVuKChyZWplY3RlZENhbGwpID0+IHtcbiAgICBTdG9yYWdlVXRpbHMuc2V0SXRlbShDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5hY3RpdmVjYWxsLCByZWplY3RlZENhbGwpXG4gICAgIENvbWV0Q2hhdENhbGxFdmVudHMuY2NDYWxsUmVqZWN0ZWQubmV4dChyZWplY3RlZENhbGwpXG4gICAgIHRoaXMuc2hvd09uZ29pbmdDYWxsID0gZmFsc2VcbiAgICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICAgICB0aGlzLmNhbGwgPSBudWxsO1xuICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuaWYodGhpcy5vbkVycm9yKXtcbiAgdGhpcy5vbkVycm9yKGVycm9yKVxufVxuICB9KTtcbn1cbn1cbmdldENhbGxCdWlsZGVyKCk6IENvbWV0Q2hhdC5DYWxsU2V0dGluZ3NCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGF1ZGlvT25seUNhbGw6IGJvb2xlYW4gPSB0aGlzLmNhbGw/LmdldFR5cGUoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuYXVkaW8gPyB0cnVlIDogZmFsc2VcbiAgcmV0dXJuIG5ldyBDb21ldENoYXQuQ2FsbFNldHRpbmdzQnVpbGRlcigpXG4gICAgLnNldFNlc3Npb25JRCh0aGlzLnNlc3Npb25JZClcbiAgICAuZW5hYmxlRGVmYXVsdExheW91dCh0cnVlKVxuICAgIC5zZXRJc0F1ZGlvT25seUNhbGwoYXVkaW9Pbmx5Q2FsbClcbiAgICAuc2V0TW9kZShDb21ldENoYXQuQ0FMTF9NT0RFLkRFRkFVTFQpXG4gICAgLnNldExvY2FsaXplZFN0cmluZ09iamVjdChDb21ldENoYXRMb2NhbGl6ZS5nZXRMb2NhbGUoKSlcbn1cbiAgc2V0VGhlbWVTdHlsZSgpIHtcbiAgICB0aGlzLnNldGluY29taW5nQ2FsbFN0eWxlKClcbiAgICB0aGlzLnNldEF2YXRhclN0eWxlKClcbiAgICB0aGlzLnNldE9uZ29pbmdDYWxsU3R5bGUoKVxuICAgIHRoaXMuaWNvblN0eWxlLmljb25UaW50ID0gdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICB9XG4gIHNldExpc3RJdGVtU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkxpc3RJdGVtU3R5bGUgPSBuZXcgTGlzdEl0ZW1TdHlsZSh7XG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgdGl0bGVGb250OiB0aGlzLmluY29taW5nQ2FsbFN0eWxlLnRpdGxlVGV4dEZvbnQsXG4gICAgICB0aXRsZUNvbG9yOiB0aGlzLmluY29taW5nQ2FsbFN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIHNlcGFyYXRvckNvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiXG4gICAgfSlcbiAgICB0aGlzLmxpc3RJdGVtU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMubGlzdEl0ZW1TdHlsZX1cbiAgfVxuICBzZXRpbmNvbWluZ0NhbGxTdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IEluY29taW5nQ2FsbFN0eWxlID0gbmV3IEluY29taW5nQ2FsbFN0eWxlKHtcbiAgICAgIHdpZHRoOiBcImZpdC1jb250ZW50XCIsXG4gICAgICBoZWlnaHQ6IFwiZml0LWNvbnRlbnRcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50ODAwKFwibGlnaHRcIiksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjhweFwiLFxuICAgICAgdGl0bGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMiksXG4gICAgICB0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoXCJkYXJrXCIpLFxuICAgICAgc3VidGl0bGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnN1YnRpdGxlMiksXG4gICAgICBzdWJ0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ4MDAoXCJkYXJrXCIpLFxuICAgICAgYWNjZXB0QnV0dG9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRleHQyKSxcbiAgICAgIGFjY2VwdEJ1dHRvblRleHRDb2xvcjp0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudChcImRhcmtcIiksXG4gICAgICBhY2NlcHRCdXR0b25CYWNrZ3JvdW5kOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpLFxuICAgICAgYWNjZXB0QnV0dG9uQm9yZGVyUmFkaXVzOlwiOHB4XCIsXG4gICAgICBhY2NlcHRCdXR0b25Cb3JkZXI6XCJub25lXCIsXG4gICAgICBkZWNsaW5lQnV0dG9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRleHQyKSxcbiAgICAgIGRlY2xpbmVCdXR0b25UZXh0Q29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoXCJkYXJrXCIpLFxuICAgICAgZGVjbGluZUJ1dHRvbkJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRFcnJvcigpLFxuICAgICAgZGVjbGluZUJ1dHRvbkJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgZGVjbGluZUJ1dHRvbkJvcmRlcjpcIm5vbmVcIixcbiAgICB9KVxuICAgIHRoaXMuaW5jb21pbmdDYWxsU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5pbmNvbWluZ0NhbGxTdHlsZSB9XG4gICAgdGhpcy5zZXRMaXN0SXRlbVN0eWxlKCk7XG4gICAgdGhpcy5hY2NlcHRCdXR0b25TdHlsZSA9IHtcbiAgICAgIGJvcmRlcjp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvbkJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvbkJvcmRlclJhZGl1cyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5hY2NlcHRCdXR0b25CYWNrZ3JvdW5kLFxuICAgICAgYnV0dG9uVGV4dEZvbnQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5hY2NlcHRCdXR0b25UZXh0Rm9udCxcbiAgICAgIGJ1dHRvblRleHRDb2xvcjp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvblRleHRDb2xvcixcbiAgICAgIC4uLnRoaXMuYnV0dG9uU3R5bGVcbiAgICB9XG4gICAgdGhpcy5kZWNsaW5lQnV0dG9uU3R5bGUgPSB7XG4gICAgICBib3JkZXI6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5kZWNsaW5lQnV0dG9uQm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvbkJvcmRlclJhZGl1cyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5kZWNsaW5lQnV0dG9uQmFja2dyb3VuZCxcbiAgICAgIGJ1dHRvblRleHRGb250OnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvblRleHRGb250LFxuICAgICAgYnV0dG9uVGV4dENvbG9yOnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvblRleHRDb2xvcixcbiAgICAgIC4uLnRoaXMuYnV0dG9uU3R5bGVcbiAgICB9XG4gIH1cbiAgc2V0QXZhdGFyU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogQXZhdGFyU3R5bGUgPSBuZXcgQXZhdGFyU3R5bGUoe1xuICAgICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICAgIHdpZHRoOiBcIjM4cHhcIixcbiAgICAgIGhlaWdodDogXCIzOHB4XCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDcwMCgpLFxuICAgICAgbmFtZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICAgIGJhY2tncm91bmRTaXplOiBcImNvdmVyXCIsXG4gICAgICBuYW1lVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyOiBcIlwiLFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyU3BhY2luZzogXCJcIixcbiAgICB9KVxuICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5hdmF0YXJTdHlsZSB9XG4gIH1cbiAgc3VidGl0bGVTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dEZvbnQ6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuc3VidGl0bGVUZXh0Rm9udCxcbiAgICAgIHRleHRDb2xvcjogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICAgIH1cbiAgfVxuICB3cmFwcGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS53aWR0aCxcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuYmFja2dyb3VuZCxcbiAgICAgIGJvcmRlcjogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5ib3JkZXIsXG4gICAgICBib3JkZXJSYWRpdXM6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgcGFkZGluZzpcIjhweFwiXG4gICAgfVxuICB9XG59IiwiPGRpdiBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiICpuZ0lmPVwiY2FsbCAmJiBzaG93SW5jb21pbmdDYWxsU2NyZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX2xpc3RpdGVtXCI+XG4gICAgICAgIDxjb21ldGNoYXQtbGlzdC1pdGVtIFt0aXRsZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0TmFtZSgpXCJcbiAgICAgICAgW2xpc3RJdGVtU3R5bGVdPVwibGlzdEl0ZW1TdHlsZVwiXG4gICAgICAgIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIiA+XG4gICAgICAgIDxkaXYgc2xvdD1cInN1YnRpdGxlVmlld1wiIGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbF9fc3VidGl0bGUtdmlld1wiICpuZ0lmPVwic3VidGl0bGVWaWV3O2Vsc2Ugc3VidGl0bGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJ0aXRsZT5cbiAgICAgICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgIGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbF9fc3VidGl0bGUtdmlld1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsX19pY29uXCI+XG4gICAgICAgICAgICA8Y29tZXRjaGF0LWljb24gW2ljb25TdHlsZV09XCJpY29uU3R5bGVcIiBbVVJMXT1cImdldENhbGxUeXBlSWNvbigpXCI+PC9jb21ldGNoYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtY2FsbF9fdHlwZVwiIFt0ZXh0XT1cInN1YnRpdGxlVGV4dFwiIFtsYWJlbFN0eWxlXT1cInN1YnRpdGxlU3R5bGUoKVwiPlxuXG4gICAgICAgICAgPC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IHNsb3Q9XCJ0YWlsVmlld1wiICBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX3RhaWwtdmlld1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFpbF9fdmlld1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbmNvbWluZy1jYWxsX19hdmF0YXJcIj5cbiAgICAgICAgICAgIDxjb21ldGNoYXQtYXZhdGFyIFthdmF0YXJTdHlsZV09XCJhdmF0YXJTdHlsZVwiIFtpbWFnZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0QXZhdGFyKClcIiBbbmFtZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0TmFtZSgpXCI+XG5cbiAgICAgICAgICAgIDwvY29tZXRjaGF0LWF2YXRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvY29tZXRjaGF0LWxpc3QtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbC1idXR0b25zXCI+XG4gICAgICAgIDxjb21ldGNoYXQtYnV0dG9uIChjYy1idXR0b24tY2xpY2tlZCk9XCJyZWplY3RJbmNvbWluZ0NhbGwoKVwiICBbYnV0dG9uU3R5bGVdPVwiZGVjbGluZUJ1dHRvblN0eWxlXCIgW3RleHRdPVwiZGVjbGluZUJ1dHRvblRleHRcIj48L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgICAgIDxjb21ldGNoYXQtYnV0dG9uIChjYy1idXR0b24tY2xpY2tlZCk9XCJhY2NlcHRJbmNvbWluZ0NhbGwoKVwiICBbYnV0dG9uU3R5bGVdPVwiYWNjZXB0QnV0dG9uU3R5bGVcIiBbdGV4dF09XCJhY2NlcHRCdXR0b25UZXh0XCIgPjwvY29tZXRjaGF0LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG48L2Rpdj5cbjxjb21ldGNoYXQtb25nb2luZy1jYWxsICpuZ0lmPVwic2hvd09uZ29pbmdDYWxsICYmIGFjdGl2ZUNhbGwgJiYgIXNob3dJbmNvbWluZ0NhbGxTY3JlZW5cIiBbb25nb2luZ0NhbGxTdHlsZV09XCJvbmdvaW5nQ2FsbFN0eWxlXCIgW3Nlc3Npb25JRF09XCJzZXNzaW9uSWRcIiAgW2NhbGxTZXR0aW5nc0J1aWxkZXJdPVwiZ2V0Q2FsbEJ1aWxkZXIoKSFcIj48L2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGw+XG4iXX0=
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRJbmNvbWluZ0NhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRJbmNvbWluZ0NhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsV0FBVyxFQUFjLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBR2xGLE9BQU8sRUFBRyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUF5QyxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUMzSzs7Ozs7Ozs7RUFRRTtBQU9GLE1BQU0sT0FBTyw4QkFBOEI7SUFxRHpDLFlBQW9CLEdBQXNCLEVBQVUsWUFBbUM7UUFBbkUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFuRDlFLHlCQUFvQixHQUFXLEtBQUssQ0FBQztRQUlyQyxxQkFBZ0IsR0FBVyxRQUFR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LElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7WUFDdEUsZUFBZSxFQUFFLEVBQUU7WUFDbkIsc0JBQXNCLEVBQUUsRUFBRTtTQUMzQixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDN0QsQ0FBQzs7NEhBcFZVLDhCQUE4QjtnSEFBOUIsOEJBQThCLDBkQ3RCM0MseS9EQW9DQTs0RkRkYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gJ0Bjb21ldGNoYXQtcHJvL2NoYXQnO1xuaW1wb3J0IHsgU3RvcmFnZVV0aWxzLENhbGxzY3JlZW5TdHlsZSwgSW5jb21pbmdDYWxsU3R5bGUsIENvbWV0Q2hhdFNvdW5kTWFuYWdlciB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuaW1wb3J0IHsgQXZhdGFyU3R5bGUsICBJY29uU3R5bGUsIExpc3RJdGVtU3R5bGUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21ldENoYXRUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9Db21ldENoYXRUaGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7ICBsb2NhbGl6ZSwgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMsIGZvbnRIZWxwZXIsIENvbWV0Q2hhdENhbGxFdmVudHMsIENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMsIE1lc3NhZ2VTdGF0dXMsIENvbWV0Q2hhdExvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuLyoqXG4qXG4qIENvbWV0Q2hhdEluY29taW5nQ2FsbENvbXBvbmVudCBpcyBhIGNvbXBvbmVudCB3aGljaCBzaG93cyBvdXRnb2luZyBjYWxsIHNjcmVlbiBmb3IgZGVmYXVsdCBhdWRpbyBhbmQgdmlkZW8gY2FsbC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtaW5jb21pbmctY2FsbFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1pbmNvbWluZy1jYWxsLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtaW5jb21pbmctY2FsbC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0SW5jb21pbmdDYWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNhbGwhOiBDb21ldENoYXQuQ2FsbCB8IG51bGw7XG4gIEBJbnB1dCgpIGRpc2FibGVTb3VuZEZvckNhbGxzOmJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tU291bmRGb3JDYWxscyE6c3RyaW5nO1xuICBASW5wdXQoKSBvbkFjY2VwdCE6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25EZWNsaW5lITogKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB2b2lkO1xuICBASW5wdXQoKSBhY2NlcHRCdXR0b25UZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIkFDQ0VQVFwiKTtcbiAgQElucHV0KCkgZGVjbGluZUJ1dHRvblRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiREVDTElORVwiKTtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgb25FcnJvcjogKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB2b2lkID0gKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgQElucHV0KCkgbGlzdEl0ZW1TdHlsZTogTGlzdEl0ZW1TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICBiYWNrZ3JvdW5kOiBcIlwiLFxuICAgIGFjdGl2ZUJhY2tncm91bmQ6IFwiXCIsXG4gICAgYm9yZGVyOiBcIlwiLFxuICB9O1xuICBASW5wdXQoKSBhdmF0YXJTdHlsZTogQXZhdGFyU3R5bGUgPSB7XG4gICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICB3aWR0aDogXCIzOHB4XCIsXG4gICAgaGVpZ2h0OiBcIjM4cHhcIixcbiAgfTtcbiAgQElucHV0KCkgaW5jb21pbmdDYWxsU3R5bGU6IEluY29taW5nQ2FsbFN0eWxlID0ge1xuICAgIHdpZHRoOiBcImZpdC1jb250ZW50XCIsXG4gICAgaGVpZ2h0OiBcImZpdC1jb250ZW50XCIsXG4gIH07XG4gIHB1YmxpYyBpbmNvbWluZ2NhbGxMaXN0ZW5lcklkOiBzdHJpbmcgPSBcImluY29taW5nY2FsbF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBzdWJ0aXRsZVRleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJJTkNPTUlOR19DQUxMXCIpXG4gIGJ1dHRvblN0eWxlOmFueSA9IHtcbiAgICBoZWlnaHQ6XCIxMDAlXCIsXG4gICAgd2lkdGg6XCIxMDAlXCIsXG4gICAgZGlzcGxheTpcImZsZXhcIixcbiAgICBmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsXG4gICAganVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixcbiAgICBhbGlnbkl0ZW1zOlwiY2VudGVyXCIsXG4gICAgcGFkZGluZzpcIjhweCAyOHB4XCJcbiAgfVxuICBvbmdvaW5nQ2FsbFN0eWxlOiBDYWxsc2NyZWVuU3R5bGUgPSB7fVxuICBzaG93T25nb2luZ0NhbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0luY29taW5nQ2FsbFNjcmVlbjpib29sZWFuID0gZmFsc2VcbiAgc2Vzc2lvbklkOiBzdHJpbmcgPSBcIlwiO1xuICBhY2NlcHRCdXR0b25TdHlsZTogYW55ID0ge31cbiAgZGVjbGluZUJ1dHRvblN0eWxlOiBhbnkgPSB7fVxuICBwdWJsaWMgbG9nZ2VkSW5Vc2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwgPSBudWxsO1xuICBpY29uU3R5bGU6IEljb25TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjE2cHhcIixcbiAgICBpY29uVGludDogXCJSR0JBKDIwLCAyMCwgMjAsIDAuNjgpXCJcbiAgfVxuYWN0aXZlQ2FsbDpDb21ldENoYXQuQ2FsbCB8IG51bGwgPSBudWxsO1xuY2NDYWxsRW5kZWQhOlN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRoZW1lU2VydmljZTogQ29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7ICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgIGlmKGNoYW5nZXNbXCJjYWxsXCJdICYmIGNoYW5nZXNbXCJjYWxsXCJdLmN1cnJlbnRWYWx1ZSApe1xuICAgdGhpcy5zaG93Q2FsbCh0aGlzLmNhbGwhKVxuICAgfVxuICB9XG4gIHBsYXlBdWRpbygpIHtcbiAgICBpZiAodGhpcy5jdXN0b21Tb3VuZEZvckNhbGxzKSB7XG4gICAgICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGxheShDb21ldENoYXRTb3VuZE1hbmFnZXIuU291bmQuaW5jb21pbmdDYWxsLCB0aGlzLmN1c3RvbVNvdW5kRm9yQ2FsbHMpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgQ29tZXRDaGF0U291bmRNYW5hZ2VyLnBsYXkoQ29tZXRDaGF0U291bmRNYW5hZ2VyLlNvdW5kLmluY29taW5nQ2FsbClcbiAgICB9XG4gIH1cbiAgaXNDYWxsQWN0aXZlKGNhbGw6Q29tZXRDaGF0LkNhbGwpe1xuICAgIGxldCBpc0N1cnJlbnRDYWxsOmJvb2xlYW4gPSBmYWxzZVxuICAgIGlmKFN0b3JhZ2VVdGlscy5nZXRJdGVtKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLmFjdGl2ZWNhbGwpKXtcbiAgICAgbGV0IG9sZENhbGw6YW55ID0gIFN0b3JhZ2VVdGlscy5nZXRJdGVtKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLmFjdGl2ZWNhbGwpXG4gICAgIGlmKG9sZENhbGwgJiYgb2xkQ2FsbC5zZXNzaW9uSWQgPT0gY2FsbC5nZXRTZXNzaW9uSWQoKSl7XG4gICAgICBpc0N1cnJlbnRDYWxsID0gIHRydWVcbiAgICAgfVxuICAgICBlbHNle1xuICAgICAgaXNDdXJyZW50Q2FsbCA9ICBmYWxzZVxuICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBpc0N1cnJlbnRDYWxsID0gIGZhbHNlXG4gICAgfVxuICAgcmV0dXJuIGlzQ3VycmVudENhbGxcbiAgfVxuICBzaG93Q2FsbChjYWxsOkNvbWV0Q2hhdC5DYWxsKXtcbiAgICBpZighdGhpcy5pc0NhbGxBY3RpdmUoY2FsbCkgJiYgdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpICE9IGNhbGw/LmdldFNlbmRlcigpPy5nZXRVaWQoKSAmJiAhdGhpcy5jYWxsKXtcbiAgICAgIGlmKCF0aGlzLmRpc2FibGVTb3VuZEZvckNhbGxzKXtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbGF5QXVkaW8oKVxuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWxsID0gY2FsbFxuICAgICAgdGhpcy5zaG93SW5jb21pbmdDYWxsU2NyZWVuID0gdHJ1ZVxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuICAgICAgdGhpcy5yZWplY3RJbmNvbWluZ0NhbGwoQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuYnVzeSlcbiAgICB9XG4gIH1cbiAgYXR0YWNoTGlzdGVuZXJzKCkge1xuICAgIENvbWV0Q2hhdC5hZGRDYWxsTGlzdGVuZXIoXG4gICAgICB0aGlzLmluY29taW5nY2FsbExpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0LkNhbGxMaXN0ZW5lcih7XG4gICAgICAgIG9uSW5jb21pbmdDYWxsUmVjZWl2ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0NhbGwoY2FsbClcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSxcbiAgICAgICAgb25JbmNvbWluZ0NhbGxDYW5jZWxsZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIENvbWV0Q2hhdFNvdW5kTWFuYWdlci5wYXVzZSgpXG4gICAgICAgICAgdGhpcy5jYWxsID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICByZW1vdmVMaXN0ZW5lcigpIHtcbiAgICBDb21ldENoYXQucmVtb3ZlQ2FsbExpc3RlbmVyKHRoaXMuaW5jb21pbmdjYWxsTGlzdGVuZXJJZCk7XG4gIH1cbiAgbG9jYWxTdG9yYWdlQ2hhbmdlID0gKGV2ZW50OmFueSk6YW55ID0+IHtcblx0XHRpZiAoZXZlbnQ/LmtleSAhPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuYWN0aXZlY2FsbCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoZXZlbnQubmV3VmFsdWUgfHwgZXZlbnQub2xkVmFsdWUpIHtcblx0XHRcdGxldCBjYWxsO1xuXHRcdFx0aWYgKGV2ZW50Lm5ld1ZhbHVlKSB7XG5cdFx0XHRcdGNhbGwgPSBKU09OLnBhcnNlKGV2ZW50Lm5ld1ZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoZXZlbnQub2xkVmFsdWUpIHtcblx0XHRcdFx0Y2FsbCA9IEpTT04ucGFyc2UoZXZlbnQub2xkVmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuY2FsbD8uZ2V0U2Vzc2lvbklkKCkgPT09IGNhbGw/LnNlc3Npb25JZCkge1xuICAgICAgICB0aGlzLnNob3dJbmNvbWluZ0NhbGxTY3JlZW4gPSBmYWxzZVxuXHRcdFx0XHRDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuXHRcdFx0XHR0aGlzLmNhbGwgPSBudWxsO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcblx0XHRcdH1cblx0XHR9XG4gICAgcmV0dXJuXG5cdH07XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKS50aGVuKCh1c2VyOkNvbWV0Q2hhdC5Vc2VyIHwgbnVsbCk9PntcbiAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlclxuICAgIH0pLmNhdGNoKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgICAgaWYodGhpcy5vbkVycm9yKXtcbiAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgU3RvcmFnZVV0aWxzLmF0dGFjaENoYW5nZURldGVjdGlvbih0aGlzLmxvY2FsU3RvcmFnZUNoYW5nZSlcbiAgICB0aGlzLmF0dGFjaExpc3RlbmVycygpXG4gIHRoaXMuc2V0VGhlbWVTdHlsZSgpXG4gIHRoaXMuY2NDYWxsRW5kZWQgPSBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbEVuZGVkLnN1YnNjcmliZSgoY2FsbDpDb21ldENoYXQuQ2FsbCk9PntcbiAgICB0aGlzLnNob3dPbmdvaW5nQ2FsbCA9IGZhbHNlXG4gICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICAgIHRoaXMuY2FsbCA9IG51bGxcbiAgICB0aGlzLnNlc3Npb25JZCA9IFwiXCJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfSlcbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIFN0b3JhZ2VVdGlscy5kZXRhY2hDaGFuZ2VEZXRlY3Rpb24odGhpcy5sb2NhbFN0b3JhZ2VDaGFuZ2UpXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcigpXG4gICAgdGhpcy5jY0NhbGxFbmRlZD8udW5zdWJzY3JpYmUoKVxuICB9XG4gIHNldE9uZ29pbmdDYWxsU3R5bGUgPSAoKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZSA9IG5ldyBDYWxsc2NyZWVuU3R5bGUoe1xuICAgICAgbWF4SGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgYmFja2dyb3VuZDogXCIjMWMyMjI2XCIsXG4gICAgICBtaW5IZWlnaHQ6IFwiNDAwcHhcIixcbiAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXG4gICAgICBtaW5pbWl6ZUljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDkwMCgpLFxuICAgICAgbWF4aW1pemVJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICB9KVxuICAgIHRoaXMub25nb2luZ0NhbGxTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLm9uZ29pbmdDYWxsU3R5bGUgfVxuICB9XG4gIGdldENhbGxUeXBlSWNvbigpIHtcbiAgICBpZiAodGhpcy5jYWxsPy5nZXRUeXBlKCkgPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvKSB7XG4gICAgICByZXR1cm4gXCJhc3NldHMvQXVkaW8tQ2FsbC5zdmdcIlxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBcImFzc2V0cy9WaWRlby1jYWxsLnN2Z1wiXG4gICAgfVxuICB9XG5hY2NlcHRJbmNvbWluZ0NhbGwoKXtcbiAgQ29tZXRDaGF0U291bmRNYW5hZ2VyLnBhdXNlKClcbiAgaWYodGhpcy5vbkFjY2VwdCAmJiB0aGlzLmNhbGwpe1xuICAgIHRoaXMub25BY2NlcHQodGhpcy5jYWxsKVxuICB9XG5cbiAgZWxzZXtcbiAgICB0aGlzLmNoZWNrRm9yQWN0aXZlQ2FsbEFuZEVuZENhbGwoKVxuICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgQ29tZXRDaGF0LmFjY2VwdENhbGwodGhpcy5jYWxsIS5nZXRTZXNzaW9uSWQoKSlcbiAgICAgICAgLnRoZW4oKGNhbGwpID0+IHtcbiAgICAgICAgICBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbEFjY2VwdGVkLm5leHQoY2FsbClcbiAgICAgICAgICBTdG9yYWdlVXRpbHMuc2V0SXRlbShDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5hY3RpdmVjYWxsLCBjYWxsKVxuICAgICAgICAgIHRoaXMuc2hvd09uZ29pbmdDYWxsID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuYWN0aXZlQ2FsbCA9IGNhbGxcbiAgICAgICAgICB0aGlzLnNlc3Npb25JZCA9IGNhbGw/LmdldFNlc3Npb25JZCgpXG4gICAgICAgICAgdGhpcy5zaG93SW5jb21pbmdDYWxsU2NyZWVuID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2hlY2tGb3JBY3RpdmVDYWxsQW5kRW5kQ2FsbCA9ICgpID0+IHtcbiAgbGV0IGNhbGw6Q29tZXRDaGF0LkNhbGwgPSBDb21ldENoYXQuZ2V0QWN0aXZlQ2FsbCgpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCFjYWxsKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZSh7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuICAgIGxldCBzZXNzaW9uSUQgPSBjYWxsPy5nZXRTZXNzaW9uSWQoKTtcbiAgICBDb21ldENoYXQuZW5kQ2FsbChzZXNzaW9uSUQpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSk7XG59O1xucmVqZWN0SW5jb21pbmdDYWxsKHJlYXNvbjpzdHJpbmcgPSAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMucmVqZWN0ZWQpe1xuICBDb21ldENoYXRTb3VuZE1hbmFnZXIucGF1c2UoKVxuICBpZih0aGlzLm9uRGVjbGluZSAmJiB0aGlzLmNhbGwpe1xuICAgIHRoaXMub25EZWNsaW5lKHRoaXMuY2FsbClcbiAgfVxuZWxzZXtcblxuXHRDb21ldENoYXQucmVqZWN0Q2FsbCh0aGlzLmNhbGwhLmdldFNlc3Npb25JZCgpLCByZWFzb24pXG4gIC50aGVuKChyZWplY3RlZENhbGwpID0+IHtcbiAgICBTdG9yYWdlVXRpbHMuc2V0SXRlbShDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5hY3RpdmVjYWxsLCByZWplY3RlZENhbGwpXG4gICAgIENvbWV0Q2hhdENhbGxFdmVudHMuY2NDYWxsUmVqZWN0ZWQubmV4dChyZWplY3RlZENhbGwpXG4gICAgIHRoaXMuc2hvd09uZ29pbmdDYWxsID0gZmFsc2VcbiAgICAgdGhpcy5hY3RpdmVDYWxsID0gbnVsbFxuICAgICB0aGlzLmNhbGwgPSBudWxsO1xuICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuaWYodGhpcy5vbkVycm9yKXtcbiAgdGhpcy5vbkVycm9yKGVycm9yKVxufVxuICB9KTtcbn1cbn1cbmdldENhbGxCdWlsZGVyKCk6IENvbWV0Q2hhdC5DYWxsU2V0dGluZ3NCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGF1ZGlvT25seUNhbGw6IGJvb2xlYW4gPSB0aGlzLmNhbGw/LmdldFR5cGUoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuYXVkaW8gPyB0cnVlIDogZmFsc2VcbiAgcmV0dXJuIG5ldyBDb21ldENoYXQuQ2FsbFNldHRpbmdzQnVpbGRlcigpXG4gICAgLnNldFNlc3Npb25JRCh0aGlzLnNlc3Npb25JZClcbiAgICAuZW5hYmxlRGVmYXVsdExheW91dCh0cnVlKVxuICAgIC5zZXRJc0F1ZGlvT25seUNhbGwoYXVkaW9Pbmx5Q2FsbClcbiAgICAuc2V0TW9kZShDb21ldENoYXQuQ0FMTF9NT0RFLkRFRkFVTFQpXG4gICAgLnNldExvY2FsaXplZFN0cmluZ09iamVjdChDb21ldENoYXRMb2NhbGl6ZS5nZXRMb2NhbGUoKSlcbn1cbiAgc2V0VGhlbWVTdHlsZSgpIHtcbiAgICB0aGlzLnNldGluY29taW5nQ2FsbFN0eWxlKClcbiAgICB0aGlzLnNldEF2YXRhclN0eWxlKClcbiAgICB0aGlzLnNldE9uZ29pbmdDYWxsU3R5bGUoKVxuICAgIHRoaXMuaWNvblN0eWxlLmljb25UaW50ID0gdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICB9XG4gIHNldExpc3RJdGVtU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkxpc3RJdGVtU3R5bGUgPSBuZXcgTGlzdEl0ZW1TdHlsZSh7XG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgdGl0bGVGb250OiB0aGlzLmluY29taW5nQ2FsbFN0eWxlLnRpdGxlVGV4dEZvbnQsXG4gICAgICB0aXRsZUNvbG9yOiB0aGlzLmluY29taW5nQ2FsbFN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIHNlcGFyYXRvckNvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiXG4gICAgfSlcbiAgICB0aGlzLmxpc3RJdGVtU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMubGlzdEl0ZW1TdHlsZX1cbiAgfVxuICBzZXRpbmNvbWluZ0NhbGxTdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IEluY29taW5nQ2FsbFN0eWxlID0gbmV3IEluY29taW5nQ2FsbFN0eWxlKHtcbiAgICAgIHdpZHRoOiBcImZpdC1jb250ZW50XCIsXG4gICAgICBoZWlnaHQ6IFwiZml0LWNvbnRlbnRcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50ODAwKFwibGlnaHRcIiksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjhweFwiLFxuICAgICAgdGl0bGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMiksXG4gICAgICB0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoXCJkYXJrXCIpLFxuICAgICAgc3VidGl0bGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnN1YnRpdGxlMiksXG4gICAgICBzdWJ0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ4MDAoXCJkYXJrXCIpLFxuICAgICAgYWNjZXB0QnV0dG9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRleHQyKSxcbiAgICAgIGFjY2VwdEJ1dHRvblRleHRDb2xvcjp0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudChcImRhcmtcIiksXG4gICAgICBhY2NlcHRCdXR0b25CYWNrZ3JvdW5kOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpLFxuICAgICAgYWNjZXB0QnV0dG9uQm9yZGVyUmFkaXVzOlwiOHB4XCIsXG4gICAgICBhY2NlcHRCdXR0b25Cb3JkZXI6XCJub25lXCIsXG4gICAgICBkZWNsaW5lQnV0dG9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRleHQyKSxcbiAgICAgIGRlY2xpbmVCdXR0b25UZXh0Q29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoXCJkYXJrXCIpLFxuICAgICAgZGVjbGluZUJ1dHRvbkJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRFcnJvcigpLFxuICAgICAgZGVjbGluZUJ1dHRvbkJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgZGVjbGluZUJ1dHRvbkJvcmRlcjpcIm5vbmVcIixcbiAgICB9KVxuICAgIHRoaXMuaW5jb21pbmdDYWxsU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5pbmNvbWluZ0NhbGxTdHlsZSB9XG4gICAgdGhpcy5zZXRMaXN0SXRlbVN0eWxlKCk7XG4gICAgdGhpcy5hY2NlcHRCdXR0b25TdHlsZSA9IHtcbiAgICAgIGJvcmRlcjp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvbkJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvbkJvcmRlclJhZGl1cyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5hY2NlcHRCdXR0b25CYWNrZ3JvdW5kLFxuICAgICAgYnV0dG9uVGV4dEZvbnQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5hY2NlcHRCdXR0b25UZXh0Rm9udCxcbiAgICAgIGJ1dHRvblRleHRDb2xvcjp0aGlzLmluY29taW5nQ2FsbFN0eWxlLmFjY2VwdEJ1dHRvblRleHRDb2xvcixcbiAgICAgIC4uLnRoaXMuYnV0dG9uU3R5bGVcbiAgICB9XG4gICAgdGhpcy5kZWNsaW5lQnV0dG9uU3R5bGUgPSB7XG4gICAgICBib3JkZXI6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5kZWNsaW5lQnV0dG9uQm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvbkJvcmRlclJhZGl1cyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5kZWNsaW5lQnV0dG9uQmFja2dyb3VuZCxcbiAgICAgIGJ1dHRvblRleHRGb250OnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvblRleHRGb250LFxuICAgICAgYnV0dG9uVGV4dENvbG9yOnRoaXMuaW5jb21pbmdDYWxsU3R5bGUuZGVjbGluZUJ1dHRvblRleHRDb2xvcixcbiAgICAgIC4uLnRoaXMuYnV0dG9uU3R5bGVcbiAgICB9XG4gIH1cbiAgc2V0QXZhdGFyU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogQXZhdGFyU3R5bGUgPSBuZXcgQXZhdGFyU3R5bGUoe1xuICAgICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICAgIHdpZHRoOiBcIjM4cHhcIixcbiAgICAgIGhlaWdodDogXCIzOHB4XCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDcwMCgpLFxuICAgICAgbmFtZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICAgIGJhY2tncm91bmRTaXplOiBcImNvdmVyXCIsXG4gICAgICBuYW1lVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyOiBcIlwiLFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyU3BhY2luZzogXCJcIixcbiAgICB9KVxuICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5hdmF0YXJTdHlsZSB9XG4gIH1cbiAgc3VidGl0bGVTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dEZvbnQ6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuc3VidGl0bGVUZXh0Rm9udCxcbiAgICAgIHRleHRDb2xvcjogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICAgIH1cbiAgfVxuICB3cmFwcGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS53aWR0aCxcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuYmFja2dyb3VuZCxcbiAgICAgIGJvcmRlcjogdGhpcy5pbmNvbWluZ0NhbGxTdHlsZS5ib3JkZXIsXG4gICAgICBib3JkZXJSYWRpdXM6IHRoaXMuaW5jb21pbmdDYWxsU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgcGFkZGluZzpcIjhweFwiXG4gICAgfVxuICB9XG59IiwiPGRpdiBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiICpuZ0lmPVwiY2FsbCAmJiBzaG93SW5jb21pbmdDYWxsU2NyZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX2xpc3RpdGVtXCI+XG4gICAgICAgIDxjb21ldGNoYXQtbGlzdC1pdGVtIFt0aXRsZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0TmFtZSgpXCJcbiAgICAgICAgW2xpc3RJdGVtU3R5bGVdPVwibGlzdEl0ZW1TdHlsZVwiXG4gICAgICAgIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIiA+XG4gICAgICAgIDxkaXYgc2xvdD1cInN1YnRpdGxlVmlld1wiIGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbF9fc3VidGl0bGUtdmlld1wiICpuZ0lmPVwic3VidGl0bGVWaWV3O2Vsc2Ugc3VidGl0bGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJ0aXRsZT5cbiAgICAgICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgIGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbF9fc3VidGl0bGUtdmlld1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsX19pY29uXCI+XG4gICAgICAgICAgICA8Y29tZXRjaGF0LWljb24gW2ljb25TdHlsZV09XCJpY29uU3R5bGVcIiBbVVJMXT1cImdldENhbGxUeXBlSWNvbigpXCI+PC9jb21ldGNoYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtY2FsbF9fdHlwZVwiIFt0ZXh0XT1cInN1YnRpdGxlVGV4dFwiIFtsYWJlbFN0eWxlXT1cInN1YnRpdGxlU3R5bGUoKVwiPlxuXG4gICAgICAgICAgPC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IHNsb3Q9XCJ0YWlsVmlld1wiICBjbGFzcz1cImNjLWluY29taW5nLWNhbGxfX3RhaWwtdmlld1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFpbF9fdmlld1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbmNvbWluZy1jYWxsX19hdmF0YXJcIj5cbiAgICAgICAgICAgIDxjb21ldGNoYXQtYXZhdGFyIFthdmF0YXJTdHlsZV09XCJhdmF0YXJTdHlsZVwiIFtpbWFnZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0QXZhdGFyKClcIiBbbmFtZV09XCJjYWxsPy5nZXRTZW5kZXIoKT8uZ2V0TmFtZSgpXCI+XG5cbiAgICAgICAgICAgIDwvY29tZXRjaGF0LWF2YXRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvY29tZXRjaGF0LWxpc3QtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtaW5jb21pbmctY2FsbC1idXR0b25zXCI+XG4gICAgICAgIDxjb21ldGNoYXQtYnV0dG9uIChjYy1idXR0b24tY2xpY2tlZCk9XCJyZWplY3RJbmNvbWluZ0NhbGwoKVwiICBbYnV0dG9uU3R5bGVdPVwiZGVjbGluZUJ1dHRvblN0eWxlXCIgW3RleHRdPVwiZGVjbGluZUJ1dHRvblRleHRcIj48L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgICAgIDxjb21ldGNoYXQtYnV0dG9uIChjYy1idXR0b24tY2xpY2tlZCk9XCJhY2NlcHRJbmNvbWluZ0NhbGwoKVwiICBbYnV0dG9uU3R5bGVdPVwiYWNjZXB0QnV0dG9uU3R5bGVcIiBbdGV4dF09XCJhY2NlcHRCdXR0b25UZXh0XCIgPjwvY29tZXRjaGF0LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG48L2Rpdj5cbjxjb21ldGNoYXQtb25nb2luZy1jYWxsICpuZ0lmPVwic2hvd09uZ29pbmdDYWxsICYmIGFjdGl2ZUNhbGwgJiYgIXNob3dJbmNvbWluZ0NhbGxTY3JlZW5cIiBbb25nb2luZ0NhbGxTdHlsZV09XCJvbmdvaW5nQ2FsbFN0eWxlXCIgW3Nlc3Npb25JRF09XCJzZXNzaW9uSWRcIiAgW2NhbGxTZXR0aW5nc0J1aWxkZXJdPVwiZ2V0Q2FsbEJ1aWxkZXIoKSFcIj48L2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGw+XG4iXX0=
@@ -2,7 +2,9 @@ import { Component, Input } from '@angular/core';
2
2
  import "@cometchat/uikit-elements";
3
3
  import '@cometchat/uikit-shared';
4
4
  import { localize } from '@cometchat/uikit-resources';
5
+ import { CallscreenStyle } from '@cometchat/uikit-shared';
5
6
  import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../CometChatTheme.service";
6
8
  /**
7
9
  *
8
10
  * CometChatOngoingCallComponent is a component whic shows outgoing call screen for default audio and video call.
@@ -13,17 +15,18 @@ import * as i0 from "@angular/core";
13
15
  *
14
16
  */
15
17
  export class CometChatOngoingCallComponent {
16
- constructor() {
18
+ constructor(themeService) {
19
+ this.themeService = themeService;
17
20
  this.ongoingCallStyle = {
18
21
  maxHeight: "100%",
19
22
  maxWidth: "100%",
20
23
  border: "none",
21
24
  borderRadius: "0",
22
- background: "grey",
25
+ background: "#1c2226",
23
26
  minHeight: "400px",
24
27
  minWidth: "400px",
25
- minimizeIconTint: "white",
26
- maximizeIconTint: "white",
28
+ // minimizeIconTint:"white",
29
+ // maximizeIconTint:"white",
27
30
  };
28
31
  this.resizeIconHoverText = localize("RESIZE");
29
32
  this.sessionID = "";
@@ -31,14 +34,29 @@ export class CometChatOngoingCallComponent {
31
34
  this.maximizeIconURL = "assets/increase-size.svg";
32
35
  }
33
36
  ngOnInit() {
37
+ this.setongoingCallStyle();
38
+ }
39
+ setongoingCallStyle() {
40
+ let defaultStyle = new CallscreenStyle({
41
+ maxHeight: "100%",
42
+ maxWidth: "100%",
43
+ border: "none",
44
+ borderRadius: "0",
45
+ background: "#1c2226",
46
+ minHeight: "400px",
47
+ minWidth: "400px",
48
+ minimizeIconTint: this.themeService.theme.palette.getAccent("dark"),
49
+ maximizeIconTint: this.themeService.theme.palette.getAccent("dark"),
50
+ });
51
+ this.ongoingCallStyle = { ...defaultStyle, ...this.ongoingCallStyle };
34
52
  }
35
53
  }
36
- CometChatOngoingCallComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatOngoingCallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
+ CometChatOngoingCallComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatOngoingCallComponent, deps: [{ token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
37
55
  CometChatOngoingCallComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatOngoingCallComponent, selector: "cometchat-ongoing-call", inputs: { ongoingCallStyle: "ongoingCallStyle", resizeIconHoverText: "resizeIconHoverText", sessionID: "sessionID", minimizeIconURL: "minimizeIconURL", maximizeIconURL: "maximizeIconURL", callSettingsBuilder: "callSettingsBuilder" }, ngImport: i0, template: "<cometchat-callscreen [callscreenStyle]=\"ongoingCallStyle\" [callSettingsBuilder]=\"callSettingsBuilder\" [resizeIconHoverText]=\"resizeIconHoverText\" [sessionID]=\"sessionID\" [minimizeIconURL]=\"minimizeIconURL\" [maximizeIconURL]=\"maximizeIconURL\"></cometchat-callscreen>", styles: [""] });
38
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatOngoingCallComponent, decorators: [{
39
57
  type: Component,
40
58
  args: [{ selector: "cometchat-ongoing-call", template: "<cometchat-callscreen [callscreenStyle]=\"ongoingCallStyle\" [callSettingsBuilder]=\"callSettingsBuilder\" [resizeIconHoverText]=\"resizeIconHoverText\" [sessionID]=\"sessionID\" [minimizeIconURL]=\"minimizeIconURL\" [maximizeIconURL]=\"maximizeIconURL\"></cometchat-callscreen>", styles: [""] }]
41
- }], propDecorators: { ongoingCallStyle: [{
59
+ }], ctorParameters: function () { return [{ type: i1.CometChatThemeService }]; }, propDecorators: { ongoingCallStyle: [{
42
60
  type: Input
43
61
  }], resizeIconHoverText: [{
44
62
  type: Input
@@ -51,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
51
69
  }], callSettingsBuilder: [{
52
70
  type: Input
53
71
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdE9uZ29pbmdDYWxsL2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGwvY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdE9uZ29pbmdDYWxsL2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGwvY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQVEsMkJBQTJCLENBQUM7QUFDcEMsT0FBTyx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXREOzs7Ozs7OztFQVFFO0FBTUYsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQU1XLHFCQUFnQixHQUFvQjtZQUMzQyxTQUFTLEVBQUUsTUFBTTtZQUNqQixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFVBQVUsRUFBRSxNQUFNO1lBQ3JCLFNBQVMsRUFBQyxPQUFPO1lBQ2pCLFFBQVEsRUFBQyxPQUFPO1lBQ2hCLGdCQUFnQixFQUFDLE9BQU87WUFDeEIsZ0JBQWdCLEVBQUMsT0FBTztTQUN0QixDQUFBO1FBQ1Esd0JBQW1CLEdBQVUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLGNBQVMsR0FBVSxFQUFFLENBQUE7UUFDckIsb0JBQWUsR0FBVSx3QkFBd0IsQ0FBQTtRQUNqRCxvQkFBZSxHQUFVLDBCQUEwQixDQUFBO0tBTTdEO0lBSkMsUUFBUTtJQUNSLENBQUM7OzJIQWxCVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qix3U0NwQjFDLHdSQUEwUTs0RkRvQjdQLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSx3QkFBd0I7OEJBS3pCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFXRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tICdAY29tZXRjaGF0LXByby9jaGF0JztcbmltcG9ydCAgXCJAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzXCI7XG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJ1xuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlcyc7XG5pbXBvcnQgeyBDYWxsc2NyZWVuU3R5bGUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZCc7XG4vKipcbipcbiogQ29tZXRDaGF0T25nb2luZ0NhbGxDb21wb25lbnQgaXMgYSBjb21wb25lbnQgd2hpYyBzaG93cyBvdXRnb2luZyBjYWxsIHNjcmVlbiBmb3IgZGVmYXVsdCBhdWRpbyBhbmQgdmlkZW8gY2FsbC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtb25nb2luZy1jYWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0T25nb2luZ0NhbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvbmdvaW5nQ2FsbFN0eWxlOiBDYWxsc2NyZWVuU3R5bGUgPSB7XG4gICAgbWF4SGVpZ2h0OiBcIjEwMCVcIixcbiAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgIGJhY2tncm91bmQ6IFwiZ3JleVwiLFxuXHRtaW5IZWlnaHQ6XCI0MDBweFwiLFxuXHRtaW5XaWR0aDpcIjQwMHB4XCIsXG5cdG1pbmltaXplSWNvblRpbnQ6XCJ3aGl0ZVwiLFxuXHRtYXhpbWl6ZUljb25UaW50Olwid2hpdGVcIixcbiAgfVxuICBASW5wdXQoKSByZXNpemVJY29uSG92ZXJUZXh0OnN0cmluZyA9IGxvY2FsaXplKFwiUkVTSVpFXCIpXG4gIEBJbnB1dCgpIHNlc3Npb25JRDpzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIG1pbmltaXplSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9yZWR1Y2Utc2l6ZS5zdmdcIlxuICBASW5wdXQoKSBtYXhpbWl6ZUljb25VUkw6c3RyaW5nID0gXCJhc3NldHMvaW5jcmVhc2Utc2l6ZS5zdmdcIlxuICBASW5wdXQoKSBjYWxsU2V0dGluZ3NCdWlsZGVyITpDb21ldENoYXQuQ2FsbFNldHRpbmdzQnVpbGRlcjtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuXG59XG4iLCI8Y29tZXRjaGF0LWNhbGxzY3JlZW4gW2NhbGxzY3JlZW5TdHlsZV09XCJvbmdvaW5nQ2FsbFN0eWxlXCIgW2NhbGxTZXR0aW5nc0J1aWxkZXJdPVwiY2FsbFNldHRpbmdzQnVpbGRlclwiIFtyZXNpemVJY29uSG92ZXJUZXh0XT1cInJlc2l6ZUljb25Ib3ZlclRleHRcIiBbc2Vzc2lvbklEXT1cInNlc3Npb25JRFwiIFttaW5pbWl6ZUljb25VUkxdPVwibWluaW1pemVJY29uVVJMXCIgW21heGltaXplSWNvblVSTF09XCJtYXhpbWl6ZUljb25VUkxcIj48L2NvbWV0Y2hhdC1jYWxsc2NyZWVuPiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdE9uZ29pbmdDYWxsL2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGwvY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdE9uZ29pbmdDYWxsL2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGwvY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLFNBQVMsRUFBRSxLQUFLLEVBQTBDLE1BQU0sZUFBZSxDQUFDO0FBRXJJLE9BQVEsMkJBQTJCLENBQUM7QUFDcEMsT0FBTyx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFFMUQ7Ozs7Ozs7O0VBUUU7QUFPRixNQUFNLE9BQU8sNkJBQTZCO0lBb0J4QyxZQUFvQixZQUFrQztRQUFsQyxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFuQjdDLHFCQUFnQixHQUFvQjtZQUMzQyxTQUFTLEVBQUUsTUFBTTtZQUNqQixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFVBQVUsRUFBRSxTQUFTO1lBQ3RCLFNBQVMsRUFBQyxPQUFPO1lBQ2pCLFFBQVEsRUFBQyxPQUFPO1lBQ2hCLDRCQUE0QjtZQUM1Qiw0QkFBNEI7U0FDNUIsQ0FBQTtRQUNRLHdCQUFtQixHQUFVLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxjQUFTLEdBQVUsRUFBRSxDQUFBO1FBQ3JCLG9CQUFlLEdBQVUsd0JBQXdCLENBQUE7UUFDakQsb0JBQWUsR0FBVSwwQkFBMEIsQ0FBQTtJQVE1RCxDQUFDO0lBTkQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFLSCxtQkFBbUI7UUFDakIsSUFBSSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUM7WUFDckMsU0FBUyxFQUFFLE1BQU07WUFDakIsUUFBUSxFQUFFLE1BQU07WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxZQUFZLEVBQUUsR0FBRztZQUNqQixVQUFVLEVBQUUsU0FBUztZQUN4QixTQUFTLEVBQUMsT0FBTztZQUNqQixRQUFRLEVBQUMsT0FBTztZQUNoQixnQkFBZ0IsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNsRSxnQkFBZ0IsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUNoRSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBQyxHQUFHLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBQyxDQUFBO0lBQ3BFLENBQUM7OzJIQXJDWSw2QkFBNkI7K0dBQTdCLDZCQUE2Qix3U0N0QjFDLHdSQUEwUTs0RkRzQjdQLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSx3QkFBd0I7NEdBTXpCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFXRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSAnQGNvbWV0Y2hhdC1wcm8vY2hhdCc7XG5pbXBvcnQgIFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0ICdAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZCdcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ2FsbHNjcmVlblN0eWxlIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWQnO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG4vKipcbipcbiogQ29tZXRDaGF0T25nb2luZ0NhbGxDb21wb25lbnQgaXMgYSBjb21wb25lbnQgd2hpYyBzaG93cyBvdXRnb2luZyBjYWxsIHNjcmVlbiBmb3IgZGVmYXVsdCBhdWRpbyBhbmQgdmlkZW8gY2FsbC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtb25nb2luZy1jYWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LW9uZ29pbmctY2FsbC5jb21wb25lbnQuc2Nzc1wiXSxcblxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRPbmdvaW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9uZ29pbmdDYWxsU3R5bGU6IENhbGxzY3JlZW5TdHlsZSA9IHtcbiAgICBtYXhIZWlnaHQ6IFwiMTAwJVwiLFxuICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgYmFja2dyb3VuZDogXCIjMWMyMjI2XCIsXG5cdCAgbWluSGVpZ2h0OlwiNDAwcHhcIixcblx0ICBtaW5XaWR0aDpcIjQwMHB4XCIsXG5cdCAgLy8gbWluaW1pemVJY29uVGludDpcIndoaXRlXCIsXG5cdCAgLy8gbWF4aW1pemVJY29uVGludDpcIndoaXRlXCIsXG4gIH1cbiAgQElucHV0KCkgcmVzaXplSWNvbkhvdmVyVGV4dDpzdHJpbmcgPSBsb2NhbGl6ZShcIlJFU0laRVwiKVxuICBASW5wdXQoKSBzZXNzaW9uSUQ6c3RyaW5nID0gXCJcIlxuICBASW5wdXQoKSBtaW5pbWl6ZUljb25VUkw6c3RyaW5nID0gXCJhc3NldHMvcmVkdWNlLXNpemUuc3ZnXCJcbiAgQElucHV0KCkgbWF4aW1pemVJY29uVVJMOnN0cmluZyA9IFwiYXNzZXRzL2luY3JlYXNlLXNpemUuc3ZnXCJcbiAgQElucHV0KCkgY2FsbFNldHRpbmdzQnVpbGRlciE6Q29tZXRDaGF0LkNhbGxTZXR0aW5nc0J1aWxkZXI7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0b25nb2luZ0NhbGxTdHlsZSgpXG4gIH1cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0aGVtZVNlcnZpY2U6Q29tZXRDaGF0VGhlbWVTZXJ2aWNlKXtcblxuXG4gIH1cbnNldG9uZ29pbmdDYWxsU3R5bGUoKXtcbiAgbGV0IGRlZmF1bHRTdHlsZSA9IG5ldyBDYWxsc2NyZWVuU3R5bGUoe1xuICAgIG1heEhlaWdodDogXCIxMDAlXCIsXG4gICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIjBcIixcbiAgICBiYWNrZ3JvdW5kOiBcIiMxYzIyMjZcIixcblx0bWluSGVpZ2h0OlwiNDAwcHhcIixcblx0bWluV2lkdGg6XCI0MDBweFwiLFxuXHRtaW5pbWl6ZUljb25UaW50OnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KFwiZGFya1wiKSxcblx0bWF4aW1pemVJY29uVGludDp0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudChcImRhcmtcIiksXG4gIH0pO1xuICB0aGlzLm9uZ29pbmdDYWxsU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMub25nb2luZ0NhbGxTdHlsZX1cbn1cblxufVxuIiwiPGNvbWV0Y2hhdC1jYWxsc2NyZWVuIFtjYWxsc2NyZWVuU3R5bGVdPVwib25nb2luZ0NhbGxTdHlsZVwiIFtjYWxsU2V0dGluZ3NCdWlsZGVyXT1cImNhbGxTZXR0aW5nc0J1aWxkZXJcIiBbcmVzaXplSWNvbkhvdmVyVGV4dF09XCJyZXNpemVJY29uSG92ZXJUZXh0XCIgW3Nlc3Npb25JRF09XCJzZXNzaW9uSURcIiBbbWluaW1pemVJY29uVVJMXT1cIm1pbmltaXplSWNvblVSTFwiIFttYXhpbWl6ZUljb25VUkxdPVwibWF4aW1pemVJY29uVVJMXCI+PC9jb21ldGNoYXQtY2FsbHNjcmVlbj4iXX0=