mmhglobal-dynamicform 2.0.0-beta.2 → 2.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +52 -0
  2. package/esm2020/lib/components/buttonfieldbase.component.mjs +9 -11
  3. package/esm2020/lib/components/containerfieldbase.component.mjs +2 -2
  4. package/esm2020/lib/components/datalistingfieldbase.component.mjs +25 -11
  5. package/esm2020/lib/components/fieldbase.component.mjs +4 -1
  6. package/esm2020/lib/components/inputfieldbase.component.mjs +1 -4
  7. package/esm2020/lib/constants/constant.mjs +4 -0
  8. package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +14 -0
  9. package/esm2020/lib/input-error-message/input-error-message.component.mjs +19 -8
  10. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +30 -5
  11. package/esm2020/lib/services/component-error-handler.service.mjs +59 -29
  12. package/esm2020/lib/services/main.service.mjs +237 -114
  13. package/esm2020/lib/services/signalr.service.mjs +126 -0
  14. package/esm2020/lib/services/zcomponent.service.mjs +12 -10
  15. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +11 -4
  16. package/esm2020/lib/uibulletin/uibulletin.component.mjs +91 -0
  17. package/esm2020/lib/uicontainer/uicontainer.component.mjs +3 -3
  18. package/esm2020/lib/uicontent/uicontent.component.mjs +19 -13
  19. package/esm2020/lib/uiheader/uiheader.component.mjs +12 -9
  20. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +2 -2
  21. package/esm2020/lib/uipage/uipage.component.mjs +30 -38
  22. package/esm2020/lib/zbuttons/zbuttons.component.mjs +2 -1
  23. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +3 -3
  24. package/esm2020/lib/zdatetime/zdatetime.component.mjs +6 -2
  25. package/esm2020/lib/zform/zform.component.mjs +8 -3
  26. package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +99 -0
  27. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +19 -8
  28. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +5 -13
  29. package/esm2020/lib/zgrid/zgrid.component.mjs +347 -308
  30. package/esm2020/lib/zinput-container/zinput-container.component.mjs +6 -12
  31. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +2 -2
  32. package/esm2020/lib/zmfb/zmfb.component.mjs +1 -5
  33. package/esm2020/lib/znumeric/znumeric.component.mjs +4 -21
  34. package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +19 -0
  35. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +9 -3
  36. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +4 -15
  37. package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +29 -0
  38. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -3
  39. package/esm2020/lib/ztree/ztree.component.mjs +14 -4
  40. package/esm2020/lib/ztreelist/ztreelist.component.mjs +10 -12
  41. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +7 -5
  42. package/esm2020/public-api.mjs +6 -1
  43. package/fesm2015/mmhglobal-dynamicform.mjs +1394 -819
  44. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
  45. package/fesm2020/mmhglobal-dynamicform.mjs +1394 -822
  46. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
  47. package/lib/components/datalistingfieldbase.component.d.ts +5 -1
  48. package/lib/components/fieldbase.component.d.ts +1 -0
  49. package/lib/components/inputfieldbase.component.d.ts +0 -1
  50. package/lib/constants/constant.d.ts +3 -0
  51. package/lib/embed-components/page-loader/page-loader.component.d.ts +8 -0
  52. package/lib/input-error-message/input-error-message.component.d.ts +3 -2
  53. package/lib/mmhglobal-dynamicform.module.d.ts +87 -82
  54. package/lib/services/component-error-handler.service.d.ts +8 -3
  55. package/lib/services/main.service.d.ts +16 -5
  56. package/lib/services/signalr.service.d.ts +40 -0
  57. package/lib/services/zcomponent.service.d.ts +1 -1
  58. package/lib/uibulletin/uibulletin.component.d.ts +37 -0
  59. package/lib/uicontent/uicontent.component.d.ts +3 -1
  60. package/lib/uiheader/uiheader.component.d.ts +1 -0
  61. package/lib/uipage/uipage.component.d.ts +1 -0
  62. package/lib/zgrid/container/zgrid-container.component.d.ts +28 -0
  63. package/lib/zgrid/date-range-cell-filter.component.d.ts +5 -1
  64. package/lib/zgrid/zgrid.component.d.ts +33 -23
  65. package/lib/zinput-container/zinput-container.component.d.ts +2 -5
  66. package/lib/zmfb/zmfb.component.d.ts +0 -1
  67. package/lib/znumeric/znumeric.component.d.ts +1 -1
  68. package/lib/znumeric/znumeric.component.pipe.d.ts +10 -0
  69. package/lib/zquerybuilder/zquerybuilder.component.d.ts +1 -0
  70. package/lib/zselectmultiple/zselectmultiple.component.d.ts +1 -4
  71. package/lib/zselectmultiple/zselectmultiple.pipe.d.ts +11 -0
  72. package/lib/ztree/ztree.component.d.ts +3 -0
  73. package/lib/ztreelist/ztreelist.component.d.ts +1 -1
  74. package/package.json +2 -2
  75. package/public-api.d.ts +5 -0
@@ -0,0 +1,126 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { HubConnectionBuilder, LogLevel } from "@microsoft/signalr";
3
+ import { MessagePackHubProtocol } from "@microsoft/signalr-protocol-msgpack";
4
+ import { map, Subject } from "rxjs";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "mmhglobal-zcore";
7
+ export class SignalrEvent {
8
+ }
9
+ export class PushChangeEvent {
10
+ }
11
+ export class SignalrService {
12
+ constructor(zone, authService, zcoreService) {
13
+ this.zone = zone;
14
+ this.authService = authService;
15
+ this.zcoreService = zcoreService;
16
+ this.environment = null;
17
+ this.environment = this.zcoreService.getEnvironment();
18
+ const errorSubject = new Subject();
19
+ this.createHubConnection();
20
+ this.connection.onreconnecting(error => this.zone.run(() => errorSubject.next(error)));
21
+ }
22
+ get hubConnectionOptions() {
23
+ return {
24
+ headers: SignalRHeader,
25
+ // transport: HttpTransportType.WebSockets,
26
+ accessTokenFactory: () => {
27
+ return this.authService.e1Token.access_token;
28
+ }
29
+ };
30
+ }
31
+ get retryPolicy() {
32
+ return {
33
+ nextRetryDelayInMilliseconds: retryContext => {
34
+ if (retryContext.elapsedMilliseconds < 60000) {
35
+ return Math.random() * 10000;
36
+ }
37
+ else {
38
+ return 30000;
39
+ }
40
+ }
41
+ };
42
+ }
43
+ async createHubConnection() {
44
+ this.eventSubject = new Subject();
45
+ const hubEndPoint = this.environment.signalRUrl;
46
+ this.connection = new HubConnectionBuilder()
47
+ .withUrl(hubEndPoint + '/signalr', this.hubConnectionOptions)
48
+ .withHubProtocol(new MessagePackHubProtocol())
49
+ .withAutomaticReconnect(this.retryPolicy)
50
+ .configureLogging(LogLevel.Information)
51
+ .build();
52
+ this.connection.start();
53
+ this.connection.on('onEvent', (event) => {
54
+ switch (event.Name) {
55
+ case 'ErrorAtHub':
56
+ console.warn('Error At Hub:', event.Payload);
57
+ break;
58
+ case 'LoggingAtHub':
59
+ console.warn('Logging At Hub:', event.Payload);
60
+ break;
61
+ default:
62
+ this.zone.run(() => this.eventSubject.next(event));
63
+ break;
64
+ }
65
+ });
66
+ this.connection.onreconnecting(error => this.handleOnReconnecting(error));
67
+ this.connection.onreconnected(connectionId => this.handleOnReconnected(connectionId));
68
+ this.connection.onclose(error => this.handleOnClose(error));
69
+ this.event$ = this.eventSubject.asObservable();
70
+ }
71
+ handleOnReconnecting(error) {
72
+ console.log('Hub connection started reconnecting due to an error: ', error);
73
+ }
74
+ handleOnReconnected(connectionId) {
75
+ console.log('Hub connection successfully reconnected. ConnectionId is now: ', connectionId);
76
+ }
77
+ handleOnClose(error) {
78
+ if (error === null) {
79
+ console.log('Hub connection closed without error.', error);
80
+ }
81
+ else {
82
+ console.log('Hub connection closed due to an error: ', error);
83
+ }
84
+ }
85
+ getEvent() {
86
+ return this.event$.pipe(map(event => {
87
+ return {
88
+ name: event.Name,
89
+ payload: event.Payload
90
+ };
91
+ }));
92
+ }
93
+ getConnectionId() {
94
+ return this.connection.connectionId;
95
+ }
96
+ joinGroup(groupName) {
97
+ this.connection.invoke("JoinGroup", groupName);
98
+ }
99
+ removeFromGroup(groupName) {
100
+ this.connection.invoke("RemoveFromGroup", groupName);
101
+ }
102
+ sendToClientGroup(groupsToSend, serviceName, events) {
103
+ this.connection.invoke("SendToClientGroup", groupsToSend, serviceName, events);
104
+ }
105
+ sendToClientUser(userToSend, serviceName, events) {
106
+ this.connection.invoke("SendToClientUser", userToSend, serviceName, events);
107
+ }
108
+ sendToAllClients(serviceName, events) {
109
+ this.connection.invoke("SendToAllClients", serviceName, events);
110
+ }
111
+ sendToCaller(serviceName, events) {
112
+ this.connection.invoke("SendToCaller", serviceName, events);
113
+ }
114
+ }
115
+ SignalrService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, deps: [{ token: i0.NgZone }, { token: i1.AuthService }, { token: i1.ZCoreService }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ SignalrService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, decorators: [{
118
+ type: Injectable,
119
+ args: [{
120
+ providedIn: 'root'
121
+ }]
122
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.AuthService }, { type: i1.ZCoreService }]; } });
123
+ export const SignalRHeader = {
124
+ SignalRKey: "3D36C63093B75A091E116182BE91FFB99D53192365C6222979587514E6F65994"
125
+ };
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxvQkFBb0IsRUFBd0MsUUFBUSxFQUFrQixNQUFNLG9CQUFvQixDQUFDO0FBQzVKLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJaEQsTUFBTSxPQUFPLFlBQVk7Q0FHeEI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQU1ELE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQ1UsSUFBWSxFQUNaLFdBQXdCLEVBQ3hCLFlBQTBCO1FBRjFCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUw3QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQVE3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxvQkFBb0I7UUFDaEMsT0FBTztZQUNMLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLDJDQUEyQztZQUMzQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQy9DLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWMsV0FBVztRQUN2QixPQUFPO1lBQ0wsNEJBQTRCLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzNDLElBQUksWUFBWSxDQUFDLG1CQUFtQixHQUFHLEtBQUssRUFBRTtvQkFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO2lCQUM5QjtxQkFBTTtvQkFDTCxPQUFPLEtBQUssQ0FBQztpQkFDZDtZQUNILENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUVoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksb0JBQW9CLEVBQUU7YUFDekMsT0FBTyxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2FBQzVELGVBQWUsQ0FBQyxJQUFJLHNCQUFzQixFQUFFLENBQUM7YUFDN0Msc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRVgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDcEQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNsQixLQUFLLFlBQVk7b0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM3QyxNQUFNO2dCQUNSLEtBQUssY0FBYztvQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1I7b0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbkQsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdURBQXVELEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQW9CO1FBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFZO1FBQ2hDLElBQUcsS0FBSyxLQUFLLElBQUksRUFBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVEO2FBQ0c7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxPQUF3QjtnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDdkIsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFpQjtRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBc0IsRUFBRSxXQUFtQixFQUFFLE1BQVc7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLE1BQVc7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBbUIsRUFBRSxNQUFXO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQW1CLEVBQUUsTUFBVztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7OzRHQWhJVSxjQUFjO2dIQUFkLGNBQWMsY0FIYixNQUFNOzRGQUdQLGNBQWM7a0JBSjFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQXFJRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsVUFBVSxFQUFFLGtFQUFrRTtDQUM3RCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFRyYW5zcG9ydFR5cGUsIEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBJSHR0cENvbm5lY3Rpb25PcHRpb25zLCBJUmV0cnlQb2xpY3ksIExvZ0xldmVsLCBNZXNzYWdlSGVhZGVycyB9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVBhY2tIdWJQcm90b2NvbCB9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHItcHJvdG9jb2wtbXNncGFja1wiO1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgWkNvcmVTZXJ2aWNlIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduYWxyRXZlbnQge1xyXG4gIE5hbWU6IHN0cmluZztcclxuICBQYXlsb2FkOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQdXNoQ2hhbmdlRXZlbnQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYXlsb2FkOiBhbnk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduYWxyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uO1xyXG4gIHByaXZhdGUgZXZlbnRTdWJqZWN0OiBTdWJqZWN0PFNpZ25hbHJFdmVudD47XHJcbiAgcHJpdmF0ZSBldmVudCQ6IE9ic2VydmFibGU8U2lnbmFsckV2ZW50PjsgXHJcbiAgcHVibGljIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICkge1xyXG5cclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gICAgY29uc3QgZXJyb3JTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgdGhpcy5jcmVhdGVIdWJDb25uZWN0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKGVycm9yID0+XHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gZXJyb3JTdWJqZWN0Lm5leHQoZXJyb3IpKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IGh1YkNvbm5lY3Rpb25PcHRpb25zKCk6IElIdHRwQ29ubmVjdGlvbk9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyczogU2lnbmFsUkhlYWRlcixcclxuICAgICAgLy8gdHJhbnNwb3J0OiBIdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzLFxyXG4gICAgICBhY2Nlc3NUb2tlbkZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLmFjY2Vzc190b2tlbjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgcmV0cnlQb2xpY3koKTogSVJldHJ5UG9saWN5IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5leHRSZXRyeURlbGF5SW5NaWxsaXNlY29uZHM6IHJldHJ5Q29udGV4dCA9PiB7XHJcbiAgICAgICAgaWYgKHJldHJ5Q29udGV4dC5lbGFwc2VkTWlsbGlzZWNvbmRzIDwgNjAwMDApIHtcclxuICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogMTAwMDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAzMDAwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVIdWJDb25uZWN0aW9uKCkge1xyXG4gICAgdGhpcy5ldmVudFN1YmplY3QgPSBuZXcgU3ViamVjdDxTaWduYWxyRXZlbnQ+KCk7IFxyXG5cclxuICAgIGNvbnN0IGh1YkVuZFBvaW50ID0gdGhpcy5lbnZpcm9ubWVudC5zaWduYWxSVXJsO1xyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwoaHViRW5kUG9pbnQgKyAnL3NpZ25hbHInLCB0aGlzLmh1YkNvbm5lY3Rpb25PcHRpb25zKVxyXG4gICAgICAud2l0aEh1YlByb3RvY29sKG5ldyBNZXNzYWdlUGFja0h1YlByb3RvY29sKCkpXHJcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KHRoaXMucmV0cnlQb2xpY3kpXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLkluZm9ybWF0aW9uKVxyXG4gICAgICAuYnVpbGQoKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uc3RhcnQoKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ29uRXZlbnQnLCAoZXZlbnQ6IFNpZ25hbHJFdmVudCkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50Lk5hbWUpIHtcclxuICAgICAgICBjYXNlICdFcnJvckF0SHViJzpcclxuICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgQXQgSHViOicsIGV2ZW50LlBheWxvYWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTG9nZ2luZ0F0SHViJzpcclxuICAgICAgICAgIGNvbnNvbGUud2FybignTG9nZ2luZyBBdCBIdWI6JywgZXZlbnQuUGF5bG9hZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKGVycm9yID0+IHRoaXMuaGFuZGxlT25SZWNvbm5lY3RpbmcoZXJyb3IpKTtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbnJlY29ubmVjdGVkKGNvbm5lY3Rpb25JZCA9PiB0aGlzLmhhbmRsZU9uUmVjb25uZWN0ZWQoY29ubmVjdGlvbklkKSk7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub25jbG9zZShlcnJvciA9PiB0aGlzLmhhbmRsZU9uQ2xvc2UoZXJyb3IpKTtcclxuXHJcbiAgICB0aGlzLmV2ZW50JCA9IHRoaXMuZXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPblJlY29ubmVjdGluZyhlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdIdWIgY29ubmVjdGlvbiBzdGFydGVkIHJlY29ubmVjdGluZyBkdWUgdG8gYW4gZXJyb3I6ICcsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT25SZWNvbm5lY3RlZChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ0h1YiBjb25uZWN0aW9uIHN1Y2Nlc3NmdWxseSByZWNvbm5lY3RlZC4gQ29ubmVjdGlvbklkIGlzIG5vdzogJywgY29ubmVjdGlvbklkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT25DbG9zZShlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIGlmKGVycm9yID09PSBudWxsKXtcclxuICAgICAgY29uc29sZS5sb2coJ0h1YiBjb25uZWN0aW9uIGNsb3NlZCB3aXRob3V0IGVycm9yLicsIGVycm9yKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdIdWIgY29ubmVjdGlvbiBjbG9zZWQgZHVlIHRvIGFuIGVycm9yOiAnLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudCgpOiBPYnNlcnZhYmxlPFB1c2hDaGFuZ2VFdmVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXZlbnQkLnBpcGUobWFwKGV2ZW50ID0+IHtcclxuICAgICAgcmV0dXJuIDxQdXNoQ2hhbmdlRXZlbnQ+e1xyXG4gICAgICAgIG5hbWU6IGV2ZW50Lk5hbWUsXHJcbiAgICAgICAgcGF5bG9hZDogZXZlbnQuUGF5bG9hZFxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb25uZWN0aW9uSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uY29ubmVjdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgam9pbkdyb3VwKGdyb3VwTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiSm9pbkdyb3VwXCIsIGdyb3VwTmFtZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJSZW1vdmVGcm9tR3JvdXBcIiwgZ3JvdXBOYW1lKVxyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2xpZW50R3JvdXAoZ3JvdXBzVG9TZW5kOiBzdHJpbmdbXSwgc2VydmljZU5hbWU6IHN0cmluZywgZXZlbnRzOiBhbnkpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJTZW5kVG9DbGllbnRHcm91cFwiLCBncm91cHNUb1NlbmQsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2xpZW50VXNlcih1c2VyVG9TZW5kOiBzdHJpbmcsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIGV2ZW50czogYW55KSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiU2VuZFRvQ2xpZW50VXNlclwiLCB1c2VyVG9TZW5kLCBzZXJ2aWNlTmFtZSwgZXZlbnRzKTtcclxuICB9XHJcblxyXG4gIHNlbmRUb0FsbENsaWVudHMoc2VydmljZU5hbWU6IHN0cmluZywgZXZlbnRzOiBhbnkpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJTZW5kVG9BbGxDbGllbnRzXCIsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2FsbGVyKHNlcnZpY2VOYW1lOiBzdHJpbmcsIGV2ZW50czogYW55KSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiU2VuZFRvQ2FsbGVyXCIsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFNpZ25hbFJIZWFkZXIgPSB7XHJcbiAgU2lnbmFsUktleTogXCIzRDM2QzYzMDkzQjc1QTA5MUUxMTYxODJCRTkxRkZCOTlENTMxOTIzNjVDNjIyMjk3OTU4NzUxNEU2RjY1OTk0XCJcclxufSBhcyBNZXNzYWdlSGVhZGVyc1xyXG4iXX0=
@@ -122,9 +122,9 @@ export class ZComponentService {
122
122
  return null;
123
123
  }
124
124
  }
125
- translateToolBarItems(items) {
125
+ translateToolBarItems(items, group) {
126
126
  const obsList = new Array();
127
- obsList.push(this.translateService.$translateItemList(items, "text", this.environment.applicationShortName, "general"));
127
+ obsList.push(this.translateService.$translateItemList(items, "text", { elementName: 'general', group }));
128
128
  if (obsList.length <= 0) {
129
129
  return of({});
130
130
  }
@@ -132,7 +132,7 @@ export class ZComponentService {
132
132
  }
133
133
  translateGridColumnHeader(columns, group) {
134
134
  const obsList = new Array();
135
- obsList.push(this.translateService.$translateItemList(columns, "title", this.environment.applicationShortName, group.fieldName));
135
+ obsList.push(this.translateService.$translateItemList(columns, "title", { elementName: 'menu', group }));
136
136
  if (obsList.length <= 0) {
137
137
  return of({});
138
138
  }
@@ -140,7 +140,7 @@ export class ZComponentService {
140
140
  }
141
141
  translateButtonComponent(buttons, group) {
142
142
  let obsList = new Array();
143
- obsList.push(this.translateService.$translateItemList(buttons, "text", this.environment.applicationShortName, group.fieldName));
143
+ obsList.push(this.translateService.$translateItemList(buttons, "text", { elementName: group.fieldName, group }));
144
144
  if (obsList.length <= 0) {
145
145
  return of({});
146
146
  }
@@ -151,7 +151,7 @@ export class ZComponentService {
151
151
  const propList = ["Label", "PlaceHolder", "Title"]; // ToolTip
152
152
  for (const prop of propList) {
153
153
  if (data[prop] != undefined) {
154
- const obs = this.translateCompByProperty(data, prop, group.fieldName);
154
+ const obs = this.translateCompByProperty(data, prop, group.fieldName, group);
155
155
  if (obs) {
156
156
  obsList = obsList.concat(obs);
157
157
  }
@@ -167,7 +167,7 @@ export class ZComponentService {
167
167
  const propList = ["label", "title"];
168
168
  for (const prop of propList) {
169
169
  if (componentProperties[prop] != undefined) {
170
- const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName);
170
+ const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName, group);
171
171
  if (obs) {
172
172
  obsList = obsList.concat(obs);
173
173
  }
@@ -178,18 +178,20 @@ export class ZComponentService {
178
178
  }
179
179
  return forkJoin(obsList);
180
180
  }
181
- translateCompByProperty(data, propName, fieldName) {
181
+ translateCompByProperty(data, propName, fieldName, group) {
182
182
  if (data[propName] == undefined || data[propName] == "") {
183
183
  return;
184
184
  }
185
185
  const obsList = new Array();
186
186
  if (Array.isArray(data[propName]) && data[propName].length > 0) {
187
- obsList.push(this.translateService.$translateItemList(data[propName], null, this.environment.applicationShortName, fieldName).pipe(tap(resp => {
187
+ obsList.push(this.translateService.$translateItemList(data[propName], null, { elementName: fieldName, group }).pipe(tap(resp => {
188
188
  data[propName] = resp;
189
189
  })));
190
190
  }
191
191
  else {
192
- obsList.push(this.translateService.$translateSingleItem(data, propName, this.environment.applicationShortName, fieldName));
192
+ obsList.push(this.translateService.$translateSingleItem(data, propName, { elementName: fieldName, group }).pipe(tap(resp => {
193
+ data[propName] = resp;
194
+ })));
193
195
  }
194
196
  return obsList;
195
197
  }
@@ -202,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
202
204
  providedIn: 'root'
203
205
  }]
204
206
  }], ctorParameters: function () { return [{ type: i1.ComponentObjectService }, { type: i2.TranslationService }, { type: i2.ZCoreService }]; } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTFGckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxhQUFhLENBQ2xCLHdCQUFrRCxFQUNsRCxZQUFtQyxFQUNuQyxLQUFVLEVBQ1YsS0FBVSxFQUNWLElBQWUsRUFDZixjQUFtQjtRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBYztRQUNkLElBQUk7UUFFSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixNQUFNLGFBQWEsR0FB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b0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUM1SDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OytHQXBQVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEVtYmVkZGVkVmlld1JlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpDb3JlU2VydmljZSwgWkZpZWxkLCBaR3JvdXAsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbi8vIGltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy9tbWhnbG9iYWwtbWlkZGxld2FyZS9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtbWlkZGxld2FyZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRmllbGRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9maWVsZGVsZW1lbnQuZGlyZWN0aXZlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFpDb21wb25lbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGVudmlyb25tZW50O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRPYmplY3RTZXJ2aWNlOiBDb21wb25lbnRPYmplY3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTa2lwQ29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmlzU2tpcENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZENvbXBvbmVudChcclxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgZmllbGRFbGVtZW50OiBGaWVsZEVsZW1lbnREaXJlY3RpdmUsXHJcbiAgICBmaWVsZDogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGZvcm06IEZvcm1Hcm91cCxcclxuICAgIGNvbnRhaW5lckZpZWxkOiBhbnlcclxuICApIHtcclxuICAgIC8vIGlmKGZpZWxkLk5hbWUgPT09ICdGb3JtRGV0YWlsQ29udGFjdEdyaWQnKSB7XHJcbiAgICAvLyAgIGRlYnVnZ2VyO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU2tpcENvbXBvbmVudFR5cGUoZmllbGQuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21wb25lbnRGYWN0b3J5O1xyXG4gICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoZmllbGQuVHlwZSk7XHJcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICAgIGNvbXBvbmVudE5hbWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChcInVua25vd25cIilcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZmllbGRFbGVtZW50LnZpZXdDb250YWluZXJSZWY7XHJcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICBpZiAoIWZvcm0pIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGb3JtR3JvdXAgaXMgZW1wdHkhJyk7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmRhdGEgPSBmaWVsZDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZ3JvdXAgPSBncm91cDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZm9ybSA9IGZvcm07XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmNvbnRhaW5lckZpZWxkID0gY29udGFpbmVyRmllbGQ7XHJcbiAgICAvLyAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLm91dHB1dEV2ZW50LnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gZ3JvdXAub3V0cHV0RXZlbnQoZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIGFwcGVuZENvbXBvbmVudFRvRHluYW1pY0Zvcm0oXHJcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIGluamVjdG9yOiBhbnksXHJcbiAgICBhcHBSZWY6IGFueSxcclxuICAgIGZpZWxkOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgY29udGFpbmVySWQ6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuaXNTa2lwQ29tcG9uZW50VHlwZShmaWVsZC5UeXBlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBvbmVudFJlZjtcclxuICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KGZpZWxkLlR5cGUpO1xyXG4gICAgLy8gMS4gQ3JlYXRlIGEgY29tcG9uZW50IHJlZmVyZW5jZSBmcm9tIHRoZSBjb21wb25lbnRcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxyXG4gICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnROYW1lKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoXCJ1bmtub3duXCIpKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIEF0dGFjaCBjb21wb25lbnQgdG8gdGhlIGFwcFJlZiBzbyB0aGF0IGl0J3MgaW5zaWRlIHRoZSBuZyBjb21wb25lbnQgdHJlZVxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAvLyAzLiBHZXQgRE9NIGVsZW1lbnQgZnJvbSBjb21wb25lbnRcclxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxyXG4gICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8vIDQuIEFwcGVuZCBET00gZWxlbWVudCB0byB0aGUgYm9keVxyXG4gICAgY29uc3QgZHluYW1pY0Zvcm1Ib3N0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI1wiICsgY29udGFpbmVySWQpO1xyXG4gICAgZHluYW1pY0Zvcm1Ib3N0LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xyXG5cclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZGF0YSA9IGZpZWxkO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5ncm91cCA9IGdyb3VwO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9JU0VESVQgPSB0cnVlO1xyXG4gIHB1YmxpYyBzZXRFZGl0TW9kZShtZTogYW55KSB7XHJcbiAgICBsZXQgZWRpdG1vZGU7XHJcbiAgICBpZiAobWUgJiYgbWUuZGF0YSAmJiBtZS5kYXRhLkVkaXRNb2RlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodHlwZW9mIG1lLmRhdGEuRWRpdE1vZGUgIT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBlZGl0TW9kZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShtZS5kYXRhLkVkaXRNb2RlLCBtZS5ncm91cCk7XHJcbiAgICAgICAgZWRpdG1vZGUgPSB7IHZhbHVlOiBlZGl0TW9kZSwgaW5pdFZhbHVlOiBlZGl0TW9kZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVkaXRtb2RlID0gbWUuZGF0YS5FZGl0TW9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbWUuZGF0YS5FZGl0TW9kZSA9IGVkaXRtb2RlIHx8ICgobWUuY29udGFpbmVyRmllbGQgJiYgbWUuY29udGFpbmVyRmllbGQuRWRpdE1vZGUpID8gbWUuY29udGFpbmVyRmllbGQuRWRpdE1vZGUgOiB7IHZhbHVlOiB0aGlzLkRFRkFVTFRfSVNFRElULCBpbml0VmFsdWU6IHRoaXMuREVGQVVMVF9JU0VESVQgfSk7XHJcbiAgICBtZS5kYXRhLkVkaXRNb2RlLnZhbHVlID0gbWUuZGF0YS5FZGl0TW9kZS5pbml0VmFsdWU7XHJcbiAgICAvLyBjb25zdCBlZGl0bW9kZSA9IChtZSAmJiBtZS5kYXRhICYmIG1lLmRhdGEuRWRpdE1vZGUgIT0gdW5kZWZpbmVkKSA/ICh0eXBlb2YgbWUuZGF0YS5FZGl0TW9kZSA9PSBcImJvb2xlYW5cIiA/IHsgdmFsdWU6IG1lLmRhdGEuRWRpdE1vZGUsIGluaXRWYWx1ZTogbWUuZGF0YS5FZGl0TW9kZSB9IDogbWUuZGF0YS5FZGl0TW9kZSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbXBvbmVudEFkZGl0aW9uYWxQcm9wZXJ0aWVzKG1lOiBhbnkpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMudGl0bGUgPSBtZS5kYXRhICYmIG1lLmRhdGEuVGl0bGUgJiYgbWUuZGF0YS5UaXRsZS5pbmNsdWRlcyhcImdyb3VwLlwiKSA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChtZSwgbWUuZGF0YS5UaXRsZSkgOiBtZS5kYXRhLlRpdGxlO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5pY29uID0gbWUuZGF0YSAmJiBtZS5kYXRhLkljb24gJiYgbWUuZGF0YS5JY29uLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkljb24pIDogbWUuZGF0YS5JY29uO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5sYWJlbCA9IG1lLmRhdGEgJiYgbWUuZGF0YS5MYWJlbCAmJiBtZS5kYXRhLkxhYmVsLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkxhYmVsKSA6IG1lLmRhdGEuTGFiZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29tcFN0eWxlc0J5SW5kZXgobWU6IGFueSkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWUuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZSkpIHtcclxuICAgICAgY29uc3QgaW5kID0ga2V5LnJlcGxhY2UoJ3N0eWxlJywgJycpO1xyXG4gICAgICB0aGlzLnNldFN0eWxlQnlJbmRleChtZSwgaW5kLCBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YVtgU3R5bGUke2luZH1gXSwgbWUuZ3JvdXApIHx8IFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUpKSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IGtleS5yZXBsYWNlKCdzdHlsZScsICcnKTtcclxuICAgICAgdGhpcy5zZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWUsIGluZCwgWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGFbYENvbnRhaW5lclN0eWxlJHtpbmR9YF0sIG1lLmdyb3VwKSB8fCBcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0U3R5bGVTdHJpbmdUb09iamVjdChzdHlsZVN0cmluZzogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0eWxlQXJyID0gc3R5bGVTdHJpbmcuc3BsaXQoXCI7XCIpLmZpbHRlcih4ID0+IHgpO1xyXG4gICAgICBjb25zdCBzdHlsZU9iaiA9IHt9O1xyXG4gICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIHN0eWxlQXJyKSB7XHJcbiAgICAgICAgY29uc3Qga3ZwID0gc3R5bGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgIHN0eWxlT2JqW2t2cFswXS50cmltKCldID0ga3ZwWzFdLnRyaW0oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0eWxlT2JqO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVUb29sQmFySXRlbXMoaXRlbXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChpdGVtcywgXCJ0ZXh0XCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIFwiZ2VuZXJhbFwiKSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVHcmlkQ29sdW1uSGVhZGVyKGNvbHVtbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChjb2x1bW5zLCBcInRpdGxlXCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIGdyb3VwLmZpZWxkTmFtZSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoYnV0dG9ucywgXCJ0ZXh0XCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIGdyb3VwLmZpZWxkTmFtZSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQ29tcG9uZW50RmllbGQoZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcIkxhYmVsXCIsIFwiUGxhY2VIb2xkZXJcIiwgXCJUaXRsZVwiXTsgLy8gVG9vbFRpcFxyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BMaXN0KSB7XHJcbiAgICAgIGlmIChkYXRhW3Byb3BdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMudHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YSwgcHJvcCwgZ3JvdXAuZmllbGROYW1lKTtcclxuICAgICAgICBpZiAob2JzKSB7XHJcbiAgICAgICAgICBvYnNMaXN0ID0gb2JzTGlzdC5jb25jYXQob2JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUNvbXBvbmVudFByb3BlcnRpZXMoY29tcG9uZW50UHJvcGVydGllczogWkNvbXBvbmVudFByb3BlcnRpZXMsIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG5cclxuICAgIGNvbnN0IHByb3BMaXN0ID0gW1wibGFiZWxcIiwgXCJ0aXRsZVwiXTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wTGlzdCkge1xyXG4gICAgICBpZiAoY29tcG9uZW50UHJvcGVydGllc1twcm9wXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLnRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGNvbXBvbmVudFByb3BlcnRpZXMsIHByb3AsIGdyb3VwLmZpZWxkTmFtZSk7XHJcbiAgICAgICAgaWYgKG9icykge1xyXG4gICAgICAgICAgb2JzTGlzdCA9IG9ic0xpc3QuY29uY2F0KG9icyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGRhdGE6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+IHtcclxuICAgIGlmIChkYXRhW3Byb3BOYW1lXSA9PSB1bmRlZmluZWQgfHwgZGF0YVtwcm9wTmFtZV0gPT0gXCJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW3Byb3BOYW1lXSkgJiYgZGF0YVtwcm9wTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChkYXRhW3Byb3BOYW1lXSwgbnVsbCwgdGhpcy5lbnZpcm9ubWVudC5hcHBsaWNhdGlvblNob3J0TmFtZSwgZmllbGROYW1lKS5waXBlKFxyXG4gICAgICAgIHRhcChyZXNwID0+IHtcclxuICAgICAgICAgIGRhdGFbcHJvcE5hbWVdID0gcmVzcDtcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVTaW5nbGVJdGVtKGRhdGEsIHByb3BOYW1lLCB0aGlzLmVudmlyb25tZW50LmFwcGxpY2F0aW9uU2hvcnROYW1lLCBmaWVsZE5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzTGlzdDtcclxuICB9XHJcbn1cclxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTFGckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxhQUFhLENBQ2xCLHdCQUFrRCxFQUNsRCxZQUFtQyxFQUNuQyxLQUFVLEVBQ1YsS0FBVSxFQUNWLElBQWUsRUFDZixjQUFtQjtRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBYztRQUNkLElBQUk7UUFFSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLGFBQWEsRUFBRTtZQUNqQixnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FDakUsYUFBYSxDQUNkLENBQUM7U0FDSDthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsdUJBQXVCLENBQ2pFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQ2pELENBQUM7U0FDSDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQ3ZELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDcEMsUUFBUSxDQUFDO1NBQ1Y7UUFDRCxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxZQUFZLENBQUMsUUFBdUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xELFlBQVksQ0FBQyxRQUF1QixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkQsWUFBWSxDQUFDLFFBQXVCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqRCxZQUFZLENBQUMsUUFBdUIsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3RFLHlHQUF5RztJQUMzRyxDQUFDO0lBRUQsNEJBQTRCLENBQzFCLHdCQUFrRCxFQUNsRCxRQUFhLEVBQ2IsTUFBVyxFQUNYLEtBQVUsRUFDVixLQUFVLEVBQ1YsV0FBbUI7UUFFbkIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLE9BQU87U0FDUjtRQUVELElBQUksWUFBWSxDQUFDO1FBQ2pCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLHFEQUFxRDtRQUNyRCxJQUFJLGFBQWEsRUFBRTtZQUNqQixZQUFZLEdBQUcsd0JBQXdCO2lCQUNwQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7aUJBQ3RDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsWUFBWSxHQUFHLHdCQUF3QjtpQkFDcEMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JCO1FBRUQsOEVBQThFO1FBQzlFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLG9DQUFvQztRQUNwQyxNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUM7YUFDNUQsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUUvQixvQ0FBb0M7UUFDcEMsTUFBTSxlQUFlLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDdkUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQyxZQUFZLENBQUMsUUFBdUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xELFlBQVksQ0FBQyxRQUF1QixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUdNLFdBQVcsQ0FBQyxFQUFPO1FBQ3hCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDbEQsSUFBSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUUsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDckQ7aUJBQ0k7Z0JBQ0gsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzdCO1NBQ0Y7UUFDRCxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2pMLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDcEQsbU1BQW1NO0lBQ3JNLENBQUM7SUFFTSxnQ0FBZ0MsQ0FBQyxFQUFPO1FBQzdDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekssRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwSyxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzNLLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxFQUFPO1FBQ2pDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdkc7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6SDtJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsRUFBTyxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQ3hELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRU0sd0JBQXdCLENBQUMsRUFBTyxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQ2pFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRU0sMEJBQTBCLENBQUMsV0FBbUI7UUFDbkQsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO2dCQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pDO1lBRUQsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxPQUFPLEdBQUcsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBaUIsRUFBRSxLQUFhO1FBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFtQixDQUFDO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6RyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2Y7UUFDRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0seUJBQXlCLENBQUMsT0FBbUIsRUFBRSxLQUFhO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFtQixDQUFDO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6RyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2Y7UUFDRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sd0JBQXdCLENBQUMsT0FBbUIsRUFBRSxLQUFhO1FBQ2hFLElBQUksT0FBTyxHQUFHLElBQUksS0FBSyxFQUFtQixDQUFDO1FBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFakgsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN2QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBQ0QsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLHVCQUF1QixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3hELElBQUksT0FBTyxHQUFHLElBQUksS0FBSyxFQUFtQixDQUFDO1FBRTNDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFDOUQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxFQUFFO2dCQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLEdBQUcsRUFBRTtvQkFDUCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7YUFDRjtTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN2QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBQ0QsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLDRCQUE0QixDQUFDLG1CQUF5QyxFQUFFLEtBQWE7UUFDMUYsSUFBSSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFFM0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7Z0JBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDdkIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtRQUNELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHTyx1QkFBdUIsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDM0YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkQsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNqSCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQyxDQUNKLENBQUM7U0FDSDthQUNJO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzdHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQTtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7K0dBeFBVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkNvcmVTZXJ2aWNlLCBaRmllbGQsIFpHcm91cCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuLy8gaW1wb3J0IHsgQ29tcG9uZW50T2JqZWN0U2VydmljZSB9IGZyb20gJ3Byb2plY3RzL21taGdsb2JhbC1taWRkbGV3YXJlL3NyYy9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50T2JqZWN0U2VydmljZSB9IGZyb20gJ21taGdsb2JhbC1taWRkbGV3YXJlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZpZWxkZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWkNvbXBvbmVudFNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgZW52aXJvbm1lbnQ7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudE9iamVjdFNlcnZpY2U6IENvbXBvbmVudE9iamVjdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgemNvcmVTZXJ2aWNlOiBaQ29yZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy56Y29yZVNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NraXBDb21wb25lbnRUeXBlKGNvbXBvbmVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuaXNTa2lwQ29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2FkQ29tcG9uZW50KFxyXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBmaWVsZEVsZW1lbnQ6IEZpZWxkRWxlbWVudERpcmVjdGl2ZSxcclxuICAgIGZpZWxkOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgZm9ybTogRm9ybUdyb3VwLFxyXG4gICAgY29udGFpbmVyRmllbGQ6IGFueVxyXG4gICkge1xyXG4gICAgLy8gaWYoZmllbGQuTmFtZSA9PT0gJ0Zvcm1EZXRhaWxDb250YWN0R3JpZCcpIHtcclxuICAgIC8vICAgZGVidWdnZXI7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTa2lwQ29tcG9uZW50VHlwZShmaWVsZC5UeXBlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBvbmVudEZhY3Rvcnk7XHJcbiAgICBjb25zdCBjb21wb25lbnROYW1lID0gdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChmaWVsZC5UeXBlKTtcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgY29tcG9uZW50TmFtZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcclxuICAgICAgICB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KFwidW5rbm93blwiKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBmaWVsZEVsZW1lbnQudmlld0NvbnRhaW5lclJlZjtcclxuICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgIGlmICghZm9ybSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0Zvcm1Hcm91cCBpcyBlbXB0eSEnKTtcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZGF0YSA9IGZpZWxkO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5ncm91cCA9IGdyb3VwO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5mb3JtID0gZm9ybTtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuY29udGFpbmVyRmllbGQgPSBjb250YWluZXJGaWVsZDtcclxuICAgIC8vIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkub3V0cHV0RXZlbnQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiBncm91cC5vdXRwdXRFdmVudChldmVudCkpO1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kQ29tcG9uZW50VG9EeW5hbWljRm9ybShcclxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgaW5qZWN0b3I6IGFueSxcclxuICAgIGFwcFJlZjogYW55LFxyXG4gICAgZmllbGQ6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBjb250YWluZXJJZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5pc1NraXBDb21wb25lbnRUeXBlKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29tcG9uZW50UmVmO1xyXG4gICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoZmllbGQuVHlwZSk7XHJcbiAgICAvLyAxLiBDcmVhdGUgYSBjb21wb25lbnQgcmVmZXJlbmNlIGZyb20gdGhlIGNvbXBvbmVudFxyXG4gICAgaWYgKGNvbXBvbmVudE5hbWUpIHtcclxuICAgICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudE5hbWUpXHJcbiAgICAgICAgLmNyZWF0ZShpbmplY3Rvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChcInVua25vd25cIikpXHJcbiAgICAgICAgLmNyZWF0ZShpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gQXR0YWNoIGNvbXBvbmVudCB0byB0aGUgYXBwUmVmIHNvIHRoYXQgaXQncyBpbnNpZGUgdGhlIG5nIGNvbXBvbmVudCB0cmVlXHJcbiAgICBhcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIC8vIDMuIEdldCBET00gZWxlbWVudCBmcm9tIGNvbXBvbmVudFxyXG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pXHJcbiAgICAgIC5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gNC4gQXBwZW5kIERPTSBlbGVtZW50IHRvIHRoZSBib2R5XHJcbiAgICBjb25zdCBkeW5hbWljRm9ybUhvc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjXCIgKyBjb250YWluZXJJZCk7XHJcbiAgICBkeW5hbWljRm9ybUhvc3QuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XHJcblxyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5kYXRhID0gZmllbGQ7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmdyb3VwID0gZ3JvdXA7XHJcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0lTRURJVCA9IHRydWU7XHJcbiAgcHVibGljIHNldEVkaXRNb2RlKG1lOiBhbnkpIHtcclxuICAgIGxldCBlZGl0bW9kZTtcclxuICAgIGlmIChtZSAmJiBtZS5kYXRhICYmIG1lLmRhdGEuRWRpdE1vZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgbWUuZGF0YS5FZGl0TW9kZSAhPSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgbGV0IGVkaXRNb2RlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGEuRWRpdE1vZGUsIG1lLmdyb3VwKTtcclxuICAgICAgICBlZGl0bW9kZSA9IHsgdmFsdWU6IGVkaXRNb2RlLCBpbml0VmFsdWU6IGVkaXRNb2RlIH07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZWRpdG1vZGUgPSBtZS5kYXRhLkVkaXRNb2RlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBtZS5kYXRhLkVkaXRNb2RlID0gZWRpdG1vZGUgfHwgKChtZS5jb250YWluZXJGaWVsZCAmJiBtZS5jb250YWluZXJGaWVsZC5FZGl0TW9kZSkgPyBtZS5jb250YWluZXJGaWVsZC5FZGl0TW9kZSA6IHsgdmFsdWU6IHRoaXMuREVGQVVMVF9JU0VESVQsIGluaXRWYWx1ZTogdGhpcy5ERUZBVUxUX0lTRURJVCB9KTtcclxuICAgIG1lLmRhdGEuRWRpdE1vZGUudmFsdWUgPSBtZS5kYXRhLkVkaXRNb2RlLmluaXRWYWx1ZTtcclxuICAgIC8vIGNvbnN0IGVkaXRtb2RlID0gKG1lICYmIG1lLmRhdGEgJiYgbWUuZGF0YS5FZGl0TW9kZSAhPSB1bmRlZmluZWQpID8gKHR5cGVvZiBtZS5kYXRhLkVkaXRNb2RlID09IFwiYm9vbGVhblwiID8geyB2YWx1ZTogbWUuZGF0YS5FZGl0TW9kZSwgaW5pdFZhbHVlOiBtZS5kYXRhLkVkaXRNb2RlIH0gOiBtZS5kYXRhLkVkaXRNb2RlKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29tcG9uZW50QWRkaXRpb25hbFByb3BlcnRpZXMobWU6IGFueSkge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy50aXRsZSA9IG1lLmRhdGEgJiYgbWUuZGF0YS5UaXRsZSAmJiBtZS5kYXRhLlRpdGxlLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLlRpdGxlKSA6IG1lLmRhdGEuVGl0bGU7XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmljb24gPSBtZS5kYXRhICYmIG1lLmRhdGEuSWNvbiAmJiBtZS5kYXRhLkljb24uaW5jbHVkZXMoXCJncm91cC5cIikgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwobWUsIG1lLmRhdGEuSWNvbikgOiBtZS5kYXRhLkljb247XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmxhYmVsID0gbWUuZGF0YSAmJiBtZS5kYXRhLkxhYmVsICYmIG1lLmRhdGEuTGFiZWwuaW5jbHVkZXMoXCJncm91cC5cIikgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwobWUsIG1lLmRhdGEuTGFiZWwpIDogbWUuZGF0YS5MYWJlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb21wU3R5bGVzQnlJbmRleChtZTogYW55KSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZS5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlKSkge1xyXG4gICAgICBjb25zdCBpbmQgPSBrZXkucmVwbGFjZSgnc3R5bGUnLCAnJyk7XHJcbiAgICAgIHRoaXMuc2V0U3R5bGVCeUluZGV4KG1lLCBpbmQsIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShtZS5kYXRhW2BTdHlsZSR7aW5kfWBdLCBtZS5ncm91cCkgfHwgXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWUuY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZSkpIHtcclxuICAgICAgY29uc3QgaW5kID0ga2V5LnJlcGxhY2UoJ3N0eWxlJywgJycpO1xyXG4gICAgICB0aGlzLnNldENvbnRhaW5lclN0eWxlQnlJbmRleChtZSwgaW5kLCBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YVtgQ29udGFpbmVyU3R5bGUke2luZH1gXSwgbWUuZ3JvdXApIHx8IFwiXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFN0eWxlQnlJbmRleChtZTogYW55LCBpbmQ6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZVtgc3R5bGUke2luZH1gXSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbnRhaW5lclN0eWxlQnlJbmRleChtZTogYW55LCBpbmQ6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZVtgc3R5bGUke2luZH1gXSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnRTdHlsZVN0cmluZ1RvT2JqZWN0KHN0eWxlU3RyaW5nOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3R5bGVBcnIgPSBzdHlsZVN0cmluZy5zcGxpdChcIjtcIikuZmlsdGVyKHggPT4geCk7XHJcbiAgICAgIGNvbnN0IHN0eWxlT2JqID0ge307XHJcbiAgICAgIGZvciAoY29uc3Qgc3R5bGUgb2Ygc3R5bGVBcnIpIHtcclxuICAgICAgICBjb25zdCBrdnAgPSBzdHlsZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgc3R5bGVPYmpba3ZwWzBdLnRyaW0oKV0gPSBrdnBbMV0udHJpbSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc3R5bGVPYmo7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZVRvb2xCYXJJdGVtcyhpdGVtczogQXJyYXk8YW55PiwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGl0ZW1zLCBcInRleHRcIiwgeyBlbGVtZW50TmFtZTogJ2dlbmVyYWwnLCBncm91cCB9KSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVHcmlkQ29sdW1uSGVhZGVyKGNvbHVtbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChjb2x1bW5zLCBcInRpdGxlXCIsIHsgZWxlbWVudE5hbWU6ICdtZW51JywgZ3JvdXAgfSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoYnV0dG9ucywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6IGdyb3VwLmZpZWxkTmFtZSwgZ3JvdXAgfSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQ29tcG9uZW50RmllbGQoZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcIkxhYmVsXCIsIFwiUGxhY2VIb2xkZXJcIiwgXCJUaXRsZVwiXTsgLy8gVG9vbFRpcFxyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BMaXN0KSB7XHJcbiAgICAgIGlmIChkYXRhW3Byb3BdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMudHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YSwgcHJvcCwgZ3JvdXAuZmllbGROYW1lLCBncm91cCk7XHJcbiAgICAgICAgaWYgKG9icykge1xyXG4gICAgICAgICAgb2JzTGlzdCA9IG9ic0xpc3QuY29uY2F0KG9icyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVDb21wb25lbnRQcm9wZXJ0aWVzKGNvbXBvbmVudFByb3BlcnRpZXM6IFpDb21wb25lbnRQcm9wZXJ0aWVzLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcImxhYmVsXCIsIFwidGl0bGVcIl07XHJcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcExpc3QpIHtcclxuICAgICAgaWYgKGNvbXBvbmVudFByb3BlcnRpZXNbcHJvcF0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzID0gdGhpcy50cmFuc2xhdGVDb21wQnlQcm9wZXJ0eShjb21wb25lbnRQcm9wZXJ0aWVzLCBwcm9wLCBncm91cC5maWVsZE5hbWUsIGdyb3VwKTtcclxuICAgICAgICBpZiAob2JzKSB7XHJcbiAgICAgICAgICBvYnNMaXN0ID0gb2JzTGlzdC5jb25jYXQob2JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YTogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZ3JvdXA6IFpHcm91cCk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4ge1xyXG4gICAgaWYgKGRhdGFbcHJvcE5hbWVdID09IHVuZGVmaW5lZCB8fCBkYXRhW3Byb3BOYW1lXSA9PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbcHJvcE5hbWVdKSAmJiBkYXRhW3Byb3BOYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGRhdGFbcHJvcE5hbWVdLCBudWxsLCB7IGVsZW1lbnROYW1lOiBmaWVsZE5hbWUsIGdyb3VwIH0pLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSByZXNwO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZVNpbmdsZUl0ZW0oZGF0YSwgcHJvcE5hbWUsIHsgZWxlbWVudE5hbWU6IGZpZWxkTmFtZSwgZ3JvdXAgfSkucGlwZShcclxuICAgICAgICB0YXAocmVzcCA9PiB7XHJcbiAgICAgICAgICBkYXRhW3Byb3BOYW1lXSA9IHJlc3A7XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzTGlzdDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -36,7 +36,14 @@ export class UiappmenucontentComponent {
36
36
  return false;
37
37
  }
38
38
  else {
39
- this.mainService.setNavigationParams([pathName, pathName]);
39
+ if (startupPage.indexOf('_', 0) == 0) {
40
+ // menu page
41
+ this.mainService.setNavigationParams([startupPage]);
42
+ }
43
+ else {
44
+ // home page
45
+ this.mainService.setNavigationParams([pathName]);
46
+ }
40
47
  this.router.navigate([pathName]);
41
48
  }
42
49
  }
@@ -49,11 +56,11 @@ export class UiappmenucontentComponent {
49
56
  }
50
57
  }
51
58
  UiappmenucontentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UiappmenucontentComponent, deps: [{ token: i1.Router }, { token: i2.MenuService }, { token: i2.AuthService }, { token: i2.ZCoreService }, { token: i3.MainService }], target: i0.ɵɵFactoryTarget.Component });
52
- UiappmenucontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: { items: "items" }, ngImport: i0, template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div class=\"k-hstack\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0px;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"], components: [{ type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i4.IonRow, selector: "ion-row" }, { type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i6.CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { type: i6.CardHeaderComponent, selector: "kendo-card-header" }, { type: i6.CardBodyComponent, selector: "kendo-card-body" }, { type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: ["items"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CardTitleDirective, selector: "[kendoCardTitle]" }] });
59
+ UiappmenucontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: { items: "items" }, ngImport: i0, template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div>\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"], components: [{ type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i4.IonRow, selector: "ion-row" }, { type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i6.CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { type: i6.CardHeaderComponent, selector: "kendo-card-header" }, { type: i6.CardBodyComponent, selector: "kendo-card-body" }, { type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: ["items"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CardTitleDirective, selector: "[kendoCardTitle]" }] });
53
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UiappmenucontentComponent, decorators: [{
54
61
  type: Component,
55
- args: [{ selector: 'app-uiappmenucontent', template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div class=\"k-hstack\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0px;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"] }]
62
+ args: [{ selector: 'app-uiappmenucontent', template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div>\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"] }]
56
63
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.MenuService }, { type: i2.AuthService }, { type: i2.ZCoreService }, { type: i3.MainService }]; }, propDecorators: { items: [{
57
64
  type: Input
58
65
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWFwcG1lbnVjb250ZW50L3VpYXBwbWVudWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlhcHBtZW51Y29udGVudC91aWFwcG1lbnVjb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQTJDLGdCQUFnQixFQUFnQixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBUzFHLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDVSxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzlCLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2hILENBQUM7SUFFTSxXQUFXLENBQUMsSUFBSTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxhQUFzQjtRQUN6RCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUUzRSxJQUFJLGFBQWEsSUFBSSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxVQUFVLEVBQUU7WUFDbEUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUUsT0FBTyxLQUFLLENBQUM7U0FDZDthQUNJO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN6QixRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNwQixRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzt1SEF6Q1UseUJBQXlCOzJHQUF6Qix5QkFBeUIsd0ZDbEJ0QyxpMkVBZ0RBLGdxRkQ5QmEseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCO3NNQUt2QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBPQXV0aE1lbnVJdGVtLCBNZW51U2VydmljZSwgQXV0aFNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb3JlU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWFwcG1lbnVjb250ZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlhcHBtZW51Y29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PE9BdXRoTWVudUl0ZW0+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREaXZDbGFzcyhpdGVtKSB7XHJcbiAgICByZXR1cm4gKGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gJ2ZsZXgtc2hvdycgOiAnY29sLXhzLTQgY29sLXNtLTQgY29sLW1kLTMgY29sLXhsLTInKSArIFwiIG1lbnUtY29sXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TWVudUxpc3QoaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gdGhpcy5tZW51U2VydmljZS5nZXRNZW51Rm9sZGVyKGl0ZW0uVVJMKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWVudU9uQ2xpY2socGF0aE5hbWU6IHN0cmluZywgYXBwQ2xpZW50UGF0aD86IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RhcnR1cFBhZ2U6IHN0cmluZyA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCkuc3RhcnRVcFBhZ2U7XHJcblxyXG4gICAgaWYgKGFwcENsaWVudFBhdGggJiYgc3RhcnR1cFBhZ2UudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAnbGF1bmNoZXInKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIub3BlbkFwcENsaWVudFBhdGgocGF0aE5hbWUsIGFwcENsaWVudFBhdGgsIHRoaXMuYXV0aFNlcnZpY2UpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tYWluU2VydmljZS5zZXROYXZpZ2F0aW9uUGFyYW1zKFtwYXRoTmFtZSwgcGF0aE5hbWVdKTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhOYW1lXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE1hcElucHV0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBtYXBJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICBtYXBJbnB1dC50eXBlID0gJ2hpZGRlbic7XHJcbiAgICBtYXBJbnB1dC5uYW1lID0ga2V5O1xyXG4gICAgbWFwSW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gbWFwSW5wdXQ7XHJcbiAgfVxyXG59XHJcbiIsIjxpb24tZ3JpZD5cclxuICA8aW9uLXJvdz5cclxuICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImdldERpdkNsYXNzKGl0ZW0pXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uVHlwZSAhPT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnXCIgY2xhc3M9XCJtZW51LWJ0biBpb24tYWN0aXZhdGFibGUgcmlwcGxlLXBhcmVudFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm1lbnVPbkNsaWNrKGl0ZW0uVVJMLCBpdGVtLkFwcENsaWVudFBhdGgpXCI+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cIm1lbnUtYnRuLWxhYmVsIG1lbnUtYnRuLWljb25cIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25dPVwiWydmYXMnLCBpdGVtLkljb24gXVwiIFtpbnZlcnNlXT1cInRydWVcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJwZW5kaW5nLWNvdW50ZXJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW1bJ1BlbmRpbmdDb3VudGVyJ10gJiYgaXRlbVsnUGVuZGluZ0NvdW50ZXInXSA+IDBcIj5cclxuICAgICAgICAgICAge3tpdGVtWydQZW5kaW5nQ291bnRlciddfX1cclxuICAgICAgICAgIDwvaW9uLWJhZGdlPlxyXG4gICAgICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJtZW51LWJ0bi1sYWJlbC10ZXh0XCI+e3sgaXRlbS5MYWJlbCB9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxpb24tbGFiZWwgKm5nSWY9XCJpdGVtLkRlc2NyaXB0aW9uXCIgY2xhc3M9XCJtZW51LWJ0bi1sYWJlbC10ZXh0IG1lbnUtYnRuLWxhYmVsLXRleHQtZGVzY1wiPnt7IGl0ZW0uRGVzY3JpcHRpb24gfX1cclxuICAgICAgICA8L2lvbi1sYWJlbD5cclxuICAgICAgICA8aW9uLXJpcHBsZS1lZmZlY3Q+PC9pb24tcmlwcGxlLWVmZmVjdD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8a2VuZG8tY2FyZCAqbmdJZj1cIml0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnXCI+XHJcbiAgICAgICAgPGtlbmRvLWNhcmQtaGVhZGVyIGNsYXNzPVwiay1oc3RhY2tcIj5cclxuICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJjYXJkLXRpdGxlXCIga2VuZG9DYXJkVGl0bGU+e3tpdGVtLkxhYmVsfX08L2lvbi1sYWJlbD5cclxuICAgICAgICA8L2tlbmRvLWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxrZW5kby1jYXJkLWJvZHk+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiay1oc3RhY2tcIj5cclxuICAgICAgICAgICAgPGFwcC11aWFwcG1lbnVjb250ZW50IFtpdGVtc109XCJnZXRNZW51TGlzdChpdGVtKVwiPjwvYXBwLXVpYXBwbWVudWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2tlbmRvLWNhcmQtYm9keT5cclxuICAgICAgPC9rZW5kby1jYXJkPlxyXG5cclxuICAgICAgPCEtLSA8a2VuZG8tcGFuZWxiYXIgY2xhc3M9XCJtZW51LXBhbmVsXCIgKm5nSWY9XCJpdGVtLlR5cGUgPT09ICdkcm9wZG93bi1zdWJtZW51J1wiIGtlZXBJdGVtQ29udGVudD1cInRydWVcIj5cclxuICAgICAgICA8a2VuZG8tcGFuZWxiYXItaXRlbSBbZXhwYW5kZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvUGFuZWxCYXJJdGVtVGl0bGU+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5JY29uXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5JY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLkljb25cIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1mb2xkZXJcIiBzdHlsZT1cImNvbG9yOiAjMDAwMDAwXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItdGl0bGVcIj57e2l0ZW0uTGFiZWx9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1BhbmVsQmFyQ29udGVudCBjbGFzcz1cIm1lbnUtY29udGVudC10ZW1wXCI+XHJcbiAgICAgICAgICAgIDxhcHAtdWlhcHBtZW51Y29udGVudCBbaXRlbXNdPVwiZ2V0TWVudUxpc3QoaXRlbSlcIj48L2FwcC11aWFwcG1lbnVjb250ZW50PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2tlbmRvLXBhbmVsYmFyLWl0ZW0+XHJcbiAgICAgIDwva2VuZG8tcGFuZWxiYXI+IC0tPlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuPC9pb24tZ3JpZD5cclxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWFwcG1lbnVjb250ZW50L3VpYXBwbWVudWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlhcHBtZW51Y29udGVudC91aWFwcG1lbnVjb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQTJDLGdCQUFnQixFQUFnQixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBUzFHLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDVSxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzlCLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2hILENBQUM7SUFFTSxXQUFXLENBQUMsSUFBSTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxhQUFzQjtRQUN6RCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUUzRSxJQUFJLGFBQWEsSUFBSSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxVQUFVLEVBQUU7WUFDbEUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUUsT0FBTyxLQUFLLENBQUM7U0FDZDthQUNJO1lBQ0gsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLFlBQVk7Z0JBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDckQ7aUJBQ0k7Z0JBQ0gsWUFBWTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNsRDtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN6QixRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNwQixRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzt1SEFoRFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsd0ZDbEJ0Qyw4MEVBZ0RBLDhwRkQ5QmEseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCO3NNQUt2QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBPQXV0aE1lbnVJdGVtLCBNZW51U2VydmljZSwgQXV0aFNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb3JlU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWFwcG1lbnVjb250ZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlhcHBtZW51Y29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PE9BdXRoTWVudUl0ZW0+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREaXZDbGFzcyhpdGVtKSB7XHJcbiAgICByZXR1cm4gKGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gJ2ZsZXgtc2hvdycgOiAnY29sLXhzLTQgY29sLXNtLTQgY29sLW1kLTMgY29sLXhsLTInKSArIFwiIG1lbnUtY29sXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TWVudUxpc3QoaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gdGhpcy5tZW51U2VydmljZS5nZXRNZW51Rm9sZGVyKGl0ZW0uVVJMKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWVudU9uQ2xpY2socGF0aE5hbWU6IHN0cmluZywgYXBwQ2xpZW50UGF0aD86IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RhcnR1cFBhZ2U6IHN0cmluZyA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCkuc3RhcnRVcFBhZ2U7XHJcblxyXG4gICAgaWYgKGFwcENsaWVudFBhdGggJiYgc3RhcnR1cFBhZ2UudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAnbGF1bmNoZXInKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIub3BlbkFwcENsaWVudFBhdGgocGF0aE5hbWUsIGFwcENsaWVudFBhdGgsIHRoaXMuYXV0aFNlcnZpY2UpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0YXJ0dXBQYWdlLmluZGV4T2YoJ18nLCAwKSA9PSAwKSB7XHJcbiAgICAgICAgLy8gbWVudSBwYWdlXHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zZXROYXZpZ2F0aW9uUGFyYW1zKFtzdGFydHVwUGFnZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGhvbWUgcGFnZVxyXG4gICAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2V0TmF2aWdhdGlvblBhcmFtcyhbcGF0aE5hbWVdKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aE5hbWVdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TWFwSW5wdXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1hcElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgIG1hcElucHV0LnR5cGUgPSAnaGlkZGVuJztcclxuICAgIG1hcElucHV0Lm5hbWUgPSBrZXk7XHJcbiAgICBtYXBJbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xyXG5cclxuICAgIHJldHVybiBtYXBJbnB1dDtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1ncmlkPlxyXG4gIDxpb24tcm93PlxyXG4gICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZ2V0RGl2Q2xhc3MoaXRlbSlcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5UeXBlICE9PSAnZHJvcGRvd24tc3VibWVudSdcIiBjbGFzcz1cIm1lbnUtYnRuIGlvbi1hY3RpdmF0YWJsZSByaXBwbGUtcGFyZW50XCJcclxuICAgICAgICAoY2xpY2spPVwibWVudU9uQ2xpY2soaXRlbS5VUkwsIGl0ZW0uQXBwQ2xpZW50UGF0aClcIj5cclxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwibWVudS1idG4tbGFiZWwgbWVudS1idG4taWNvblwiPlxyXG4gICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtZW51LWljb25cIiBbaWNvbl09XCJbJ2ZhcycsIGl0ZW0uSWNvbiBdXCIgW2ludmVyc2VdPVwidHJ1ZVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInBlbmRpbmctY291bnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbVsnUGVuZGluZ0NvdW50ZXInXSAmJiBpdGVtWydQZW5kaW5nQ291bnRlciddID4gMFwiPlxyXG4gICAgICAgICAgICB7e2l0ZW1bJ1BlbmRpbmdDb3VudGVyJ119fVxyXG4gICAgICAgICAgPC9pb24tYmFkZ2U+XHJcbiAgICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cIm1lbnUtYnRuLWxhYmVsLXRleHRcIj57eyBpdGVtLkxhYmVsIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGlvbi1sYWJlbCAqbmdJZj1cIml0ZW0uRGVzY3JpcHRpb25cIiBjbGFzcz1cIm1lbnUtYnRuLWxhYmVsLXRleHQgbWVudS1idG4tbGFiZWwtdGV4dC1kZXNjXCI+e3sgaXRlbS5EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxrZW5kby1jYXJkICpuZ0lmPVwiaXRlbS5UeXBlID09PSAnZHJvcGRvd24tc3VibWVudSdcIj5cclxuICAgICAgICA8a2VuZG8tY2FyZC1oZWFkZXIgY2xhc3M9XCJrLWhzdGFja1wiPlxyXG4gICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImNhcmQtdGl0bGVcIiBrZW5kb0NhcmRUaXRsZT57e2l0ZW0uTGFiZWx9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDwva2VuZG8tY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPGtlbmRvLWNhcmQtYm9keT5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxhcHAtdWlhcHBtZW51Y29udGVudCBbaXRlbXNdPVwiZ2V0TWVudUxpc3QoaXRlbSlcIj48L2FwcC11aWFwcG1lbnVjb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9rZW5kby1jYXJkLWJvZHk+XHJcbiAgICAgIDwva2VuZG8tY2FyZD5cclxuXHJcbiAgICAgIDwhLS0gPGtlbmRvLXBhbmVsYmFyIGNsYXNzPVwibWVudS1wYW5lbFwiICpuZ0lmPVwiaXRlbS5UeXBlID09PSAnZHJvcGRvd24tc3VibWVudSdcIiBrZWVwSXRlbUNvbnRlbnQ9XCJ0cnVlXCI+XHJcbiAgICAgICAgPGtlbmRvLXBhbmVsYmFyLWl0ZW0gW2V4cGFuZGVkXT1cInRydWVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1BhbmVsQmFySXRlbVRpdGxlPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uSWNvblwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIml0ZW0uSWNvblwiIGNsYXNzPVwiemNhcmQtaGVhZGVyLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5JY29uXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZm9sZGVyXCIgc3R5bGU9XCJjb2xvcjogIzAwMDAwMFwiPjwvaT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiemNhcmQtaGVhZGVyLXRpdGxlXCI+e3tpdGVtLkxhYmVsfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9QYW5lbEJhckNvbnRlbnQgY2xhc3M9XCJtZW51LWNvbnRlbnQtdGVtcFwiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYXBwbWVudWNvbnRlbnQgW2l0ZW1zXT1cImdldE1lbnVMaXN0KGl0ZW0pXCI+PC9hcHAtdWlhcHBtZW51Y29udGVudD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9rZW5kby1wYW5lbGJhci1pdGVtPlxyXG4gICAgICA8L2tlbmRvLXBhbmVsYmFyPiAtLT5cclxuICAgIDwvaW9uLWNvbD5cclxuICA8L2lvbi1yb3c+XHJcbjwvaW9uLWdyaWQ+XHJcbiJdfQ==
@@ -0,0 +1,91 @@
1
+ /********** Angular **********/
2
+ import { Component, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
3
+ import { filter, map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "mmhglobal-zcore";
6
+ import * as i2 from "../services/main.service";
7
+ import * as i3 from "../services/signalr.service";
8
+ import * as i4 from "@progress/kendo-angular-notification";
9
+ import * as i5 from "@ionic/angular";
10
+ import * as i6 from "@fortawesome/angular-fontawesome";
11
+ import * as i7 from "@angular/common";
12
+ export class UibulletinComponent {
13
+ constructor(zcoreService, webApiService, resourceApiService, mainService, signalr, notificationService) {
14
+ this.zcoreService = zcoreService;
15
+ this.webApiService = webApiService;
16
+ this.resourceApiService = resourceApiService;
17
+ this.mainService = mainService;
18
+ this.signalr = signalr;
19
+ this.notificationService = notificationService;
20
+ // backNavigate = null;
21
+ this.bulletinMessages = [];
22
+ this.hideBulletinTemplate = true;
23
+ this.title = "";
24
+ this.showBulletinIcon = false;
25
+ this.defaultMessage = 'There are no message today.';
26
+ this.environment = this.zcoreService.getEnvironment();
27
+ this.showBulletinIcon = this.environment.bulletinUrl ? true : false;
28
+ }
29
+ ngOnInit() {
30
+ this.mainService.getResourceServerData().subscribe(() => {
31
+ this.webApiService.httpGet$(this.resourceApiService.getURL(this.environment.bulletinUrl), '').subscribe(resp => {
32
+ if (resp) {
33
+ const msg = [];
34
+ if (resp.length > 0) {
35
+ resp.forEach((item) => {
36
+ msg.push(item.Description);
37
+ });
38
+ }
39
+ this.setBulletinMessages(msg);
40
+ }
41
+ });
42
+ });
43
+ }
44
+ ngAfterViewInit() {
45
+ this.getSignalrBulletinMessage().subscribe();
46
+ }
47
+ setBulletinMessages(data) {
48
+ if (data.length > 0) {
49
+ data.forEach((item) => {
50
+ if (item.Description) {
51
+ this.bulletinMessages.push(item.Description);
52
+ }
53
+ });
54
+ this.title = this.bulletinMessages.length + " messages. Click to view messages.";
55
+ }
56
+ else {
57
+ this.title = "No message";
58
+ }
59
+ }
60
+ getSignalrBulletinMessage() {
61
+ return this.signalr.getEvent().pipe(filter(event => event.name === 'Bulletin'), map(event => {
62
+ this.setBulletinMessages(event.payload);
63
+ }));
64
+ }
65
+ showBulletinMessage() {
66
+ // if closable property is set to true, hideAfter property is ignored.
67
+ this.notificationService.show({
68
+ content: this.bulletinTemplate,
69
+ position: { horizontal: "center", vertical: "top" },
70
+ animation: { type: "slide", duration: 500 },
71
+ type: { style: "none", icon: false },
72
+ closable: this.bulletinMessages.length > 0 ? true : false,
73
+ hideAfter: 1000,
74
+ });
75
+ }
76
+ }
77
+ UibulletinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UibulletinComponent, deps: [{ token: i1.ZCoreService }, { token: i1.WebApiService }, { token: i1.ResourceApiService }, { token: i2.MainService }, { token: i3.SignalrService }, { token: i4.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
78
+ UibulletinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UibulletinComponent, selector: "app-uibulletin", inputs: { group: "group" }, viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true, read: ViewContainerRef }, { propertyName: "bulletinTemplate", first: true, predicate: ["bulletinTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"], components: [{ type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i6.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UibulletinComponent, decorators: [{
80
+ type: Component,
81
+ args: [{ selector: 'app-uibulletin', template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"] }]
82
+ }], ctorParameters: function () { return [{ type: i1.ZCoreService }, { type: i1.WebApiService }, { type: i1.ResourceApiService }, { type: i2.MainService }, { type: i3.SignalrService }, { type: i4.NotificationService }]; }, propDecorators: { appendTo: [{
83
+ type: ViewChild,
84
+ args: ['appendTo', { read: ViewContainerRef }]
85
+ }], bulletinTemplate: [{
86
+ type: ViewChild,
87
+ args: ['bulletinTemplate', { read: TemplateRef }]
88
+ }], group: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlidWxsZXRpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWJ1bGxldGluL3VpYnVsbGV0aW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlidWxsZXRpbi91aWJ1bGxldGluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25HLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFjN0QsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixPQUF1QixFQUN2QixtQkFBd0M7UUFMeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBZmxELHVCQUF1QjtRQUNoQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBRyw2QkFBNkIsQ0FBQztRQVlwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZ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QyxnQkFBZ0IsK0dBQ1IsV0FBVyw2QkN4QnBELCs1QkF1QkE7NEZERGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjt5UEFLZ0MsUUFBUTtzQkFBakUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0ssZ0JBQWdCO3NCQUFyRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDM0MsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFpHcm91cCwgWkNvcmVTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWJ1bGxldGluJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWlidWxsZXRpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWlidWxsZXRpbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlidWxsZXRpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnYXBwZW5kVG8nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcHVibGljIGFwcGVuZFRvOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2J1bGxldGluVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGJ1bGxldGluVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICAvLyBiYWNrTmF2aWdhdGUgPSBudWxsO1xyXG4gIHB1YmxpYyBidWxsZXRpbk1lc3NhZ2VzID0gW107XHJcbiAgcHVibGljIGhpZGVCdWxsZXRpblRlbXBsYXRlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGl0bGUgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnVsbGV0aW5JY29uID0gZmFsc2U7XHJcbiAgcHVibGljIGRlZmF1bHRNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyBtZXNzYWdlIHRvZGF5Lic7XHJcbiAgcHVibGljIGVudmlyb25tZW50OiBhbnk7XHJcbiAgcHVibGljIGZpcnN0SW5pdEJ1bGxldGluVVJMOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1haW5TZXJ2aWNlOiBNYWluU2VydmljZSxcclxuICAgIHByaXZhdGUgc2lnbmFscjogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gICAgdGhpcy5zaG93QnVsbGV0aW5JY29uID0gdGhpcy5lbnZpcm9ubWVudC5idWxsZXRpblVybCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYWluU2VydmljZS5nZXRSZXNvdXJjZVNlcnZlckRhdGEoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKHRoaXMuZW52aXJvbm1lbnQuYnVsbGV0aW5VcmwpLCAnJykuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPSBbXTtcclxuICAgICAgICAgIGlmIChyZXNwLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBtc2cucHVzaChpdGVtLkRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0QnVsbGV0aW5NZXNzYWdlcyhtc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5nZXRTaWduYWxyQnVsbGV0aW5NZXNzYWdlKCkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QnVsbGV0aW5NZXNzYWdlcyhkYXRhOiBhbnlbXSkge1xyXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1bGxldGluTWVzc2FnZXMucHVzaChpdGVtLkRlc2NyaXB0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmJ1bGxldGluTWVzc2FnZXMubGVuZ3RoICsgXCIgbWVzc2FnZXMuIENsaWNrIHRvIHZpZXcgbWVzc2FnZXMuXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50aXRsZSA9IFwiTm8gbWVzc2FnZVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNpZ25hbHJCdWxsZXRpbk1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbHIuZ2V0RXZlbnQoKS5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQubmFtZSA9PT0gJ0J1bGxldGluJyksXHJcbiAgICAgIG1hcChldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRCdWxsZXRpbk1lc3NhZ2VzKGV2ZW50LnBheWxvYWQpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0J1bGxldGluTWVzc2FnZSgpOiB2b2lkIHsgXHJcbiAgICAvLyBpZiBjbG9zYWJsZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgaGlkZUFmdGVyIHByb3BlcnR5IGlzIGlnbm9yZWQuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyh7XHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuYnVsbGV0aW5UZW1wbGF0ZSxcclxuICAgICAgcG9zaXRpb246IHsgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiwgdmVydGljYWw6IFwidG9wXCIgfSxcclxuICAgICAgYW5pbWF0aW9uOiB7IHR5cGU6IFwic2xpZGVcIiwgZHVyYXRpb246IDUwMCB9LFxyXG4gICAgICB0eXBlOiB7IHN0eWxlOiBcIm5vbmVcIiwgaWNvbjogZmFsc2UgfSxcclxuICAgICAgY2xvc2FibGU6IHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICBoaWRlQWZ0ZXI6IDEwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1idXR0b24gKGNsaWNrKT1cInNob3dCdWxsZXRpbk1lc3NhZ2UoKVwiIGZpbGw9XCJub25lXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJzaG93QnVsbGV0aW5JY29uXCI+XHJcblxyXG4gIDxpb24tbGFiZWwgW3RpdGxlXT1cInRpdGxlXCI+XHJcbiAgICA8aW9uLWJhZGdlIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJwZW5kaW5nLWNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImJ1bGxldGluTWVzc2FnZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgPC9pb24tYmFkZ2U+XHJcbiAgICA8aW9uLWxhYmVsPjxmYS1pY29uIFtpY29uXT1cIlsnZmFzJywgJ2JlbGwnXVwiIHNpemU9XCJsZ1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPiBOb3RpZmljYXRpb248L2lvbi1sYWJlbD5cclxuICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxyXG4gIDwvaW9uLWxhYmVsPlxyXG5cclxuICA8IS0tPGZhLWljb24gW2ljb25dPVwiWydmYXMnLCAnYmVsbCddXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+IEJ1bGxldGluLS0+XHJcbjwvaW9uLWJ1dHRvbj5cclxuPG5nLXRlbXBsYXRlICNidWxsZXRpblRlbXBsYXRlPlxyXG4gIDxkaXYgKm5nSWY9XCJidWxsZXRpbk1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgIDwhLS08aDY+QnVsbGV0aW48L2g2Pi0tPlxyXG4gICAgPHVsPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IG1zZyBvZiBidWxsZXRpbk1lc3NhZ2VzXCI+e3sgbXNnIH19PC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImJ1bGxldGluTWVzc2FnZXMubGVuZ3RoIDw9IDBcIj5cclxuICAgIHt7IGRlZmF1bHRNZXNzYWdlIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==