aril 1.2.36 → 1.2.38
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.
- package/boot/config/api/src/api.service.d.ts +2 -1
- package/esm2022/boot/config/api/src/api.service.mjs +24 -7
- package/esm2022/boot/host/src/bootstrap.mjs +13 -4
- package/esm2022/permission/aril-permission.mjs +5 -0
- package/esm2022/permission/index.mjs +4 -0
- package/esm2022/permission/src/constants.mjs +4 -0
- package/esm2022/permission/src/has-permission.directive.mjs +49 -0
- package/esm2022/permission/src/permission.service.mjs +57 -0
- package/esm2022/provider/src/index.mjs +2 -1
- package/esm2022/provider/src/prodiveHost.mjs +3 -2
- package/esm2022/provider/src/provideHostPermissions.mjs +43 -0
- package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +146 -49
- package/esm2022/theme/layout/service/interfaces/interfaces.mjs +1 -1
- package/esm2022/theme/layout/service/notifications.service.mjs +8 -2
- package/fesm2022/{aril-app.component-W3wwVSp1.mjs → aril-app.component-BUjucZ0J.mjs} +2 -1
- package/fesm2022/{aril-app.component-W3wwVSp1.mjs.map → aril-app.component-BUjucZ0J.mjs.map} +1 -1
- package/fesm2022/aril-boot-config-api.mjs +23 -6
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +12 -3
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/aril-permission.mjs +114 -0
- package/fesm2022/aril-permission.mjs.map +1 -0
- package/fesm2022/aril-provider.mjs +44 -2
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +145 -39
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril.mjs +13 -4
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +87 -81
- package/permission/index.d.ts +3 -0
- package/permission/src/constants.d.ts +1 -0
- package/permission/src/has-permission.directive.d.ts +16 -0
- package/permission/src/permission.service.d.ts +15 -0
- package/provider/src/index.d.ts +1 -0
- package/provider/src/provideHostPermissions.d.ts +6 -0
- package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +2288 -2267
- package/theme/layout/app/notifications/notifications-sidebar.component.html +66 -68
- package/theme/layout/app/notifications/notifications-sidebar.component.scss +234 -120
- package/theme/layout/app/notifications/notifications-sidebar.component.ts +182 -56
- package/theme/layout/service/interfaces/interfaces.d.ts +5 -1
- package/theme/layout/service/interfaces/interfaces.ts +6 -1
- package/theme/layout/service/notifications.service.d.ts +1 -0
- package/theme/layout/service/notifications.service.ts +5 -0
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, effect, signal } from '@angular/core';
|
|
2
|
+
import { Component, computed, effect, signal, untracked } from '@angular/core';
|
|
3
3
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { PaginatorModule } from 'primeng/paginator';
|
|
7
|
-
import { ScrollPanelModule } from 'primeng/scrollpanel';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { MenuModule } from 'primeng/menu';
|
|
8
6
|
import { SidebarModule } from 'primeng/sidebar';
|
|
9
7
|
import { TooltipModule } from 'primeng/tooltip';
|
|
10
8
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
11
9
|
import { TranslocoModule } from '@ngneat/transloco';
|
|
12
|
-
import { Subject, switchMap } from 'rxjs';
|
|
10
|
+
import { map, mergeMap, Subject, switchMap } from 'rxjs';
|
|
13
11
|
import { ButtonComponent } from 'aril/ui/button';
|
|
12
|
+
import { SwitchComponent } from 'aril/ui/switch';
|
|
14
13
|
import { regularIcons, solidIcons } from 'aril/util/lib';
|
|
15
14
|
import { SafePipe } from 'aril/util/pipes';
|
|
16
15
|
import { ActivityTypesEnum, DetailNotificationTypeEnum } from '../../service/interfaces/enum';
|
|
@@ -20,12 +19,13 @@ import * as i2 from "../../service/notifications.service";
|
|
|
20
19
|
import * as i3 from "@ngneat/transloco";
|
|
21
20
|
import * as i4 from "@angular/router";
|
|
22
21
|
import * as i5 from "keycloak-angular";
|
|
23
|
-
import * as i6 from "
|
|
24
|
-
import * as i7 from "
|
|
25
|
-
import * as i8 from "primeng/
|
|
26
|
-
import * as i9 from "primeng/
|
|
27
|
-
import * as i10 from "primeng/
|
|
28
|
-
import * as i11 from "
|
|
22
|
+
import * as i6 from "@angular/common";
|
|
23
|
+
import * as i7 from "@angular/forms";
|
|
24
|
+
import * as i8 from "primeng/sidebar";
|
|
25
|
+
import * as i9 from "primeng/api";
|
|
26
|
+
import * as i10 from "primeng/menu";
|
|
27
|
+
import * as i11 from "primeng/tooltip";
|
|
28
|
+
import * as i12 from "@fortawesome/angular-fontawesome";
|
|
29
29
|
export class NotificationsSidebarComponent {
|
|
30
30
|
get getUserPhones() {
|
|
31
31
|
const phones = this.keycloak.getKeycloakInstance().profile?.attributes?.['phone'];
|
|
@@ -40,14 +40,25 @@ export class NotificationsSidebarComponent {
|
|
|
40
40
|
get getUserMail() {
|
|
41
41
|
return this.keycloak.getKeycloakInstance().profile?.email;
|
|
42
42
|
}
|
|
43
|
+
get unreadCount() {
|
|
44
|
+
return this.layoutService.getUnreadNotificationCount();
|
|
45
|
+
}
|
|
46
|
+
get loading() {
|
|
47
|
+
return !!this.notificationsService.states.getNotifications?.waitingForResponse;
|
|
48
|
+
}
|
|
43
49
|
constructor(layoutService, notificationsService, translocoService, router, keycloak) {
|
|
44
50
|
this.layoutService = layoutService;
|
|
45
51
|
this.notificationsService = notificationsService;
|
|
46
52
|
this.translocoService = translocoService;
|
|
47
53
|
this.router = router;
|
|
48
54
|
this.keycloak = keycloak;
|
|
55
|
+
this.pageSize = 10;
|
|
49
56
|
this.notifications = signal([]);
|
|
50
|
-
this.
|
|
57
|
+
this.totalRecords = signal(0);
|
|
58
|
+
this.onlyUnread = signal(true);
|
|
59
|
+
this.pageNumber = signal(1);
|
|
60
|
+
this.remainingCount = computed(() => Math.max(this.totalRecords() - this.notifications().length, 0));
|
|
61
|
+
this.menuItems = [];
|
|
51
62
|
this.ActivityTypesEnum = ActivityTypesEnum;
|
|
52
63
|
this.DetailNotificationTypeEnum = DetailNotificationTypeEnum;
|
|
53
64
|
this.regularIcons = regularIcons;
|
|
@@ -55,45 +66,74 @@ export class NotificationsSidebarComponent {
|
|
|
55
66
|
this.oneMonthAgo = new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000);
|
|
56
67
|
this.subjects = {
|
|
57
68
|
markAsRead: new Subject(),
|
|
69
|
+
markAllAsRead: new Subject(),
|
|
58
70
|
loadNotifications: new Subject()
|
|
59
71
|
};
|
|
60
|
-
this.markAsReadService = toSignal(this.subjects.markAsRead.pipe(
|
|
72
|
+
this.markAsReadService = toSignal(this.subjects.markAsRead.pipe(mergeMap((id) => this.notificationsService.markAsReadNotification(id).pipe(map((result) => ({ result, id }))))));
|
|
73
|
+
this.markAllAsReadService = toSignal(this.subjects.markAllAsRead.pipe(switchMap(() => this.notificationsService.markAllAsReadNotification({
|
|
74
|
+
toList: [this.getUserMail, ...this.getUserPhones],
|
|
75
|
+
endDate: new Date().dateToLong('time') || 0
|
|
76
|
+
}))));
|
|
61
77
|
this.loadNotificationsService = toSignal(this.subjects.loadNotifications.pipe(switchMap(() => this.notificationsService.getNotifications({
|
|
62
78
|
pager: {
|
|
63
|
-
pageSize:
|
|
64
|
-
pageNumber:
|
|
79
|
+
pageSize: this.pageSize,
|
|
80
|
+
pageNumber: this.pageNumber()
|
|
65
81
|
},
|
|
66
82
|
startDate: this.oneMonthAgo.dateToLong('time') || 0,
|
|
67
83
|
endDate: new Date().dateToLong('time') || 0,
|
|
68
|
-
read: false,
|
|
69
|
-
toList: [this.getUserMail, ...this.getUserPhones]
|
|
84
|
+
...(this.onlyUnread() ? { read: false } : {}),
|
|
85
|
+
toList: [this.getUserMail, ...this.getUserPhones]
|
|
70
86
|
}))));
|
|
71
87
|
this.initializeEffects();
|
|
72
88
|
}
|
|
73
89
|
ngOnInit() {
|
|
74
|
-
this.loadNotifications();
|
|
75
|
-
}
|
|
76
|
-
loadNotifications() {
|
|
77
90
|
this.subjects.loadNotifications.next();
|
|
78
91
|
}
|
|
79
92
|
initializeEffects() {
|
|
80
93
|
effect(() => {
|
|
81
94
|
const service = this.loadNotificationsService();
|
|
82
95
|
if (service?.response) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
this.
|
|
96
|
+
const result = service.response.result || [];
|
|
97
|
+
const isFirstPage = untracked(this.pageNumber) === 1;
|
|
98
|
+
this.notifications.update((current) => isFirstPage ? result : [...current, ...result.filter((item) => !current.some((existing) => existing.id === item.id))]);
|
|
99
|
+
this.totalRecords.set(service.response.resultInfo.totalItem || 0);
|
|
100
|
+
if (untracked(this.onlyUnread)) {
|
|
101
|
+
this.layoutService.setUnreadNotificationCount(service.response.resultInfo.totalItem || 0);
|
|
102
|
+
}
|
|
86
103
|
}
|
|
87
104
|
}, { allowSignalWrites: true });
|
|
88
105
|
effect(() => {
|
|
89
|
-
const
|
|
106
|
+
const marked = this.markAsReadService();
|
|
107
|
+
if (marked?.result?.response) {
|
|
108
|
+
this.applyMarkedAsRead(marked.id);
|
|
109
|
+
}
|
|
110
|
+
}, { allowSignalWrites: true });
|
|
111
|
+
effect(() => {
|
|
112
|
+
const service = this.markAllAsReadService();
|
|
90
113
|
if (service?.response) {
|
|
91
|
-
this.
|
|
92
|
-
if (this.selectedNotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
|
|
93
|
-
this.router.navigate([`mng/todo-tasks/detail/${this.selectedNotification?.referenceId}`]);
|
|
94
|
-
}
|
|
114
|
+
this.applyAllMarkedAsRead();
|
|
95
115
|
}
|
|
96
|
-
});
|
|
116
|
+
}, { allowSignalWrites: true });
|
|
117
|
+
}
|
|
118
|
+
applyMarkedAsRead(id) {
|
|
119
|
+
if (untracked(this.onlyUnread)) {
|
|
120
|
+
this.notifications.update((items) => items.filter((item) => item.id !== id));
|
|
121
|
+
this.totalRecords.update((total) => Math.max(total - 1, 0));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this.notifications.update((items) => items.map((item) => (item.id === id ? { ...item, read: true } : item)));
|
|
125
|
+
}
|
|
126
|
+
this.layoutService.setUnreadNotificationCount(Math.max(this.layoutService.getUnreadNotificationCount() - 1, 0));
|
|
127
|
+
}
|
|
128
|
+
applyAllMarkedAsRead() {
|
|
129
|
+
if (untracked(this.onlyUnread)) {
|
|
130
|
+
this.notifications.set([]);
|
|
131
|
+
this.totalRecords.set(0);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.notifications.update((items) => items.map((item) => (item.read ? item : { ...item, read: true })));
|
|
135
|
+
}
|
|
136
|
+
this.layoutService.setUnreadNotificationCount(0);
|
|
97
137
|
}
|
|
98
138
|
get visible() {
|
|
99
139
|
return this.layoutService.state.notificationsSidebarVisible;
|
|
@@ -101,24 +141,82 @@ export class NotificationsSidebarComponent {
|
|
|
101
141
|
set visible(value) {
|
|
102
142
|
this.layoutService.state.notificationsSidebarVisible = value;
|
|
103
143
|
}
|
|
144
|
+
onOnlyUnreadChange(value) {
|
|
145
|
+
this.onlyUnread.set(value);
|
|
146
|
+
this.pageNumber.set(1);
|
|
147
|
+
this.notifications.set([]);
|
|
148
|
+
this.subjects.loadNotifications.next();
|
|
149
|
+
}
|
|
150
|
+
onSidebarShow() {
|
|
151
|
+
this.pageNumber.set(1);
|
|
152
|
+
this.subjects.loadNotifications.next();
|
|
153
|
+
}
|
|
154
|
+
showMore() {
|
|
155
|
+
this.pageNumber.set(Math.floor(this.notifications().length / this.pageSize) + 1);
|
|
156
|
+
this.subjects.loadNotifications.next();
|
|
157
|
+
}
|
|
158
|
+
toggleMenu(event, menu) {
|
|
159
|
+
this.menuItems = [
|
|
160
|
+
...(this.unreadCount > 0 ?
|
|
161
|
+
[
|
|
162
|
+
{
|
|
163
|
+
label: this.translocoService.translate('notifications.markAllAsRead'),
|
|
164
|
+
icon: 'pi pi-check-circle',
|
|
165
|
+
command: () => this.subjects.markAllAsRead.next()
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
: []),
|
|
169
|
+
{
|
|
170
|
+
label: this.translocoService.translate('notifications.allNotificationsPage'),
|
|
171
|
+
icon: 'pi pi-external-link',
|
|
172
|
+
command: () => this.navigateToAllNotifications()
|
|
173
|
+
}
|
|
174
|
+
];
|
|
175
|
+
menu.toggle(event);
|
|
176
|
+
}
|
|
104
177
|
markNotificationAsRead(notification) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
this.visible = false;
|
|
108
|
-
if (notification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
|
|
109
|
-
this.router.navigate([`mng/todo-tasks/detail/${notification?.referenceId}`]);
|
|
178
|
+
if (!notification.read) {
|
|
179
|
+
this.subjects.markAsRead.next(notification.id);
|
|
110
180
|
}
|
|
111
|
-
|
|
112
|
-
|
|
181
|
+
}
|
|
182
|
+
openNotification(notification) {
|
|
183
|
+
const isTodo = notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM;
|
|
184
|
+
const isBatch = notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB;
|
|
185
|
+
if (!isTodo && !isBatch) {
|
|
186
|
+
return;
|
|
113
187
|
}
|
|
188
|
+
this.markNotificationAsRead(notification);
|
|
189
|
+
this.visible = false;
|
|
190
|
+
const route = isTodo ? `mng/todo-tasks/detail/${notification.referenceId}` : `mng/bulk-operations/${notification.referenceId}`;
|
|
191
|
+
this.router.navigate([route]);
|
|
114
192
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
193
|
+
isNavigable(notification) {
|
|
194
|
+
return (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||
|
|
195
|
+
notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB);
|
|
196
|
+
}
|
|
197
|
+
getNotificationIcon(notification) {
|
|
198
|
+
if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
|
|
199
|
+
return solidIcons.faListCheck;
|
|
118
200
|
}
|
|
201
|
+
if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {
|
|
202
|
+
return solidIcons.faGear;
|
|
203
|
+
}
|
|
204
|
+
if (notification.type === ActivityTypesEnum.SMS) {
|
|
205
|
+
return regularIcons.faMessage;
|
|
206
|
+
}
|
|
207
|
+
return notification.read ? regularIcons.faEnvelopeOpen : regularIcons.faEnvelope;
|
|
119
208
|
}
|
|
120
|
-
|
|
121
|
-
|
|
209
|
+
getNotificationIconClass(notification) {
|
|
210
|
+
if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
|
|
211
|
+
return 'todo';
|
|
212
|
+
}
|
|
213
|
+
if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {
|
|
214
|
+
return 'batch';
|
|
215
|
+
}
|
|
216
|
+
if (notification.type === ActivityTypesEnum.SMS) {
|
|
217
|
+
return 'sms';
|
|
218
|
+
}
|
|
219
|
+
return notification.read ? 'email-read' : 'email-unread';
|
|
122
220
|
}
|
|
123
221
|
getNotificationTitle(notification) {
|
|
124
222
|
return notification.templateTitle || notification.templateCode || '';
|
|
@@ -170,22 +268,21 @@ export class NotificationsSidebarComponent {
|
|
|
170
268
|
this.visible = false;
|
|
171
269
|
}
|
|
172
270
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.NotificationsService }, { token: i3.TranslocoService }, { token: i4.Router }, { token: i5.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
173
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i9.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i11.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
|
|
271
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i8.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i10.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: SwitchComponent, selector: "aril-switch[ngModel], aril-switch[formControl], aril-switch[formControlName]", inputs: ["tabindex"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i12.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
|
|
174
272
|
}
|
|
175
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
|
|
176
274
|
type: Component,
|
|
177
275
|
args: [{ standalone: true, selector: 'app-notifications-sidebar', imports: [
|
|
178
276
|
CommonModule,
|
|
277
|
+
FormsModule,
|
|
179
278
|
SidebarModule,
|
|
180
|
-
|
|
181
|
-
ConfirmDialogModule,
|
|
182
|
-
PaginatorModule,
|
|
279
|
+
MenuModule,
|
|
183
280
|
ButtonComponent,
|
|
281
|
+
SwitchComponent,
|
|
184
282
|
TranslocoModule,
|
|
185
283
|
TooltipModule,
|
|
186
|
-
BadgeModule,
|
|
187
284
|
FontAwesomeModule,
|
|
188
285
|
SafePipe
|
|
189
|
-
], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
|
|
286
|
+
], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
|
|
190
287
|
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.NotificationsService }, { type: i3.TranslocoService }, { type: i4.Router }, { type: i5.KeycloakService }] });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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Q0FDRyxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsUUFBUTtxQkFDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgcmVndWxhckljb25zLCBzb2xpZEljb25zIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcbmltcG9ydCB7IFNhZmVQaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2aXR5VHlwZXNFbnVtLCBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtbm90aWZpY2F0aW9ucy1zaWRlYmFyJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRDb25maXJtRGlhbG9nTW9kdWxlLFxyXG5cdFx0UGFnaW5hdG9yTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEJhZGdlTW9kdWxlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGUsXHJcblx0XHRTYWZlUGlwZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRub3RpZmljYXRpb25zID0gc2lnbmFsPFNtc0VtYWlsQXVkaXRSZXNwb25zZURUT1tdPihbXSk7XHJcblx0c2VsZWN0ZWROb3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyB8IG51bGwgPSBudWxsO1xyXG5cclxuXHRBY3Rpdml0eVR5cGVzRW51bSA9IEFjdGl2aXR5VHlwZXNFbnVtO1xyXG5cdERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtID0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW07XHJcblxyXG5cdHJlZ3VsYXJJY29ucyA9IHJlZ3VsYXJJY29ucztcclxuXHRzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHJcblx0b25lTW9udGhBZ28gPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIDMwICogMjQgKiA2MCAqIDYwICogMTAwMCk7XHJcblxyXG5cdHByaXZhdGUgc3ViamVjdHMgPSB7XHJcblx0XHRtYXJrQXNSZWFkOiBuZXcgU3ViamVjdDxzdHJpbmc+KCksXHJcblx0XHRsb2FkTm90aWZpY2F0aW9uczogbmV3IFN1YmplY3Q8dm9pZD4oKVxyXG5cdH07XHJcblxyXG5cdG1hcmtBc1JlYWRTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQucGlwZShzd2l0Y2hNYXAoKGlkKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLm1hcmtBc1JlYWROb3RpZmljYXRpb24oaWQpKSlcclxuXHQpO1xyXG5cclxuXHRnZXQgZ2V0VXNlclBob25lcygpOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCBwaG9uZXMgPSB0aGlzLmtleWNsb2FrLmdldEtleWNsb2FrSW5zdGFuY2UoKS5wcm9maWxlPy5hdHRyaWJ1dGVzPy5bJ3Bob25lJ107XHJcblx0XHRpZiAocGhvbmVzICYmIEFycmF5LmlzQXJyYXkocGhvbmVzKSkge1xyXG5cdFx0XHRyZXR1cm4gcGhvbmVzO1xyXG5cdFx0fSBlbHNlIGlmIChwaG9uZXMgJiYgdHlwZW9mIHBob25lcyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0cmV0dXJuIFtwaG9uZXNdO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFtdO1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldFVzZXJNYWlsKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpLnByb2ZpbGU/LmVtYWlsIGFzIHN0cmluZztcclxuXHR9XHJcblxyXG5cdGxvYWROb3RpZmljYXRpb25zU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKCkgPT5cclxuXHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldE5vdGlmaWNhdGlvbnMoe1xyXG5cdFx0XHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRcdFx0cGFnZVNpemU6IDEwLFxyXG5cdFx0XHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3RhcnREYXRlOiB0aGlzLm9uZU1vbnRoQWdvLmRhdGVUb0xvbmcoJ3RpbWUnKSB8fCAwLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZTogbmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMCxcclxuXHRcdFx0XHRcdHJlYWQ6IGZhbHNlLFxyXG5cdFx0XHRcdFx0dG9MaXN0OiBbdGhpcy5nZXRVc2VyTWFpbCwgLi4udGhpcy5nZXRVc2VyUGhvbmVzXSxcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uc1NlcnZpY2U6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5pbml0aWFsaXplRWZmZWN0cygpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWROb3RpZmljYXRpb25zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMuc2V0KHNlcnZpY2UucmVzcG9uc2UucmVzdWx0KTtcclxuXHRcdFx0XHRcdC8vIFVwZGF0ZSB1bnJlYWQgY291bnQgaW4gbGF5b3V0U2VydmljZVxyXG5cdFx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KHNlcnZpY2U/LnJlc3BvbnNlLnJlc3VsdEluZm8udG90YWxJdGVtIHx8IDApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubWFya0FzUmVhZFNlcnZpY2UoKTtcclxuXHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RlZE5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNKSB7XHJcblx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYG1uZy90b2RvLXRhc2tzL2RldGFpbC8ke3RoaXMuc2VsZWN0ZWROb3RpZmljYXRpb24/LnJlZmVyZW5jZUlkfWBdKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm5vdGlmaWNhdGlvbnNTaWRlYmFyVmlzaWJsZTtcclxuXHR9XHJcblxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubm90aWZpY2F0aW9uc1NpZGViYXJWaXNpYmxlID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uO1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5tYXJrQXNSZWFkLm5leHQobm90aWZpY2F0aW9uLmlkKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChub3RpZmljYXRpb24/LmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSkge1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYG1uZy90b2RvLXRhc2tzL2RldGFpbC8ke25vdGlmaWNhdGlvbj8ucmVmZXJlbmNlSWR9YF0pO1xyXG5cdFx0fSBlbHNlIGlmIChub3RpZmljYXRpb24/LmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLkJBVENIX0pPQikge1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYG1uZy9idWxrLW9wZXJhdGlvbnMvJHtub3RpZmljYXRpb24/LnJlZmVyZW5jZUlkfWBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG1hcmtOb3RpZmljYXRpb25Bc1JlYWRPbkRvdEljb24obm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiB2b2lkIHtcclxuXHRcdGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0dGhpcy5zdWJqZWN0cy5tYXJrQXNSZWFkLm5leHQobm90aWZpY2F0aW9uLmlkKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRyYWNrQnlOb3RpZmljYXRpb25JZChpbmRleDogbnVtYmVyLCBub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLmlkO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uVGl0bGUobm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIG5vdGlmaWNhdGlvbi50ZW1wbGF0ZVRpdGxlIHx8IG5vdGlmaWNhdGlvbi50ZW1wbGF0ZUNvZGUgfHwgJyc7XHJcblx0fVxyXG5cclxuXHRnZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IHRydW5jYXRlZCA9XHJcblx0XHRcdG5vdGlmaWNhdGlvbi5jb250ZW50Py5sZW5ndGghID4gMjAwID8gbm90aWZpY2F0aW9uLmNvbnRlbnQ/LnN1YnN0cmluZygwLCAyMDApICsgJy4uLicgOiBub3RpZmljYXRpb24uY29udGVudDtcclxuXHRcdHJldHVybiB0cnVuY2F0ZWQgfHwgJyc7XHJcblx0fVxyXG5cclxuXHRmb3JtYXROb3RpZmljYXRpb25EYXRlKHN0YXJ0RGF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmICghc3RhcnREYXRlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGNvbnN0IGRhdGVTdHIgPSBzdGFydERhdGUudG9TdHJpbmcoKTtcclxuXHRcdGNvbnN0IHllYXIgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygwLCA0KSk7XHJcblx0XHRjb25zdCBtb250aCA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDQsIDYpKSAtIDE7XHJcblx0XHRjb25zdCBkYXkgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg2LCA4KSk7XHJcblx0XHRjb25zdCBob3VyID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoOCwgMTApKTtcclxuXHRcdGNvbnN0IG1pbnV0ZSA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDEwLCAxMikpO1xyXG5cdFx0Y29uc3Qgc2Vjb25kID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMTIsIDE0KSk7XHJcblxyXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcclxuXHRcdGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcblx0XHRjb25zdCBkaWZmTXMgPSBub3cuZ2V0VGltZSgpIC0gbm90aWZpY2F0aW9uRGF0ZS5nZXRUaW1lKCk7XHJcblxyXG5cdFx0Y29uc3QgZGlmZk1pbnV0ZXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjApKTtcclxuXHRcdGNvbnN0IGRpZmZIb3VycyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gKDEwMDAgKiA2MCAqIDYwKSk7XHJcblx0XHRjb25zdCBkaWZmRGF5cyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuXHRcdGNvbnN0IGRpZmZXZWVrcyA9IE1hdGguZmxvb3IoZGlmZkRheXMgLyA3KTtcclxuXHRcdGNvbnN0IGRpZmZNb250aHMgPSBNYXRoLmZsb29yKGRpZmZEYXlzIC8gMzApO1xyXG5cclxuXHRcdGlmIChkaWZmTWludXRlcyA8IDEpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5qdXN0Tm93Jyk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZNaW51dGVzIDwgNjApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5taW51dGVzQWdvJywgeyBjb3VudDogZGlmZk1pbnV0ZXMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZIb3VycyA8IDI0KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuaG91cnNBZ28nLCB7IGNvdW50OiBkaWZmSG91cnMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZEYXlzIDwgNykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmRheXNBZ28nLCB7IGNvdW50OiBkaWZmRGF5cyB9KTtcclxuXHRcdH0gZWxzZSBpZiAoZGlmZldlZWtzIDwgNCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLndlZWtzQWdvJywgeyBjb3VudDogZGlmZldlZWtzIH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5tb250aHNBZ28nLCB7IGNvdW50OiBkaWZmTW9udGhzIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmF2aWdhdGVUb0FsbE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21uZy9jb250cm9sLW1hbmFnZW1lbnQvc21zLWVtYWlsLWF1ZGl0J10pO1xyXG5cdFx0dGhpcy52aXNpYmxlID0gZmFsc2U7XHJcblx0fVxyXG59XHJcbiIsIjxwLXNpZGViYXJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFt0cmFuc2l0aW9uT3B0aW9uc109XCInLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJ1wiXHJcblx0c3R5bGVDbGFzcz1cImxheW91dC1ub3RpZmljYXRpb25zLXNpZGViYXIgdy1mdWxsIHNtOnctMzByZW1cIlxyXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ25vdGlmaWNhdGlvbnMnXCI+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJlbGwgdGV4dC1wcmltYXJ5IHRleHQteGxcIj48L2k+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPnt7IHQoJ3RpdGxlJykgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtY29udGVudFwiPlxyXG5cdFx0QGlmIChub3RpZmljYXRpb25zKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1saXN0XCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtaXRlbXNcIj5cclxuXHRcdFx0XHRcdFx0QGZvciAobm90aWZpY2F0aW9uIG9mIG5vdGlmaWNhdGlvbnMoKTsgdHJhY2sgdHJhY2tCeU5vdGlmaWNhdGlvbklkKCRpbmRleCwgbm90aWZpY2F0aW9uKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0W2NsYXNzLnVucmVhZC1pdGVtXT1cIiFub3RpZmljYXRpb24ucmVhZFwiXHJcblx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub3RpZmljYXRpb24/LmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CXHJcblx0XHRcdFx0XHRcdFx0XHRcdCkgP1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0taGVhZGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLlNNUykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWljb24gc21zLWljb25cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJyZWd1bGFySWNvbnMuZmFNZXNzYWdlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWljb24gZW1haWwtaWNvbiB1bnJlYWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxmYS1pY29uIFtpY29uXT1cInJlZ3VsYXJJY29ucy5mYUVudmVsb3BlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbi1pY29uIGVtYWlsLWljb24gcmVhZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb24gW2ljb25dPVwicmVndWxhckljb25zLmZhRW52ZWxvcGVPcGVuXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0aXRsZS10ZXh0IG1sLTJcIj57eyBnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm90aWZpY2F0aW9uLWRhdGVcIj57eyBmb3JtYXROb3RpZmljYXRpb25EYXRlKG5vdGlmaWNhdGlvbi5zZW5kaW5nRGF0ZSkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxmYS1pY29uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFDaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVucmVhZC1kb3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnbWFya0FzUmVhZCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJtYXJrTm90aWZpY2F0aW9uQXNSZWFkT25Eb3RJY29uKG5vdGlmaWNhdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLW1ldGFcIj48L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChnZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50LXByZXZpZXdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLkVNQUlMKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgW2lubmVySFRNTF09XCJub3RpZmljYXRpb24uY29udGVudCB8IHNhZmU6ICdodG1sJ1wiIGNsYXNzPVwiaHRtbC1wcmV2aWV3IGxpbmUtY2xhbXAtM1wiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidGV4dC1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCBlbXB0eS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGgzIGNsYXNzPVwiZW1wdHktdGl0bGVcIj57eyB0KCdub05vdGlmaWNhdGlvbnMnKSB9fTwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj57eyB0KCdub05vdGlmaWNhdGlvbnNEZXNjcmlwdGlvbicpIH19PC9wPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHAtMiBib3JkZXItdG9wLTEgc3VyZmFjZS1ib3JkZXJcIj5cclxuXHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0W2xhYmVsXT1cInQoJ2FsbFNob3cnKVwiXHJcblx0XHRcdFx0aWNvbj1cIkVYVEVSTkFMX0xJTktcIlxyXG5cdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0c2l6ZT1cIm1kXCJcclxuXHRcdFx0XHQoY2xpY2tFdmVudCk9XCJuYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpXCI+XHJcblx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PHAtY29uZmlybURpYWxvZz48L3AtY29uZmlybURpYWxvZz5cclxuPC9wLXNpZGViYXI+XHJcbiJdfQ==
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9B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LE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxXQUFXLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakcsQ0FBQzthQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO2FBQU0sSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBCQUEwQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQTVTVyw2QkFBNkI7a0dBQTdCLDZCQUE2QixxRkM3QzFDLHE4SkFzR0Esc3pMRHZFRSxZQUFZLDRIQUNaLFdBQVcsOFZBQ1gsYUFBYSxtZEFDYixVQUFVLG9xQkFDVixlQUFlLDhOQUNmLGVBQWUsOElBQ2YsZUFBZSxnT0FDZixhQUFhLDhCQUNiLGlCQUFpQiwrUkFDakIsUUFBUTs7MkZBS0csNkJBQTZCO2tCQWxCekMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFFBQVE7cUJBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgY29tcHV0ZWQsIGVmZmVjdCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE1lbnUsIE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnUnO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBJY29uUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9zd2l0Y2gnO1xyXG5pbXBvcnQgeyByZWd1bGFySWNvbnMsIHNvbGlkSWNvbnMgfSBmcm9tICdhcmlsL3V0aWwvbGliJztcclxuaW1wb3J0IHsgU2FmZVBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZpdHlUeXBlc0VudW0sIERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2VudW0nO1xyXG5pbXBvcnQgeyBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1ub3RpZmljYXRpb25zLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdE1lbnVNb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRTd2l0Y2hDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGUsXHJcblx0XHRTYWZlUGlwZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHBhZ2VTaXplID0gMTA7XHJcblxyXG5cdG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8U21zRW1haWxBdWRpdFJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHR0b3RhbFJlY29yZHMgPSBzaWduYWwoMCk7XHJcblx0b25seVVucmVhZCA9IHNpZ25hbCh0cnVlKTtcclxuXHRwYWdlTnVtYmVyID0gc2lnbmFsKDEpO1xyXG5cclxuXHRyZW1haW5pbmdDb3VudCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KHRoaXMudG90YWxSZWNvcmRzKCkgLSB0aGlzLm5vdGlmaWNhdGlvbnMoKS5sZW5ndGgsIDApKTtcclxuXHJcblx0bWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG5cdEFjdGl2aXR5VHlwZXNFbnVtID0gQWN0aXZpdHlUeXBlc0VudW07XHJcblx0RGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0gPSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bTtcclxuXHJcblx0cmVndWxhckljb25zID0gcmVndWxhckljb25zO1xyXG5cdHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRvbmVNb250aEFnbyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdG1hcmtBc1JlYWQ6IG5ldyBTdWJqZWN0PHN0cmluZz4oKSxcclxuXHRcdG1hcmtBbGxBc1JlYWQ6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRsb2FkTm90aWZpY2F0aW9uczogbmV3IFN1YmplY3Q8dm9pZD4oKVxyXG5cdH07XHJcblxyXG5cdG1hcmtBc1JlYWRTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQucGlwZShcclxuXHRcdFx0bWVyZ2VNYXAoKGlkKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLm1hcmtBc1JlYWROb3RpZmljYXRpb24oaWQpLnBpcGUobWFwKChyZXN1bHQpID0+ICh7IHJlc3VsdCwgaWQgfSkpKSlcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRtYXJrQWxsQXNSZWFkU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgoKSA9PlxyXG5cdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UubWFya0FsbEFzUmVhZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZTogbmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRsb2FkTm90aWZpY2F0aW9uc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKCgpID0+XHJcblx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXROb3RpZmljYXRpb25zKHtcclxuXHRcdFx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG5cdFx0XHRcdFx0XHRwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIoKVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN0YXJ0RGF0ZTogdGhpcy5vbmVNb250aEFnby5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMCxcclxuXHRcdFx0XHRcdGVuZERhdGU6IG5ldyBEYXRlKCkuZGF0ZVRvTG9uZygndGltZScpIHx8IDAsXHJcblx0XHRcdFx0XHQuLi4odGhpcy5vbmx5VW5yZWFkKCkgPyB7IHJlYWQ6IGZhbHNlIH0gOiB7fSksXHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGdldCBnZXRVc2VyUGhvbmVzKCk6IHN0cmluZ1tdIHtcclxuXHRcdGNvbnN0IHBob25lcyA9IHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpLnByb2ZpbGU/LmF0dHJpYnV0ZXM/LlsncGhvbmUnXTtcclxuXHRcdGlmIChwaG9uZXMgJiYgQXJyYXkuaXNBcnJheShwaG9uZXMpKSB7XHJcblx0XHRcdHJldHVybiBwaG9uZXM7XHJcblx0XHR9IGVsc2UgaWYgKHBob25lcyAmJiB0eXBlb2YgcGhvbmVzID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gW3Bob25lc107XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gW107XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0VXNlck1haWwoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5nZXRLZXljbG9ha0luc3RhbmNlKCkucHJvZmlsZT8uZW1haWwgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0Z2V0IHVucmVhZENvdW50KCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk7XHJcblx0fVxyXG5cclxuXHRnZXQgbG9hZGluZygpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAhIXRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3RhdGVzLmdldE5vdGlmaWNhdGlvbnM/LndhaXRpbmdGb3JSZXNwb25zZTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSBzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdCB8fCBbXTtcclxuXHRcdFx0XHRcdGNvbnN0IGlzRmlyc3RQYWdlID0gdW50cmFja2VkKHRoaXMucGFnZU51bWJlcikgPT09IDE7XHJcblx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChjdXJyZW50KSA9PlxyXG5cdFx0XHRcdFx0XHRpc0ZpcnN0UGFnZSA/IHJlc3VsdCA6IFsuLi5jdXJyZW50LCAuLi5yZXN1bHQuZmlsdGVyKChpdGVtKSA9PiAhY3VycmVudC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcuaWQgPT09IGl0ZW0uaWQpKV1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdGlmICh1bnRyYWNrZWQodGhpcy5vbmx5VW5yZWFkKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IG1hcmtlZCA9IHRoaXMubWFya0FzUmVhZFNlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAobWFya2VkPy5yZXN1bHQ/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFwcGx5TWFya2VkQXNSZWFkKG1hcmtlZC5pZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5tYXJrQWxsQXNSZWFkU2VydmljZSgpO1xyXG5cdFx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hcHBseUFsbE1hcmtlZEFzUmVhZCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhcHBseU1hcmtlZEFzUmVhZChpZDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRpZiAodW50cmFja2VkKHRoaXMub25seVVucmVhZCkpIHtcclxuXHRcdFx0dGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZSgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQpKTtcclxuXHRcdFx0dGhpcy50b3RhbFJlY29yZHMudXBkYXRlKCh0b3RhbCkgPT4gTWF0aC5tYXgodG90YWwgLSAxLCAwKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gaWQgPyB7IC4uLml0ZW0sIHJlYWQ6IHRydWUgfSA6IGl0ZW0pKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoTWF0aC5tYXgodGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCkgLSAxLCAwKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFwcGx5QWxsTWFya2VkQXNSZWFkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHVudHJhY2tlZCh0aGlzLm9ubHlVbnJlYWQpKSB7XHJcblx0XHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoMCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5yZWFkID8gaXRlbSA6IHsgLi4uaXRlbSwgcmVhZDogdHJ1ZSB9KSkpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KDApO1xyXG5cdH1cclxuXHJcblx0Z2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm5vdGlmaWNhdGlvbnNTaWRlYmFyVmlzaWJsZTtcclxuXHR9XHJcblxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubm90aWZpY2F0aW9uc1NpZGViYXJWaXNpYmxlID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRvbk9ubHlVbnJlYWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMub25seVVucmVhZC5zZXQodmFsdWUpO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRvblNpZGViYXJTaG93KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0c2hvd01vcmUoKTogdm9pZCB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KE1hdGguZmxvb3IodGhpcy5ub3RpZmljYXRpb25zKCkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgKyAxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlTWVudShldmVudDogRXZlbnQsIG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVudUl0ZW1zID0gW1xyXG5cdFx0XHQuLi4odGhpcy51bnJlYWRDb3VudCA+IDAgP1xyXG5cdFx0XHRcdFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMubWFya0FsbEFzUmVhZCcpLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAncGkgcGktY2hlY2stY2lyY2xlJyxcclxuXHRcdFx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLm5leHQoKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0Olx0W10pLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMuYWxsTm90aWZpY2F0aW9uc1BhZ2UnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktZXh0ZXJuYWwtbGluaycsXHJcblx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpXHJcblx0XHRcdH1cclxuXHRcdF07XHJcblx0XHRtZW51LnRvZ2dsZShldmVudCk7XHJcblx0fVxyXG5cclxuXHRtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbi5yZWFkKSB7XHJcblx0XHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5uZXh0KG5vdGlmaWNhdGlvbi5pZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvcGVuTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRjb25zdCBpc1RvZG8gPSBub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNO1xyXG5cdFx0Y29uc3QgaXNCYXRjaCA9IG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0I7XHJcblx0XHRpZiAoIWlzVG9kbyAmJiAhaXNCYXRjaCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdFx0Y29uc3Qgcm91dGUgPSBpc1RvZG8gPyBgbW5nL3RvZG8tdGFza3MvZGV0YWlsLyR7bm90aWZpY2F0aW9uLnJlZmVyZW5jZUlkfWAgOiBgbW5nL2J1bGstb3BlcmF0aW9ucy8ke25vdGlmaWNhdGlvbi5yZWZlcmVuY2VJZH1gO1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcblx0fVxyXG5cclxuXHRpc05hdmlnYWJsZShub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSB8fFxyXG5cdFx0XHRub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IEljb25Qcm9wIHtcclxuXHRcdGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNKSB7XHJcblx0XHRcdHJldHVybiBzb2xpZEljb25zLmZhTGlzdENoZWNrO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuIHNvbGlkSWNvbnMuZmFHZWFyO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi50eXBlID09PSBBY3Rpdml0eVR5cGVzRW51bS5TTVMpIHtcclxuXHRcdFx0cmV0dXJuIHJlZ3VsYXJJY29ucy5mYU1lc3NhZ2U7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyByZWd1bGFySWNvbnMuZmFFbnZlbG9wZU9wZW4gOiByZWd1bGFySWNvbnMuZmFFbnZlbG9wZTtcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSkge1xyXG5cdFx0XHRyZXR1cm4gJ3RvZG8nO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuICdiYXRjaCc7XHJcblx0XHR9XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLlNNUykge1xyXG5cdFx0XHRyZXR1cm4gJ3Ntcyc7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyAnZW1haWwtcmVhZCcgOiAnZW1haWwtdW5yZWFkJztcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvblRpdGxlKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub3RpZmljYXRpb24udGVtcGxhdGVUaXRsZSB8fCBub3RpZmljYXRpb24udGVtcGxhdGVDb2RlIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB0cnVuY2F0ZWQgPVxyXG5cdFx0XHRub3RpZmljYXRpb24uY29udGVudD8ubGVuZ3RoISA+IDIwMCA/IG5vdGlmaWNhdGlvbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSArICcuLi4nIDogbm90aWZpY2F0aW9uLmNvbnRlbnQ7XHJcblx0XHRyZXR1cm4gdHJ1bmNhdGVkIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Zm9ybWF0Tm90aWZpY2F0aW9uRGF0ZShzdGFydERhdGU6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXN0YXJ0RGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblx0XHRjb25zdCBkYXRlU3RyID0gc3RhcnREYXRlLnRvU3RyaW5nKCk7XHJcblx0XHRjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMCwgNCkpO1xyXG5cdFx0Y29uc3QgbW9udGggPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg0LCA2KSkgLSAxO1xyXG5cdFx0Y29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoNiwgOCkpO1xyXG5cdFx0Y29uc3QgaG91ciA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDgsIDEwKSk7XHJcblx0XHRjb25zdCBtaW51dGUgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygxMCwgMTIpKTtcclxuXHRcdGNvbnN0IHNlY29uZCA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDEyLCAxNCkpO1xyXG5cclxuXHRcdGNvbnN0IG5vdGlmaWNhdGlvbkRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7XHJcblx0XHRjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0Y29uc3QgZGlmZk1zID0gbm93LmdldFRpbWUoKSAtIG5vdGlmaWNhdGlvbkRhdGUuZ2V0VGltZSgpO1xyXG5cclxuXHRcdGNvbnN0IGRpZmZNaW51dGVzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwKSk7XHJcblx0XHRjb25zdCBkaWZmSG91cnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCkpO1xyXG5cdFx0Y29uc3QgZGlmZkRheXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XHJcblx0XHRjb25zdCBkaWZmV2Vla3MgPSBNYXRoLmZsb29yKGRpZmZEYXlzIC8gNyk7XHJcblx0XHRjb25zdCBkaWZmTW9udGhzID0gTWF0aC5mbG9vcihkaWZmRGF5cyAvIDMwKTtcclxuXHJcblx0XHRpZiAoZGlmZk1pbnV0ZXMgPCAxKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuanVzdE5vdycpO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmTWludXRlcyA8IDYwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubWludXRlc0FnbycsIHsgY291bnQ6IGRpZmZNaW51dGVzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmSG91cnMgPCAyNCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmhvdXJzQWdvJywgeyBjb3VudDogZGlmZkhvdXJzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmRGF5cyA8IDcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5kYXlzQWdvJywgeyBjb3VudDogZGlmZkRheXMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZXZWVrcyA8IDQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS53ZWVrc0FnbycsIHsgY291bnQ6IGRpZmZXZWVrcyB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubW9udGhzQWdvJywgeyBjb3VudDogZGlmZk1vbnRocyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5hdmlnYXRlVG9BbGxOb3RpZmljYXRpb25zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtbmcvY29udHJvbC1tYW5hZ2VtZW50L3Ntcy1lbWFpbC1hdWRpdCddKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRwb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxyXG5cdHN0eWxlQ2xhc3M9XCJsYXlvdXQtbm90aWZpY2F0aW9ucy1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQob25TaG93KT1cIm9uU2lkZWJhclNob3coKVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnbm90aWZpY2F0aW9ucydcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCd0aXRsZScpIH19PC9zcGFuPlxyXG5cdFx0XHRcdEBpZiAodW5yZWFkQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInVucmVhZC1jb3VudC1jaGlwXCI+e3sgdW5yZWFkQ291bnQgfX08L3NwYW4+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGhlYWRlci1hY3Rpb25zXCI+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJvbmx5LXVucmVhZC1sYWJlbFwiPnt7IHQoJ29ubHlVbnJlYWQnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8YXJpbC1zd2l0Y2ggW25nTW9kZWxdPVwib25seVVucmVhZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Pbmx5VW5yZWFkQ2hhbmdlKCRldmVudClcIj48L2FyaWwtc3dpdGNoPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZWxsaXBzaXMtdiBoZWFkZXItbWVudS1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50LCBoZWFkZXJNZW51KVwiPjwvaT5cclxuXHRcdFx0XHQ8cC1tZW51ICNoZWFkZXJNZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIm1lbnVJdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAobm90aWZpY2F0aW9ucygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbGlzdFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWl0ZW1zXCI+XHJcblx0XHRcdFx0XHRAZm9yIChub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBub3RpZmljYXRpb24uaWQpIHtcclxuXHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy51bnJlYWQtaXRlbV09XCIhbm90aWZpY2F0aW9uLnJlYWRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5uYXZpZ2FibGVdPVwiaXNOYXZpZ2FibGUobm90aWZpY2F0aW9uKVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uKVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24taWNvblwiIFtuZ0NsYXNzXT1cImdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb24pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJnZXROb3RpZmljYXRpb25JY29uKG5vdGlmaWNhdGlvbilcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWJvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57eyBnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tdGltZVwiPnt7IGZvcm1hdE5vdGlmaWNhdGlvbkRhdGUobm90aWZpY2F0aW9uLnNlbmRpbmdEYXRlKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5yZWFkLWRvdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdtYXJrQXNSZWFkJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmstcmVhZC1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnbWFya0FzUmVhZCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdEBpZiAoZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLkVNQUlMKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5jb250ZW50IHwgc2FmZTogJ2h0bWwnXCIgY2xhc3M9XCJpdGVtLXByZXZpZXcgaHRtbC1wcmV2aWV3XCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiaXRlbS1wcmV2aWV3XCI+e3sgZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5UT0RPX0lURU0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuYXYtY2hpcFwiPnt7IHQoJ2dvVG9UYXNrRGV0YWlsJykgfX0gPGkgY2xhc3M9XCJwaSBwaS1hcnJvdy1yaWdodFwiPjwvaT48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmF2LWNoaXBcIj57eyB0KCdnb1RvQnVsa09wZXJhdGlvbnMnKSB9fSA8aSBjbGFzcz1cInBpIHBpLWFycm93LXJpZ2h0XCI+PC9pPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRAaWYgKHJlbWFpbmluZ0NvdW50KCkgPiAwKSB7XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzaG93LW1vcmVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdzaG93TW9yZScsIHsgY291bnQ6IHJlbWFpbmluZ0NvdW50KCkgfSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cInNob3dNb3JlKClcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIGlmICghbG9hZGluZykge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1iZWxsIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9ucycpIH19PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9uc0Rlc2NyaXB0aW9uJykgfX08L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG48L3Atc2lkZWJhcj5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L3NlcnZpY2UvaW50ZXJmYWNlcy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmZhY2VzIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2VudW0nO1xyXG5cclxuZXhwb3J0IHR5cGUgU2VsZWN0Qm94SXRlbSA9XHJcblx0fCBJbnRlcmZhY2VzLk1hcFN0cmluZ1N0cmluZ1xyXG5cdHwgSW50ZXJmYWNlcy5NYXBTdHJpbmdOdW1iZXJcclxuXHR8IEludGVyZmFjZXMuTWFwTnVtYmVyU3RyaW5nXHJcblx0fCBJbnRlcmZhY2VzLk1hcE51bWJlck51bWJlcjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUmVxdWVzdERUTyB7XHJcblx0Z3JvdXBOYW1lOiBzdHJpbmc7XHJcblx0cGFyYW1ldGVycz86IFBhcmFtZXRlcnM7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5Pzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJzIHtcclxuXHRhZGRpdGlvbmFsUHJvcDE6IEFkZGl0aW9uYWxQcm9wO1xyXG5cdGFkZGl0aW9uYWxQcm9wMjogQWRkaXRpb25hbFByb3A7XHJcblx0YWRkaXRpb25hbFByb3AzOiBBZGRpdGlvbmFsUHJvcDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBZGRpdGlvbmFsUHJvcCB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25Hcm91cERUTyB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRncm91cE5hbWU6IHN0cmluZztcclxuXHRncm91cERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblx0Z3JvdXBDb21tZW50OiBzdHJpbmc7XHJcblx0bG9hZFN0cmF0ZWd5OiBzdHJpbmc7XHJcblx0ZHluYW1pY1F1ZXJ5OiBzdHJpbmc7XHJcblx0cGFyZW50R3JvdXBJZDogbnVtYmVyO1xyXG5cdHNlbGVjdGlvbkl0ZW1zOiBTZWxlY3Rpb25JdGVtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uSXRlbSB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRncm91cElkOiBudW1iZXI7XHJcblx0c2VsZWN0aW9uS2V5OiBzdHJpbmc7XHJcblx0c2VsZWN0aW9uRGlzcGxheTogc3RyaW5nO1xyXG5cdHNob3dPcmRlcjogbnVtYmVyO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleTogc3RyaW5nO1xyXG5cdHNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2Uge1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRjb2RlOiBMYW5ndWFnZUNvZGU7XHJcblx0ZmxhZzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaGFuZ2VFdmVudCB7XHJcblx0bmFtZTogJ2xhbmd1YWdlQ2hhbmdlZCc7XHJcblx0ZGF0YToge1xyXG5cdFx0cGF0aDogc3RyaW5nO1xyXG5cdFx0Y3VzdG9tOiB7XHJcblx0XHRcdGxhbmd1YWdlOiBMYW5ndWFnZUNvZGU7XHJcblx0XHR9O1xyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50UmVzcG9uc2VEVE8ge1xyXG5cdGlkOiBzdHJpbmc7XHJcblx0Y2xpZW50UmVmZXJlbmNlS2V5OiBzdHJpbmc7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblx0c2VjcmV0OiBzdHJpbmc7XHJcblx0dXBzdHJlYW1JZDogc3RyaW5nO1xyXG5cdGJhc2VVcmw6IHN0cmluZztcclxuXHR2ZW5kb3JJbmZvPzogc3RyaW5nO1xyXG5cdHZlbmRvclBob25lTnVtYmVyPzogc3RyaW5nO1xyXG5cdGxvZ29Vcmw6IHN0cmluZztcclxuXHRjcmVhdGVEYXRlOiBzdHJpbmc7XHJcblx0bGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0QWxsQ2xpZW50UmVxdWVzdERUTyB7XHJcblx0Zmlyc3Q6IG51bWJlcjtcclxuXHRtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRSb2xlUmVxdWVzdERUTyB7XHJcblx0Y2xpZW50SWQ6IHN0cmluZztcclxuXHRuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXR5VHJlZVJlc3BvbnNlRFRPIHtcclxuXHRpZDogbnVtYmVyO1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRwYXJlbnRJZDogbnVtYmVyO1xyXG5cdHN0YXJ0TGV2ZWw6IHN0cmluZztcclxuXHRlbmRMZXZlbDogc3RyaW5nO1xyXG5cdHRyZWVMZXZlbDogc3RyaW5nO1xyXG5cdGNoaWxkcmVuOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIE5vdGlmaWNhdGlvbnNcclxuZXhwb3J0IGludGVyZmFjZSBTbXNFbWFpbEF1ZGl0UmVxdWVzdER0byB7XHJcblx0c3RhcnREYXRlOiBudW1iZXI7XHJcblx0ZW5kRGF0ZTogbnVtYmVyO1xyXG5cdGF1ZGl0VHlwZT86IHN0cmluZztcclxuXHR0ZW1wbGF0ZUNvZGVzPzogc3RyaW5nW107XHJcblx0ZGV0YWlsTm90aWZpY2F0aW9uVHlwZT86IHN0cmluZztcclxuXHRzdGF0dXM/OiBzdHJpbmc7XHJcblx0cmVmQXNzZXRDb2RlPzogc3RyaW5nO1xyXG5cdHJlZk1kSWQ/OiBudW1iZXI7XHJcblx0cmVmZXJlbmNlSWQ/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L3NlcnZpY2UvaW50ZXJmYWNlcy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmZhY2VzIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2VudW0nO1xyXG5cclxuZXhwb3J0IHR5cGUgU2VsZWN0Qm94SXRlbSA9XHJcblx0fCBJbnRlcmZhY2VzLk1hcFN0cmluZ1N0cmluZ1xyXG5cdHwgSW50ZXJmYWNlcy5NYXBTdHJpbmdOdW1iZXJcclxuXHR8IEludGVyZmFjZXMuTWFwTnVtYmVyU3RyaW5nXHJcblx0fCBJbnRlcmZhY2VzLk1hcE51bWJlck51bWJlcjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUmVxdWVzdERUTyB7XHJcblx0Z3JvdXBOYW1lOiBzdHJpbmc7XHJcblx0cGFyYW1ldGVycz86IFBhcmFtZXRlcnM7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5Pzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJzIHtcclxuXHRhZGRpdGlvbmFsUHJvcDE6IEFkZGl0aW9uYWxQcm9wO1xyXG5cdGFkZGl0aW9uYWxQcm9wMjogQWRkaXRpb25hbFByb3A7XHJcblx0YWRkaXRpb25hbFByb3AzOiBBZGRpdGlvbmFsUHJvcDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBZGRpdGlvbmFsUHJvcCB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25Hcm91cERUTyB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRncm91cE5hbWU6IHN0cmluZztcclxuXHRncm91cERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblx0Z3JvdXBDb21tZW50OiBzdHJpbmc7XHJcblx0bG9hZFN0cmF0ZWd5OiBzdHJpbmc7XHJcblx0ZHluYW1pY1F1ZXJ5OiBzdHJpbmc7XHJcblx0cGFyZW50R3JvdXBJZDogbnVtYmVyO1xyXG5cdHNlbGVjdGlvbkl0ZW1zOiBTZWxlY3Rpb25JdGVtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uSXRlbSB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRncm91cElkOiBudW1iZXI7XHJcblx0c2VsZWN0aW9uS2V5OiBzdHJpbmc7XHJcblx0c2VsZWN0aW9uRGlzcGxheTogc3RyaW5nO1xyXG5cdHNob3dPcmRlcjogbnVtYmVyO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleTogc3RyaW5nO1xyXG5cdHNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2Uge1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRjb2RlOiBMYW5ndWFnZUNvZGU7XHJcblx0ZmxhZzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaGFuZ2VFdmVudCB7XHJcblx0bmFtZTogJ2xhbmd1YWdlQ2hhbmdlZCc7XHJcblx0ZGF0YToge1xyXG5cdFx0cGF0aDogc3RyaW5nO1xyXG5cdFx0Y3VzdG9tOiB7XHJcblx0XHRcdGxhbmd1YWdlOiBMYW5ndWFnZUNvZGU7XHJcblx0XHR9O1xyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50UmVzcG9uc2VEVE8ge1xyXG5cdGlkOiBzdHJpbmc7XHJcblx0Y2xpZW50UmVmZXJlbmNlS2V5OiBzdHJpbmc7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblx0c2VjcmV0OiBzdHJpbmc7XHJcblx0dXBzdHJlYW1JZDogc3RyaW5nO1xyXG5cdGJhc2VVcmw6IHN0cmluZztcclxuXHR2ZW5kb3JJbmZvPzogc3RyaW5nO1xyXG5cdHZlbmRvclBob25lTnVtYmVyPzogc3RyaW5nO1xyXG5cdGxvZ29Vcmw6IHN0cmluZztcclxuXHRjcmVhdGVEYXRlOiBzdHJpbmc7XHJcblx0bGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0QWxsQ2xpZW50UmVxdWVzdERUTyB7XHJcblx0Zmlyc3Q6IG51bWJlcjtcclxuXHRtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRSb2xlUmVxdWVzdERUTyB7XHJcblx0Y2xpZW50SWQ6IHN0cmluZztcclxuXHRuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXR5VHJlZVJlc3BvbnNlRFRPIHtcclxuXHRpZDogbnVtYmVyO1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRwYXJlbnRJZDogbnVtYmVyO1xyXG5cdHN0YXJ0TGV2ZWw6IHN0cmluZztcclxuXHRlbmRMZXZlbDogc3RyaW5nO1xyXG5cdHRyZWVMZXZlbDogc3RyaW5nO1xyXG5cdGNoaWxkcmVuOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIE5vdGlmaWNhdGlvbnNcclxuZXhwb3J0IGludGVyZmFjZSBTbXNFbWFpbEF1ZGl0UmVxdWVzdER0byB7XHJcblx0c3RhcnREYXRlOiBudW1iZXI7XHJcblx0ZW5kRGF0ZTogbnVtYmVyO1xyXG5cdGF1ZGl0VHlwZT86IHN0cmluZztcclxuXHR0ZW1wbGF0ZUNvZGVzPzogc3RyaW5nW107XHJcblx0ZGV0YWlsTm90aWZpY2F0aW9uVHlwZT86IHN0cmluZztcclxuXHRzdGF0dXM/OiBzdHJpbmc7XHJcblx0cmVmQXNzZXRDb2RlPzogc3RyaW5nO1xyXG5cdHJlZk1kSWQ/OiBudW1iZXI7XHJcblx0cmVmZXJlbmNlSWQ/OiBzdHJpbmc7XHJcblx0dHJhY2VJZD86IHN0cmluZztcclxuXHRyZWFkPzogYm9vbGVhbjtcclxuXHRwYWdlcj86IFBhZ2VyO1xyXG5cdHVzZXJuYW1lPzogc3RyaW5nO1xyXG5cdHN0YXJ0UmVhZFRpbWU/OiBudW1iZXI7XHJcblx0ZW5kUmVhZFRpbWU/OiBudW1iZXI7XHJcblx0dG9MaXN0Pzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPIHtcclxuXHRpZDogc3RyaW5nO1xyXG5cdHRpbWVzdGFtcDogbnVtYmVyO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblx0dHlwZTogc3RyaW5nO1xyXG5cdHNlbmRpbmdEYXRlOiBudW1iZXI7XHJcblx0ZnJvbTogc3RyaW5nO1xyXG5cdHRvOiBzdHJpbmc7XHJcblx0Y29udGVudDogc3RyaW5nO1xyXG5cdHRlbXBsYXRlQ29kZTogc3RyaW5nO1xyXG5cdHRlbXBsYXRlVGl0bGU6IHN0cmluZztcclxuXHRzdGF0dXM6IHN0cmluZztcclxuXHRlcnJvckRldGFpbDogc3RyaW5nO1xyXG5cdHJlZkFzc2V0Q29kZTogc3RyaW5nO1xyXG5cdHJlZk1kSWQ6IG51bWJlcjtcclxuXHRyZWZlcmVuY2VJZDogc3RyaW5nO1xyXG5cdHJlYWQ6IGJvb2xlYW47XHJcblx0cmVhZFRpbWU6IG51bWJlcjtcclxuXHR0cmFjZUlkOiBzdHJpbmc7XHJcblx0ZGV0YWlsTm90aWZpY2F0aW9uVHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtBbGxSZWFkTm90aWZpY2F0aW9uUmVxdWVzdERUTyB7XHJcblx0dG9MaXN0OiBzdHJpbmdbXTtcclxuXHRlbmREYXRlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXIge1xyXG5cdHBhZ2VTaXplOiBudW1iZXI7XHJcblx0cGFnZU51bWJlcjogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlPFQ+IHtcclxuXHRyZXN1bHRJbmZvOiBSZXN1bHRJbmZvO1xyXG5cdHJlc3VsdDogVFtdO1xyXG5cdHNlYXJjaEFmdGVyVmFsdWVzPzogb2JqZWN0W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSZXN1bHRJbmZvIHtcclxuXHR0b3RhbFBhZ2U6IG51bWJlcjtcclxuXHR0b3RhbEl0ZW06IG51bWJlcjtcclxufSJdfQ==
|
|
@@ -14,6 +14,9 @@ export class NotificationsService extends RestClient {
|
|
|
14
14
|
markAsReadNotification(pluginId) {
|
|
15
15
|
return new Observable();
|
|
16
16
|
}
|
|
17
|
+
markAllAsReadNotification(post) {
|
|
18
|
+
return new Observable();
|
|
19
|
+
}
|
|
17
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
21
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
19
22
|
}
|
|
@@ -23,8 +26,11 @@ __decorate([
|
|
|
23
26
|
__decorate([
|
|
24
27
|
ServiceCall(HTTPMethods.PUTBYDYNAMICPATH, ProxyTypes.ClientSide, 'audits/$/read')
|
|
25
28
|
], NotificationsService.prototype, "markAsReadNotification", null);
|
|
29
|
+
__decorate([
|
|
30
|
+
ServiceCall(HTTPMethods.PUTBYPARAMS, ProxyTypes.ClientSide, 'audits/read-all', { success: 'notifications.markedAllAsRead' })
|
|
31
|
+
], NotificationsService.prototype, "markAllAsReadNotification", null);
|
|
26
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, decorators: [{
|
|
27
33
|
type: Injectable,
|
|
28
34
|
args: [{ providedIn: 'root' }]
|
|
29
|
-
}], ctorParameters: () => [], propDecorators: { getNotifications: [], markAsReadNotification: [] } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
}], ctorParameters: () => [], propDecorators: { getNotifications: [], markAsReadNotification: [], markAllAsReadNotification: [] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvc2VydmljZS9ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUF3QyxNQUFNLFdBQVcsQ0FBQzs7QUFLbkgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFVBQVU7SUFHbkQ7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUhBLFdBQU0sR0FBOEMsRUFBRSxDQUFDO0lBSWhFLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxJQUF3QztRQUN4RCxPQUFPLElBQUksVUFBVSxFQUE2RSxDQUFDO0lBQ3BHLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxRQUFnQjtRQUN0QyxPQUFPLElBQUksVUFBVSxFQUE0QixDQUFDO0lBQ25ELENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxJQUFrRDtRQUMzRSxPQUFPLElBQUksVUFBVSxFQUE0QixDQUFDO0lBQ25ELENBQUM7OEdBcEJXLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7QUFTL0I7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQzs0REFHckU7QUFHRDtJQURDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUM7a0VBR2pGO0FBR0Q7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLENBQUM7cUVBRzVIOzJGQXBCVyxvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO3dEQVNqQyxnQkFBZ0IsTUFLaEIsc0JBQXNCLE1BS3RCLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEhUVFBNZXRob2RzLCBQcm94eVR5cGVzLCBSZXN0Q2xpZW50LCBTZXJ2aWNlQ2FsbCwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnYXJpbC9odHRwJztcclxuXHJcbmltcG9ydCAqIGFzIEludGVyZmFjZXMgZnJvbSAnLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIGV4dGVuZHMgUmVzdENsaWVudCB7XHJcblx0b3ZlcnJpZGUgc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPE5vdGlmaWNhdGlvbnNTZXJ2aWNlPiA9IHt9O1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuUE9TVCwgUHJveHlUeXBlcy5DbGllbnRTaWRlLCAnYXVkaXRzL3NlYXJjaCcpXHJcblx0Z2V0Tm90aWZpY2F0aW9ucyhwb3N0OiBJbnRlcmZhY2VzLlNtc0VtYWlsQXVkaXRSZXF1ZXN0RHRvKSB7XHJcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPEludGVyZmFjZXMuUmVzcG9uc2U8SW50ZXJmYWNlcy5TbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8+Pj4oKTtcclxuXHR9XHJcblxyXG5cdEBTZXJ2aWNlQ2FsbChIVFRQTWV0aG9kcy5QVVRCWURZTkFNSUNQQVRILCBQcm94eVR5cGVzLkNsaWVudFNpZGUsICdhdWRpdHMvJC9yZWFkJylcclxuXHRtYXJrQXNSZWFkTm90aWZpY2F0aW9uKHBsdWdpbklkOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U8Ym9vbGVhbj4+KCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuUFVUQllQQVJBTVMsIFByb3h5VHlwZXMuQ2xpZW50U2lkZSwgJ2F1ZGl0cy9yZWFkLWFsbCcsIHsgc3VjY2VzczogJ25vdGlmaWNhdGlvbnMubWFya2VkQWxsQXNSZWFkJyB9KVxyXG5cdG1hcmtBbGxBc1JlYWROb3RpZmljYXRpb24ocG9zdDogSW50ZXJmYWNlcy5NYXJrQWxsUmVhZE5vdGlmaWNhdGlvblJlcXVlc3REVE8pIHtcclxuXHRcdHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U8Ym9vbGVhbj4+KCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|