@arsedizioni/ars-utils 18.2.165 → 18.2.167

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 (90) hide show
  1. package/clipper.common/common/definitions.d.ts +7 -1
  2. package/esm2022/clipper.common/common/common.module.mjs +4 -4
  3. package/esm2022/clipper.common/common/definitions.mjs +22 -2
  4. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +3 -3
  5. package/esm2022/clipper.common/common/services/clipper.service.mjs +3 -3
  6. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +6 -6
  7. package/esm2022/clipper.ui/ui/document/document.component.mjs +3 -3
  8. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +3 -3
  9. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +3 -3
  10. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +3 -3
  11. package/esm2022/clipper.ui/ui/references/references.component.mjs +3 -3
  12. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +3 -3
  13. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +3 -3
  14. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +3 -3
  15. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +3 -3
  16. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +3 -3
  17. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +3 -3
  18. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +3 -3
  19. package/esm2022/core/core.module.mjs +8 -8
  20. package/esm2022/core/dateFnsAdapter.mjs +3 -3
  21. package/esm2022/core/directives/autoFocusDirective.mjs +3 -3
  22. package/esm2022/core/directives/changeDateIntervalDirective.mjs +3 -3
  23. package/esm2022/core/directives/copyClipboardDirective.mjs +4 -4
  24. package/esm2022/core/directives/validators.mjs +33 -33
  25. package/esm2022/core/pipes/format.pipe.mjs +4 -4
  26. package/esm2022/core/pipes/replace.pipe.mjs +4 -4
  27. package/esm2022/core/pipes/safe-html.pipe.mjs +4 -4
  28. package/esm2022/core/pipes/safe-url.pipe.mjs +4 -4
  29. package/esm2022/core/pipes/search-callback.pipe.mjs +3 -3
  30. package/esm2022/core/pipes/search-filter.pipe.mjs +4 -4
  31. package/esm2022/core/services/broadcast.service.mjs +3 -3
  32. package/esm2022/core/services/environment.service.mjs +3 -3
  33. package/esm2022/core/services/screen.service.mjs +3 -3
  34. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +6 -6
  35. package/esm2022/help/help.module.mjs +4 -4
  36. package/esm2022/help/services/help.service.mjs +3 -3
  37. package/esm2022/support.common/common/common.module.mjs +4 -4
  38. package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +3 -3
  39. package/esm2022/support.common/common/services/support.service.mjs +3 -3
  40. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
  41. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +3 -3
  42. package/esm2022/tinymce/full-screen-editor/full-screen-editor.component.mjs +3 -3
  43. package/esm2022/tinymce/tinymce.module.mjs +4 -4
  44. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +3 -3
  45. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +3 -3
  46. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +3 -3
  47. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +3 -3
  48. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +3 -3
  49. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +3 -3
  50. package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +3 -3
  51. package/esm2022/ui/ui/paginatorIntl.mjs +3 -3
  52. package/esm2022/ui/ui/services/dialog.service.mjs +3 -3
  53. package/esm2022/ui/ui/services/ui.service.mjs +3 -3
  54. package/esm2022/ui/ui/ui.module.mjs +4 -4
  55. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +3 -3
  56. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +3 -3
  57. package/esm2022/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +3 -3
  58. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +3 -3
  59. package/esm2022/ui.application/ui/components/file-input/file-input.component.mjs +3 -3
  60. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +3 -3
  61. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +3 -3
  62. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
  63. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
  64. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
  65. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
  66. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
  67. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
  68. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +6 -6
  69. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
  70. package/esm2022/ui.application/ui/directives/resize-table-column.directive.mjs +3 -3
  71. package/esm2022/ui.application/ui/services/applicationDialog.service.mjs +3 -3
  72. package/esm2022/ui.application/ui/ui.module.mjs +4 -4
  73. package/esm2022/ui.oauth/ui/components/login/login-oauth.component.mjs +3 -3
  74. package/esm2022/ui.oauth/ui/ui.module.mjs +4 -4
  75. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +32 -12
  76. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  77. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +41 -41
  78. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  79. package/fesm2022/arsedizioni-ars-utils-core.mjs +86 -86
  80. package/fesm2022/arsedizioni-ars-utils-help.mjs +13 -13
  81. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +10 -10
  82. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
  83. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +7 -7
  84. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +58 -58
  85. package/fesm2022/arsedizioni-ars-utils-ui.mjs +34 -34
  86. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +7 -7
  87. package/package.json +7 -7
  88. package/ui.application/ui/components/chips-selector/chips-selector.component.d.ts +1 -1
  89. package/clipper.common/common/services/clipper.working.service.d.ts +0 -41
  90. package/esm2022/clipper.common/common/services/clipper.working.service.mjs +0 -157
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "18.2.165",
3
+ "version": "18.2.167",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -47,18 +47,18 @@
47
47
  "esm": "./esm2022/clipper.ui/arsedizioni-ars-utils-clipper.ui.mjs",
48
48
  "default": "./fesm2022/arsedizioni-ars-utils-clipper.ui.mjs"
49
49
  },
50
- "./help": {
51
- "types": "./help/index.d.ts",
52
- "esm2022": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
53
- "esm": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
54
- "default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
55
- },
56
50
  "./core": {
57
51
  "types": "./core/index.d.ts",
58
52
  "esm2022": "./esm2022/core/arsedizioni-ars-utils-core.mjs",
59
53
  "esm": "./esm2022/core/arsedizioni-ars-utils-core.mjs",
60
54
  "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
61
55
  },
56
+ "./help": {
57
+ "types": "./help/index.d.ts",
58
+ "esm2022": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
59
+ "esm": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
60
+ "default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
61
+ },
62
62
  "./support.ui": {
63
63
  "types": "./support.ui/index.d.ts",
64
64
  "esm2022": "./esm2022/support.ui/arsedizioni-ars-utils-support.ui.mjs",
@@ -15,7 +15,7 @@ export declare class ChipsSelectorComponent implements OnInit, OnDestroy, AfterC
15
15
  collapsedWidth: import("@angular/core").InputSignal<number>;
16
16
  collapseAt: import("@angular/core").InputSignal<number>;
17
17
  collapseAtContainer: import("@angular/core").InputSignal<boolean>;
18
- collapseDisplayMode: import("@angular/core").InputSignal<"dropdown" | "button">;
18
+ collapseDisplayMode: import("@angular/core").InputSignal<"button" | "dropdown">;
19
19
  label: import("@angular/core").InputSignal<string>;
20
20
  multiple: import("@angular/core").InputSignal<boolean>;
21
21
  mode: import("@angular/core").InputSignal<"collapsed" | "dinamyc">;
@@ -1,41 +0,0 @@
1
- import { Signal } from '@angular/core';
2
- import { ClipperUserWorkingDocument } from '../definitions';
3
- import * as i0 from "@angular/core";
4
- export declare class ClipperWorkingService {
5
- private httpClient;
6
- private dialogService;
7
- private serviceUri;
8
- items: import("@angular/core").WritableSignal<ClipperUserWorkingDocument[]>;
9
- total: Signal<number>;
10
- constructor();
11
- /**
12
- * Initialize service
13
- * @param serviceUri : the service uri
14
- */
15
- initialize(serviceUri?: string | null | undefined): void;
16
- /**
17
- * Update storage
18
- */
19
- private updateStorage;
20
- /**
21
- * Load entries
22
- * @param: showBusy: if true show a busy loading message. Default is true.
23
- */
24
- load(showBusy?: boolean): void;
25
- /**
26
- * Add one or more entry
27
- * @param documentIds : the document ids to add
28
- */
29
- add(documentIds: string[]): import("rxjs").Subscription;
30
- /**
31
- * Remove one entry
32
- * @param documentId : the document id
33
- */
34
- remove(documentId: any): import("rxjs").Subscription;
35
- /**
36
- * Clear all entries
37
- */
38
- clear(): import("rxjs").Subscription;
39
- static ɵfac: i0.ɵɵFactoryDeclaration<ClipperWorkingService, never>;
40
- static ɵprov: i0.ɵɵInjectableDeclaration<ClipperWorkingService>;
41
- }
@@ -1,157 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { computed, inject, Injectable, signal } from '@angular/core';
3
- import { SystemUtils } from '@arsedizioni/ars-utils/core';
4
- import { DialogService } from '@arsedizioni/ars-utils/ui';
5
- import * as i0 from "@angular/core";
6
- export class ClipperWorkingService {
7
- constructor() {
8
- this.httpClient = inject(HttpClient);
9
- this.dialogService = inject(DialogService);
10
- this.items = signal([]);
11
- this.total = computed(() => {
12
- return this.items().length;
13
- });
14
- const data = sessionStorage.getItem('clipper_working');
15
- if (data) {
16
- this.items.set(JSON.parse(data));
17
- }
18
- }
19
- /**
20
- * Initialize service
21
- * @param serviceUri : the service uri
22
- */
23
- initialize(serviceUri = null) {
24
- this.serviceUri = serviceUri;
25
- }
26
- /**
27
- * Update storage
28
- */
29
- updateStorage() {
30
- sessionStorage.setItem('clipper_working', JSON.stringify(this.items()));
31
- }
32
- /**
33
- * Load entries
34
- * @param: showBusy: if true show a busy loading message. Default is true.
35
- */
36
- load(showBusy = true) {
37
- if (showBusy) {
38
- this.dialogService.busy("Caricamento in corso...");
39
- }
40
- this.httpClient
41
- .get(this.serviceUri + '/documents/working')
42
- .subscribe({
43
- next: r => {
44
- if (!r.success) {
45
- this.dialogService.error(r.message);
46
- }
47
- else {
48
- if (r.value) {
49
- const items = [];
50
- r.value.forEach(n => {
51
- if (n.documentDescriptor) {
52
- const documentInfo = JSON.parse(n.documentDescriptor);
53
- if (documentInfo) {
54
- n.title1 = documentInfo.Title1 ?? documentInfo.Title2;
55
- n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;
56
- }
57
- n.documentDescriptor = null;
58
- items.push(n);
59
- }
60
- });
61
- this.items.set(items);
62
- this.updateStorage();
63
- }
64
- }
65
- },
66
- complete: () => {
67
- if (showBusy) {
68
- this.dialogService.clearBusy();
69
- }
70
- }
71
- });
72
- }
73
- /**
74
- * Add one or more entry
75
- * @param documentIds : the document ids to add
76
- */
77
- add(documentIds) {
78
- return this.httpClient
79
- .post(this.serviceUri + '/documents/working/add', { documentIds: documentIds })
80
- .subscribe(r => {
81
- if (!r.success) {
82
- this.dialogService.error(r.message);
83
- }
84
- else {
85
- if (r.value) {
86
- const newItems = [];
87
- r.value.forEach(n => {
88
- if (n.documentDescriptor) {
89
- const documentInfo = JSON.parse(n.documentDescriptor);
90
- if (documentInfo) {
91
- n.title1 = documentInfo.Title1 ?? documentInfo.Title2;
92
- n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;
93
- }
94
- n.documentDescriptor = null;
95
- newItems.push(n);
96
- }
97
- });
98
- if (newItems.length > 0) {
99
- this.items.update(values => [...values, ...newItems]);
100
- this.updateStorage();
101
- }
102
- this.dialogService.toast('Operazione completata con successo.');
103
- }
104
- }
105
- });
106
- }
107
- /**
108
- * Remove one entry
109
- * @param documentId : the document id
110
- */
111
- remove(documentId) {
112
- return this.httpClient
113
- .post(this.serviceUri + '/documents/working/delete', { documentIds: [documentId] })
114
- .subscribe(r => {
115
- if (!r.success) {
116
- this.dialogService.error(r.message);
117
- }
118
- else {
119
- let p = SystemUtils.arrayFindIndexByKey(this.items(), 'documentId', documentId);
120
- if (p !== -1) {
121
- this.items.update(values => {
122
- values.splice(p, 1);
123
- return [...values];
124
- });
125
- this.updateStorage();
126
- this.dialogService.toast('Operazione completata con successo.');
127
- }
128
- }
129
- });
130
- }
131
- /**
132
- * Clear all entries
133
- */
134
- clear() {
135
- return this.httpClient
136
- .post(this.serviceUri + '/documents/working/delete', { deleteAll: true })
137
- .subscribe(r => {
138
- if (!r.success) {
139
- this.dialogService.error(r.message);
140
- }
141
- else {
142
- this.items.set([]);
143
- this.updateStorage();
144
- this.dialogService.toast('Operazione completata con successo.');
145
- }
146
- });
147
- }
148
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperWorkingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
149
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperWorkingService, providedIn: 'root' }); }
150
- }
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperWorkingService, decorators: [{
152
- type: Injectable,
153
- args: [{
154
- providedIn: 'root',
155
- }]
156
- }], ctorParameters: () => [] });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBlci53b3JraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24vY29tbW9uL3NlcnZpY2VzL2NsaXBwZXIud29ya2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFFTCxXQUFXLEVBQ1osTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0sMkJBQTJCLENBQUM7O0FBTW5DLE1BQU0sT0FBTyxxQkFBcUI7SUFZaEM7UUFYUSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBSXRDLFVBQUssR0FBRyxNQUFNLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELFVBQUssR0FBbUIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFJRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7S0FHQztJQUNELFVBQVUsQ0FBQyxhQUF3QyxJQUFJO1FBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFB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QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FuS1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQXBpUmVzdWx0LFxyXG4gIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IENsaXBwZXJVc2VyV29ya2luZ0RvY3VtZW50IH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJXb3JraW5nU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKVxyXG5cclxuICBwcml2YXRlIHNlcnZpY2VVcmk6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyBpdGVtcyA9IHNpZ25hbDxDbGlwcGVyVXNlcldvcmtpbmdEb2N1bWVudFtdPihbXSk7XHJcbiAgcHVibGljIHRvdGFsOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xyXG4gIH0pO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2xpcHBlcl93b3JraW5nJyk7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLml0ZW1zLnNldChKU09OLnBhcnNlKGRhdGEpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBJbml0aWFsaXplIHNlcnZpY2VcclxuICogQHBhcmFtIHNlcnZpY2VVcmkgOiB0aGUgc2VydmljZSB1cmlcclxuICovXHJcbiAgaW5pdGlhbGl6ZShzZXJ2aWNlVXJpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBzdG9yYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTdG9yYWdlKCkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2xpcHBlcl93b3JraW5nJywgSlNPTi5zdHJpbmdpZnkodGhpcy5pdGVtcygpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGVudHJpZXNcclxuICAgKiBAcGFyYW06IHNob3dCdXN5OiBpZiB0cnVlIHNob3cgYSBidXN5IGxvYWRpbmcgbWVzc2FnZS4gRGVmYXVsdCBpcyB0cnVlLlxyXG4gICAqL1xyXG4gIGxvYWQoc2hvd0J1c3k6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBpZiAoc2hvd0J1c3kpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3koXCJDYXJpY2FtZW50byBpbiBjb3Jzby4uLlwiKTtcclxuICAgIH1cclxuICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyVXNlcldvcmtpbmdEb2N1bWVudFtdPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiByID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHIudmFsdWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpdGVtczogQ2xpcHBlclVzZXJXb3JraW5nRG9jdW1lbnRbXSA9IFtdO1xyXG4gICAgICAgICAgICAgIHIudmFsdWUuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuLmRvY3VtZW50RGVzY3JpcHRvcikge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudEluZm8gPSBKU09OLnBhcnNlKG4uZG9jdW1lbnREZXNjcmlwdG9yKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4udGl0bGUxID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/PyBkb2N1bWVudEluZm8uVGl0bGUyO1xyXG4gICAgICAgICAgICAgICAgICAgIG4udGl0bGUyID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/IGRvY3VtZW50SW5mby5UaXRsZTIgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG4uZG9jdW1lbnREZXNjcmlwdG9yID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnNldChpdGVtcyk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2hvd0J1c3kpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgb25lIG9yIG1vcmUgZW50cnlcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZHMgOiB0aGUgZG9jdW1lbnQgaWRzIHRvIGFkZFxyXG4gICAqL1xyXG4gIGFkZChkb2N1bWVudElkczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJVc2VyV29ya2luZ0RvY3VtZW50W10+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy93b3JraW5nL2FkZCcsXHJcbiAgICAgICAgeyBkb2N1bWVudElkczogZG9jdW1lbnRJZHMgfVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoci52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdJdGVtczogQ2xpcHBlclVzZXJXb3JraW5nRG9jdW1lbnRbXSA9IFtdO1xyXG4gICAgICAgICAgICByLnZhbHVlLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG4uZG9jdW1lbnREZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudEluZm8gPSBKU09OLnBhcnNlKG4uZG9jdW1lbnREZXNjcmlwdG9yKTtcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgbi50aXRsZTEgPSBkb2N1bWVudEluZm8uVGl0bGUxID8/IGRvY3VtZW50SW5mby5UaXRsZTI7XHJcbiAgICAgICAgICAgICAgICAgIG4udGl0bGUyID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/IGRvY3VtZW50SW5mby5UaXRsZTIgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbi5kb2N1bWVudERlc2NyaXB0b3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgbmV3SXRlbXMucHVzaChuKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAobmV3SXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKHZhbHVlcyA9PiBbLi4udmFsdWVzLCAuLi5uZXdJdGVtc10pO1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIG9uZSBlbnRyeVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgcmVtb3ZlKGRvY3VtZW50SWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZy9kZWxldGUnLFxyXG4gICAgICAgIHsgZG9jdW1lbnRJZHM6IFtkb2N1bWVudElkXSB9XHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICAgICAgdGhpcy5pdGVtcygpLFxyXG4gICAgICAgICAgICAnZG9jdW1lbnRJZCcsXHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtcy51cGRhdGUodmFsdWVzID0+IHtcclxuICAgICAgICAgICAgICB2YWx1ZXMuc3BsaWNlKHAsIDEpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbLi4udmFsdWVzXTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ09wZXJhemlvbmUgY29tcGxldGF0YSBjb24gc3VjY2Vzc28uJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBlbnRyaWVzXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy93b3JraW5nL2RlbGV0ZScsXHJcbiAgICAgICAgeyBkZWxldGVBbGw6IHRydWUgfVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0b3JhZ2UoKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=