@alfresco/adf-process-services 8.1.0-16320806191 → 9.1.0-16312921641

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 (125) hide show
  1. package/fesm2022/adf-process-services.mjs +297 -301
  2. package/fesm2022/adf-process-services.mjs.map +1 -1
  3. package/package.json +4 -6
  4. package/esm2022/adf-process-services.mjs +0 -5
  5. package/esm2022/lib/app-list/apps-list.component.mjs +0 -195
  6. package/esm2022/lib/app-list/icon.model.mjs +0 -166
  7. package/esm2022/lib/app-list/index.mjs +0 -18
  8. package/esm2022/lib/app-list/public-api.mjs +0 -23
  9. package/esm2022/lib/app-list/select-apps-dialog/select-apps-dialog.component.mjs +0 -53
  10. package/esm2022/lib/attachment/create-process-attachment/create-process-attachment.component.mjs +0 -73
  11. package/esm2022/lib/attachment/create-task-attachment/create-task-attachment.component.mjs +0 -73
  12. package/esm2022/lib/attachment/index.mjs +0 -18
  13. package/esm2022/lib/attachment/process-attachment-list/process-attachment-list.component.mjs +0 -197
  14. package/esm2022/lib/attachment/public-api.mjs +0 -31
  15. package/esm2022/lib/attachment/task-attachment-list/task-attachment-list.component.mjs +0 -196
  16. package/esm2022/lib/compat/types.mjs +0 -18
  17. package/esm2022/lib/form/events/validate-dynamic-table-row.event.mjs +0 -26
  18. package/esm2022/lib/form/form-custom-outcomes.component.mjs +0 -31
  19. package/esm2022/lib/form/form-list/form-list.component.mjs +0 -50
  20. package/esm2022/lib/form/form.component.mjs +0 -346
  21. package/esm2022/lib/form/index.mjs +0 -18
  22. package/esm2022/lib/form/model/form-definition.model.mjs +0 -92
  23. package/esm2022/lib/form/process-form-rendering.service.mjs +0 -55
  24. package/esm2022/lib/form/public-api.mjs +0 -32
  25. package/esm2022/lib/form/services/activiti-alfresco.service.mjs +0 -113
  26. package/esm2022/lib/form/services/ecm-model.service.mjs +0 -156
  27. package/esm2022/lib/form/services/editor.service.mjs +0 -87
  28. package/esm2022/lib/form/services/external-alfresco-api.service.mjs +0 -57
  29. package/esm2022/lib/form/services/index.mjs +0 -26
  30. package/esm2022/lib/form/services/model.service.mjs +0 -130
  31. package/esm2022/lib/form/services/process-content.service.mjs +0 -223
  32. package/esm2022/lib/form/services/process-definition.service.mjs +0 -93
  33. package/esm2022/lib/form/services/task-form.service.mjs +0 -127
  34. package/esm2022/lib/form/services/task.service.mjs +0 -77
  35. package/esm2022/lib/form/start-form/start-form.component.mjs +0 -141
  36. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.mjs +0 -18
  37. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.component.mjs +0 -115
  38. package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.service.mjs +0 -100
  39. package/esm2022/lib/form/widgets/content-widget/attach-file-widget.component.mjs +0 -254
  40. package/esm2022/lib/form/widgets/content-widget/attach-folder-widget.component.mjs +0 -93
  41. package/esm2022/lib/form/widgets/content-widget/index.mjs +0 -18
  42. package/esm2022/lib/form/widgets/content-widget/public-api.mjs +0 -22
  43. package/esm2022/lib/form/widgets/document/content.widget.mjs +0 -125
  44. package/esm2022/lib/form/widgets/document/document.widget.mjs +0 -61
  45. package/esm2022/lib/form/widgets/dropdown/dropdown.widget.mjs +0 -182
  46. package/esm2022/lib/form/widgets/dynamic-table/dynamic-table.widget.mjs +0 -192
  47. package/esm2022/lib/form/widgets/dynamic-table/editors/amount/amount.editor.mjs +0 -47
  48. package/esm2022/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.mjs +0 -42
  49. package/esm2022/lib/form/widgets/dynamic-table/editors/date/date.editor.mjs +0 -84
  50. package/esm2022/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.mjs +0 -84
  51. package/esm2022/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.mjs +0 -95
  52. package/esm2022/lib/form/widgets/dynamic-table/editors/models/cell-validator.model.mjs +0 -18
  53. package/esm2022/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.mjs +0 -47
  54. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.mjs +0 -24
  55. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column-option.model.mjs +0 -18
  56. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column.model.mjs +0 -18
  57. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.mjs +0 -18
  58. package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.mjs +0 -159
  59. package/esm2022/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.mjs +0 -45
  60. package/esm2022/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.mjs +0 -40
  61. package/esm2022/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.mjs +0 -89
  62. package/esm2022/lib/form/widgets/dynamic-table/editors/text/text.editor.mjs +0 -47
  63. package/esm2022/lib/form/widgets/dynamic-table/index.mjs +0 -18
  64. package/esm2022/lib/form/widgets/dynamic-table/public-api.mjs +0 -44
  65. package/esm2022/lib/form/widgets/file-viewer/file-viewer.widget.mjs +0 -46
  66. package/esm2022/lib/form/widgets/functional-group/functional-group.widget.mjs +0 -167
  67. package/esm2022/lib/form/widgets/index.mjs +0 -18
  68. package/esm2022/lib/form/widgets/people/people.widget.mjs +0 -169
  69. package/esm2022/lib/form/widgets/public-api.mjs +0 -54
  70. package/esm2022/lib/form/widgets/radio-buttons/radio-buttons.widget.mjs +0 -97
  71. package/esm2022/lib/form/widgets/typeahead/typeahead.widget.mjs +0 -152
  72. package/esm2022/lib/form/widgets/upload/upload.widget.mjs +0 -128
  73. package/esm2022/lib/people/components/people/people.component.mjs +0 -124
  74. package/esm2022/lib/people/components/people-list/people-list.component.mjs +0 -74
  75. package/esm2022/lib/people/components/people-search/people-search.component.mjs +0 -83
  76. package/esm2022/lib/people/components/people-search-field/people-search-field.component.mjs +0 -90
  77. package/esm2022/lib/people/components/people-selector/people-selector.component.mjs +0 -76
  78. package/esm2022/lib/people/helpers/get-display-user.mjs +0 -22
  79. package/esm2022/lib/people/index.mjs +0 -18
  80. package/esm2022/lib/people/interfaces/perform-search-callback.interface.mjs +0 -18
  81. package/esm2022/lib/people/public-api.mjs +0 -35
  82. package/esm2022/lib/process-comments/index.mjs +0 -21
  83. package/esm2022/lib/process-comments/process-comments.component.mjs +0 -45
  84. package/esm2022/lib/process-comments/services/comment-process.service.mjs +0 -77
  85. package/esm2022/lib/process-list/components/process-audit/process-audit.directive.mjs +0 -105
  86. package/esm2022/lib/process-list/components/process-filters/process-filters.component.mjs +0 -211
  87. package/esm2022/lib/process-list/components/process-instance-details/process-instance-details.component.mjs +0 -142
  88. package/esm2022/lib/process-list/components/process-instance-header/process-instance-header.component.mjs +0 -123
  89. package/esm2022/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.mjs +0 -163
  90. package/esm2022/lib/process-list/components/process-list/process-list.component.mjs +0 -327
  91. package/esm2022/lib/process-list/components/start-process/start-process.component.mjs +0 -423
  92. package/esm2022/lib/process-list/index.mjs +0 -18
  93. package/esm2022/lib/process-list/public-api.mjs +0 -44
  94. package/esm2022/lib/process-list/services/process-filter.service.mjs +0 -182
  95. package/esm2022/lib/process-list/services/process.service.mjs +0 -259
  96. package/esm2022/lib/process.module.mjs +0 -132
  97. package/esm2022/lib/services/apps-process.service.mjs +0 -58
  98. package/esm2022/lib/services/people-process.service.mjs +0 -124
  99. package/esm2022/lib/services/task-comments.service.mjs +0 -65
  100. package/esm2022/lib/task-comments/index.mjs +0 -21
  101. package/esm2022/lib/task-comments/task-comments.component.mjs +0 -44
  102. package/esm2022/lib/task-list/components/attach-form/attach-form.component.mjs +0 -127
  103. package/esm2022/lib/task-list/components/checklist/checklist.component.mjs +0 -140
  104. package/esm2022/lib/task-list/components/start-task/start-task.component.mjs +0 -221
  105. package/esm2022/lib/task-list/components/task-details/task-details.component.mjs +0 -360
  106. package/esm2022/lib/task-list/components/task-filters/task-filters.component.mjs +0 -261
  107. package/esm2022/lib/task-list/components/task-form/claim-task.directive.mjs +0 -77
  108. package/esm2022/lib/task-list/components/task-form/task-form.component.mjs +0 -313
  109. package/esm2022/lib/task-list/components/task-form/unclaim-task.directive.mjs +0 -77
  110. package/esm2022/lib/task-list/components/task-header/task-header.component.mjs +0 -361
  111. package/esm2022/lib/task-list/components/task-list/task-list.component.mjs +0 -359
  112. package/esm2022/lib/task-list/components/task-standalone/task-standalone.component.mjs +0 -82
  113. package/esm2022/lib/task-list/index.mjs +0 -18
  114. package/esm2022/lib/task-list/models/form.model.mjs +0 -26
  115. package/esm2022/lib/task-list/models/task-details.event.mjs +0 -32
  116. package/esm2022/lib/task-list/models/task-preset.model.mjs +0 -41
  117. package/esm2022/lib/task-list/models/user-event.model.mjs +0 -18
  118. package/esm2022/lib/task-list/models/user-group.model.mjs +0 -18
  119. package/esm2022/lib/task-list/public-api.mjs +0 -60
  120. package/esm2022/lib/task-list/services/process-upload.service.mjs +0 -42
  121. package/esm2022/lib/task-list/services/task-filter.service.mjs +0 -249
  122. package/esm2022/lib/task-list/services/task-upload.service.mjs +0 -42
  123. package/esm2022/lib/task-list/services/tasklist.service.mjs +0 -251
  124. package/esm2022/lib/task-list/validators/task-description.validator.mjs +0 -26
  125. package/esm2022/public-api.mjs +0 -30
@@ -1,163 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { CommonModule, DatePipe } from '@angular/common';
18
- import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';
19
- import { MatDialog, MatDialogModule } from '@angular/material/dialog';
20
- import { Observable } from 'rxjs';
21
- import { TaskDetailsEvent } from '../../../task-list';
22
- import { ProcessService } from '../../services/process.service';
23
- import { share } from 'rxjs/operators';
24
- import { ProcessInstanceRepresentation } from '@alfresco/js-api';
25
- import { MatButtonModule } from '@angular/material/button';
26
- import { TranslatePipe } from '@ngx-translate/core';
27
- import { MatChipsModule } from '@angular/material/chips';
28
- import { MatListModule } from '@angular/material/list';
29
- import { MatIconModule } from '@angular/material/icon';
30
- import { StartFormComponent } from '../../../form';
31
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
32
- import * as i0 from "@angular/core";
33
- import * as i1 from "../../services/process.service";
34
- import * as i2 from "@angular/material/dialog";
35
- import * as i3 from "@angular/common";
36
- import * as i4 from "@angular/material/button";
37
- import * as i5 from "@angular/material/chips";
38
- import * as i6 from "@angular/material/list";
39
- import * as i7 from "@angular/material/icon";
40
- export class ProcessInstanceTasksComponent {
41
- constructor(processService, dialog) {
42
- this.processService = processService;
43
- this.dialog = dialog;
44
- /**
45
- * Toggles whether to show a refresh button next to the list of tasks to allow
46
- * it to be updated from the server.
47
- */
48
- this.showRefreshButton = true;
49
- /** Emitted when an error occurs. */
50
- this.error = new EventEmitter();
51
- /** Emitted when a task is clicked. */
52
- this.taskClick = new EventEmitter();
53
- this.activeTasks = [];
54
- this.completedTasks = [];
55
- this.destroyRef = inject(DestroyRef);
56
- this.task$ = new Observable((observer) => (this.taskObserver = observer)).pipe(share());
57
- this.completedTask$ = new Observable((observer) => (this.completedTaskObserver = observer)).pipe(share());
58
- }
59
- ngOnInit() {
60
- this.task$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.activeTasks.push(task));
61
- this.completedTask$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.completedTasks.push(task));
62
- }
63
- ngOnChanges(changes) {
64
- const processInstanceDetails = changes['processInstanceDetails'];
65
- if (processInstanceDetails?.currentValue) {
66
- this.load(processInstanceDetails.currentValue.id);
67
- }
68
- }
69
- load(processInstanceId) {
70
- this.loadActive(processInstanceId);
71
- this.loadCompleted(processInstanceId);
72
- }
73
- loadActive(processInstanceId) {
74
- this.activeTasks = [];
75
- if (processInstanceId) {
76
- this.processService.getProcessTasks(processInstanceId, null).subscribe((res) => {
77
- res.forEach((task) => {
78
- this.taskObserver.next(task);
79
- });
80
- }, (err) => {
81
- this.error.emit(err);
82
- });
83
- }
84
- else {
85
- this.activeTasks = [];
86
- }
87
- }
88
- loadCompleted(processInstanceId) {
89
- this.completedTasks = [];
90
- if (processInstanceId) {
91
- this.processService.getProcessTasks(processInstanceId, 'completed').subscribe((res) => {
92
- res.forEach((task) => {
93
- this.completedTaskObserver.next(task);
94
- });
95
- }, (err) => {
96
- this.error.emit(err);
97
- });
98
- }
99
- else {
100
- this.completedTasks = [];
101
- }
102
- }
103
- hasStartFormDefined() {
104
- return this.processInstanceDetails?.startFormDefined === true;
105
- }
106
- getUserFullName(user) {
107
- if (user) {
108
- return (user.firstName && user.firstName !== 'null' ? user.firstName + ' ' : '') + user.lastName;
109
- }
110
- return 'Nobody';
111
- }
112
- getFormatDate(value, format) {
113
- const datePipe = new DatePipe('en-US');
114
- try {
115
- return datePipe.transform(value, format);
116
- }
117
- catch {
118
- return value;
119
- }
120
- }
121
- clickTask(task) {
122
- const args = new TaskDetailsEvent(task);
123
- this.taskClick.emit(args);
124
- }
125
- clickStartTask() {
126
- this.processId = this.processInstanceDetails.id;
127
- this.showStartDialog();
128
- }
129
- showStartDialog() {
130
- this.dialog.open(this.startDialog, { height: '500px', width: '700px' });
131
- }
132
- closeStartDialog() {
133
- this.dialog.closeAll();
134
- }
135
- onRefreshClicked() {
136
- this.load(this.processInstanceDetails.id);
137
- }
138
- onFormContentClick() {
139
- this.closeStartDialog();
140
- }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceTasksComponent, deps: [{ token: i1.ProcessService }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessInstanceTasksComponent, isStandalone: true, selector: "adf-process-instance-tasks", inputs: { processInstanceDetails: "processInstanceDetails", showRefreshButton: "showRefreshButton" }, outputs: { error: "error", taskClick: "taskClick" }, viewQueries: [{ propertyName: "startDialog", first: true, predicate: ["startDialog"], descendants: true }, { propertyName: "taskDetails", first: true, predicate: ["taskDetails"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showRefreshButton\" class=\"process-tasks-refresh\" >\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon class=\"md-24\" [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.LABELS.REFRESH' | translate\">refresh</mat-icon>\n </button>\n</div>\n\n<!-- ACTIVE FORM -->\n\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_ACTIVE'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{activeTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"activeTasks?.length > 0\" data-automation-id=\"active-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of activeTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user: getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<!-- START FORM -->\n\n<div *ngIf=\"activeTasks?.length === 0\" data-automation-id=\"active-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_ACTIVE' | translate }}\n</div>\n\n<div *ngIf=\"hasStartFormDefined()\">\n <span class=\"adf-activiti-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</span>\n\n <!--IF START TASK COMPLETED -->\n <div class=\"menu-container\" data-automation-id=\"start-form\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" (click)=\"clickStartTask()\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(processInstanceDetails.startedBy), created: getFormatDate(processInstanceDetails.started, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>\n\n<!-- COMPLETED FORM -->\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_COMPLETED'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{completedTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"completedTasks?.length > 0\" data-automation-id=\"completed-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of completedTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<div *ngIf=\"completedTasks?.length === 0\" data-automation-id=\"completed-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_COMPLETED' | translate }}\n</div>\n\n<ng-template *ngIf=\"hasStartFormDefined()\" #startDialog>\n <div id=\"adf-start-process-dialog\" class=\"adf-start-process-dialog\">\n <h4 matDialogTitle>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h4>\n <div mat-dialog-content class=\"adf-start-process-dialog-content\">\n <adf-start-form [processId]=\"processId\"\n [showRefreshButton]=\"false\" [readOnlyForm]=\"true\"\n (formContentClicked)='onFormContentClick()' />\n </div>\n <div mat-dialog-actions class=\"adf-start-process-dialog-actions\">\n <button mat-button type=\"button\" (click)=\"closeStartDialog()\">{{ 'ADF_PROCESS_LIST.DETAILS.TASKS.TASK_CLOSE' | translate }}</button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{width:100%}.activiti-label{font-weight:bolder;vertical-align:top}.adf-process-badge{pointer-events:none;outline:none}.adf-chip-label{position:relative;top:5px;margin-right:8px;font-weight:700}.menu-container{margin-bottom:32px}.activiti-label+.icon{position:relative;top:-2px}.task-details-dialog{position:fixed;top:50%;transform:translateY(-50%);width:40%}.process-tasks-refresh{float:right}.adf-start-process-dialog{width:100%;height:100%;display:flex;flex-direction:column}.adf-start-process-dialog-content{flex-grow:1}.adf-start-process-dialog-actions{display:flex;justify-content:flex-end}.no-results{margin-left:9px;font-size:var(--theme-body-1-font-size);font-weight:400;letter-spacing:0;line-height:18px;color:#0000008a;display:block;padding:12px}.process-tasks__task-item{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i5.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i6.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i6.MatListItemLine, selector: "[matListItemLine]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: StartFormComponent, selector: "adf-start-form", inputs: ["processDefinitionId", "processId", "showOutcomeButtons", "showRefreshButton", "readOnlyForm"], outputs: ["outcomeClick", "formContentClicked"] }] }); }
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceTasksComponent, decorators: [{
145
- type: Component,
146
- args: [{ selector: 'adf-process-instance-tasks', standalone: true, imports: [CommonModule, MatButtonModule, TranslatePipe, MatChipsModule, MatListModule, MatIconModule, MatDialogModule, StartFormComponent], template: "<div *ngIf=\"showRefreshButton\" class=\"process-tasks-refresh\" >\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon class=\"md-24\" [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.LABELS.REFRESH' | translate\">refresh</mat-icon>\n </button>\n</div>\n\n<!-- ACTIVE FORM -->\n\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_ACTIVE'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{activeTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"activeTasks?.length > 0\" data-automation-id=\"active-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of activeTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user: getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<!-- START FORM -->\n\n<div *ngIf=\"activeTasks?.length === 0\" data-automation-id=\"active-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_ACTIVE' | translate }}\n</div>\n\n<div *ngIf=\"hasStartFormDefined()\">\n <span class=\"adf-activiti-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</span>\n\n <!--IF START TASK COMPLETED -->\n <div class=\"menu-container\" data-automation-id=\"start-form\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" (click)=\"clickStartTask()\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(processInstanceDetails.startedBy), created: getFormatDate(processInstanceDetails.started, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>\n\n<!-- COMPLETED FORM -->\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_COMPLETED'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{completedTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"completedTasks?.length > 0\" data-automation-id=\"completed-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of completedTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<div *ngIf=\"completedTasks?.length === 0\" data-automation-id=\"completed-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_COMPLETED' | translate }}\n</div>\n\n<ng-template *ngIf=\"hasStartFormDefined()\" #startDialog>\n <div id=\"adf-start-process-dialog\" class=\"adf-start-process-dialog\">\n <h4 matDialogTitle>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h4>\n <div mat-dialog-content class=\"adf-start-process-dialog-content\">\n <adf-start-form [processId]=\"processId\"\n [showRefreshButton]=\"false\" [readOnlyForm]=\"true\"\n (formContentClicked)='onFormContentClick()' />\n </div>\n <div mat-dialog-actions class=\"adf-start-process-dialog-actions\">\n <button mat-button type=\"button\" (click)=\"closeStartDialog()\">{{ 'ADF_PROCESS_LIST.DETAILS.TASKS.TASK_CLOSE' | translate }}</button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{width:100%}.activiti-label{font-weight:bolder;vertical-align:top}.adf-process-badge{pointer-events:none;outline:none}.adf-chip-label{position:relative;top:5px;margin-right:8px;font-weight:700}.menu-container{margin-bottom:32px}.activiti-label+.icon{position:relative;top:-2px}.task-details-dialog{position:fixed;top:50%;transform:translateY(-50%);width:40%}.process-tasks-refresh{float:right}.adf-start-process-dialog{width:100%;height:100%;display:flex;flex-direction:column}.adf-start-process-dialog-content{flex-grow:1}.adf-start-process-dialog-actions{display:flex;justify-content:flex-end}.no-results{margin-left:9px;font-size:var(--theme-body-1-font-size);font-weight:400;letter-spacing:0;line-height:18px;color:#0000008a;display:block;padding:12px}.process-tasks__task-item{cursor:pointer}\n"] }]
147
- }], ctorParameters: () => [{ type: i1.ProcessService }, { type: i2.MatDialog }], propDecorators: { processInstanceDetails: [{
148
- type: Input,
149
- args: [{ required: true }]
150
- }], showRefreshButton: [{
151
- type: Input
152
- }], error: [{
153
- type: Output
154
- }], startDialog: [{
155
- type: ViewChild,
156
- args: ['startDialog']
157
- }], taskDetails: [{
158
- type: ViewChild,
159
- args: ['taskDetails']
160
- }], taskClick: [{
161
- type: Output
162
- }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1pbnN0YW5jZS10YXNrcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtaW5zdGFuY2UtdGFza3MvcHJvY2Vzcy1pbnN0YW5jZS10YXNrcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtaW5zdGFuY2UtdGFza3MvcHJvY2Vzcy1pbnN0YW5jZS10YXNrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQXNCLE1BQU0sa0JBQWtCLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVNoRSxNQUFNLE9BQU8sNkJBQTZCO0lBc0N0QyxZQUFvQixjQUE4QixFQUFVLE1BQWlCO1FBQXpELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFqQzdFOzs7V0FHRztRQUVILHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUVsQyxvQ0FBb0M7UUFFcEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFRaEMsc0NBQXNDO1FBRXRDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUVqRCxnQkFBVyxHQUF5QixFQUFFLENBQUM7UUFDdkMsbUJBQWMsR0FBeUIsRUFBRSxDQUFDO1FBU3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFHN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBcUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQXFCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDakUsSUFBSSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxpQkFBeUI7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVSxDQUFDLGlCQUF5QjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUNsRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNKLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNKLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLGlCQUF5QjtRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUN6RSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNKLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQ0osQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsS0FBSyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTO1FBQ3JCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckcsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVSxFQUFFLE1BQWM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBd0I7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7K0dBN0lRLDZCQUE2QjttR0FBN0IsNkJBQTZCLCtjQ3hDMUMsZ3RJQW9GQSw2MUJEaERjLFlBQVksK1BBQUUsZUFBZSxvVUFBRSxhQUFhLGlEQUFFLGNBQWMsOGNBQUUsYUFBYSx1V0FBRSxhQUFhLG1MQUFFLGVBQWUsMGJBQUUsa0JBQWtCOzs0RkFJaEksNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNJLDRCQUE0QixjQUMxQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7MkdBTzFJLHNCQUFzQjtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBUXpCLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixLQUFLO3NCQURKLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixTQUFTO3NCQURSLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRhc2tEZXRhaWxzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi90YXNrLWxpc3QnO1xuaW1wb3J0IHsgUHJvY2Vzc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9jZXNzSW5zdGFuY2VSZXByZXNlbnRhdGlvbiwgVGFza1JlcHJlc2VudGF0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBTdGFydEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9mb3JtJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtcHJvY2Vzcy1pbnN0YW5jZS10YXNrcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIE1hdENoaXBzTW9kdWxlLCBNYXRMaXN0TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIFN0YXJ0Rm9ybUNvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtaW5zdGFuY2UtdGFza3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtaW5zdGFuY2UtdGFza3MuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NJbnN0YW5jZVRhc2tzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiBUaGUgSUQgb2YgdGhlIHByb2Nlc3MgaW5zdGFuY2UgdG8gZGlzcGxheSB0YXNrcyBmb3IuICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwcm9jZXNzSW5zdGFuY2VEZXRhaWxzOiBQcm9jZXNzSW5zdGFuY2VSZXByZXNlbnRhdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgd2hldGhlciB0byBzaG93IGEgcmVmcmVzaCBidXR0b24gbmV4dCB0byB0aGUgbGlzdCBvZiB0YXNrcyB0byBhbGxvd1xuICAgICAqIGl0IHRvIGJlIHVwZGF0ZWQgZnJvbSB0aGUgc2VydmVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JlZnJlc2hCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3N0YXJ0RGlhbG9nJylcbiAgICBzdGFydERpYWxvZzogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgndGFza0RldGFpbHMnKVxuICAgIHRhc2tEZXRhaWxzOiBhbnk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdGFzayBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHRhc2tDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VGFza0RldGFpbHNFdmVudD4oKTtcblxuICAgIGFjdGl2ZVRhc2tzOiBUYXNrUmVwcmVzZW50YXRpb25bXSA9IFtdO1xuICAgIGNvbXBsZXRlZFRhc2tzOiBUYXNrUmVwcmVzZW50YXRpb25bXSA9IFtdO1xuICAgIHRhc2skOiBPYnNlcnZhYmxlPFRhc2tSZXByZXNlbnRhdGlvbj47XG4gICAgY29tcGxldGVkVGFzayQ6IE9ic2VydmFibGU8VGFza1JlcHJlc2VudGF0aW9uPjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgcHJvY2Vzc0lkOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHRhc2tPYnNlcnZlcjogT2JzZXJ2ZXI8VGFza1JlcHJlc2VudGF0aW9uPjtcbiAgICBwcml2YXRlIGNvbXBsZXRlZFRhc2tPYnNlcnZlcjogT2JzZXJ2ZXI8VGFza1JlcHJlc2VudGF0aW9uPjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLCBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XG4gICAgICAgIHRoaXMudGFzayQgPSBuZXcgT2JzZXJ2YWJsZTxUYXNrUmVwcmVzZW50YXRpb24+KChvYnNlcnZlcikgPT4gKHRoaXMudGFza09ic2VydmVyID0gb2JzZXJ2ZXIpKS5waXBlKHNoYXJlKCkpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlZFRhc2skID0gbmV3IE9ic2VydmFibGU8VGFza1JlcHJlc2VudGF0aW9uPigob2JzZXJ2ZXIpID0+ICh0aGlzLmNvbXBsZXRlZFRhc2tPYnNlcnZlciA9IG9ic2VydmVyKSkucGlwZShzaGFyZSgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YXNrJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHRhc2spID0+IHRoaXMuYWN0aXZlVGFza3MucHVzaCh0YXNrKSk7XG5cbiAgICAgICAgdGhpcy5jb21wbGV0ZWRUYXNrJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHRhc2spID0+IHRoaXMuY29tcGxldGVkVGFza3MucHVzaCh0YXNrKSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBwcm9jZXNzSW5zdGFuY2VEZXRhaWxzID0gY2hhbmdlc1sncHJvY2Vzc0luc3RhbmNlRGV0YWlscyddO1xuICAgICAgICBpZiAocHJvY2Vzc0luc3RhbmNlRGV0YWlscz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWQocHJvY2Vzc0luc3RhbmNlRGV0YWlscy5jdXJyZW50VmFsdWUuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZChwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZEFjdGl2ZShwcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgICAgIHRoaXMubG9hZENvbXBsZXRlZChwcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgbG9hZEFjdGl2ZShwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFza3MgPSBbXTtcbiAgICAgICAgaWYgKHByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NUYXNrcyhwcm9jZXNzSW5zdGFuY2VJZCwgbnVsbCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmZvckVhY2goKHRhc2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFza09ic2VydmVyLm5leHQodGFzayk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYXNrcyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZENvbXBsZXRlZChwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tcGxldGVkVGFza3MgPSBbXTtcbiAgICAgICAgaWYgKHByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NUYXNrcyhwcm9jZXNzSW5zdGFuY2VJZCwgJ2NvbXBsZXRlZCcpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5mb3JFYWNoKCh0YXNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZFRhc2tPYnNlcnZlci5uZXh0KHRhc2spO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVkVGFza3MgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc1N0YXJ0Rm9ybURlZmluZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbnN0YW5jZURldGFpbHM/LnN0YXJ0Rm9ybURlZmluZWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0VXNlckZ1bGxOYW1lKHVzZXI6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gKHVzZXIuZmlyc3ROYW1lICYmIHVzZXIuZmlyc3ROYW1lICE9PSAnbnVsbCcgPyB1c2VyLmZpcnN0TmFtZSArICcgJyA6ICcnKSArIHVzZXIubGFzdE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdOb2JvZHknO1xuICAgIH1cblxuICAgIGdldEZvcm1hdERhdGUodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBjb25zdCBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xpY2tUYXNrKHRhc2s6IFRhc2tSZXByZXNlbnRhdGlvbikge1xuICAgICAgICBjb25zdCBhcmdzID0gbmV3IFRhc2tEZXRhaWxzRXZlbnQodGFzayk7XG4gICAgICAgIHRoaXMudGFza0NsaWNrLmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgY2xpY2tTdGFydFRhc2soKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0lkID0gdGhpcy5wcm9jZXNzSW5zdGFuY2VEZXRhaWxzLmlkO1xuICAgICAgICB0aGlzLnNob3dTdGFydERpYWxvZygpO1xuICAgIH1cblxuICAgIHNob3dTdGFydERpYWxvZygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cub3Blbih0aGlzLnN0YXJ0RGlhbG9nLCB7IGhlaWdodDogJzUwMHB4Jywgd2lkdGg6ICc3MDBweCcgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VTdGFydERpYWxvZygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICB9XG5cbiAgICBvblJlZnJlc2hDbGlja2VkKCkge1xuICAgICAgICB0aGlzLmxvYWQodGhpcy5wcm9jZXNzSW5zdGFuY2VEZXRhaWxzLmlkKTtcbiAgICB9XG5cbiAgICBvbkZvcm1Db250ZW50Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuY2xvc2VTdGFydERpYWxvZygpO1xuICAgIH1cbn1cbiIsIjxkaXYgICpuZ0lmPVwic2hvd1JlZnJlc2hCdXR0b25cIiBjbGFzcz1cInByb2Nlc3MtdGFza3MtcmVmcmVzaFwiID5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25SZWZyZXNoQ2xpY2tlZCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1kLTI0XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkxBQkVMUy5SRUZSRVNIJyB8IHRyYW5zbGF0ZVwiPnJlZnJlc2g8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0gQUNUSVZFIEZPUk0gLS0+XG5cbjxtYXQtY2hpcC1saXN0Ym94PlxuICAgIDxzcGFuIGNsYXNzPVwiYWRmLWNoaXAtbGFiZWxcIj57eyAnQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkxBQkVMUy5UQVNLU19BQ1RJVkUnfHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8bWF0LWNoaXAtb3B0aW9uIGNsYXNzPVwiYWRmLXByb2Nlc3MtYmFkZ2VcIiBjb2xvcj1cImFjY2VudFwiIHNlbGVjdGVkPVwidHJ1ZVwiPnt7YWN0aXZlVGFza3M/Lmxlbmd0aH19PC9tYXQtY2hpcC1vcHRpb24+XG48L21hdC1jaGlwLWxpc3Rib3g+XG5cbjxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiICpuZ0lmPVwiYWN0aXZlVGFza3M/Lmxlbmd0aCA+IDBcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhY3RpdmUtdGFza3NcIj5cbiAgICA8bWF0LWxpc3Q+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtIGNsYXNzPVwicHJvY2Vzcy10YXNrc19fdGFzay1pdGVtXCIgKm5nRm9yPVwibGV0IHRhc2sgb2YgYWN0aXZlVGFza3NcIiAoY2xpY2spPVwiY2xpY2tUYXNrKHRhc2spXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtTGluZT5hc3NpZ25tZW50PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8aDMgbWF0TGluZT57e3Rhc2submFtZSB8fCAnTmFtZWxlc3MgdGFzayd9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHNwYW4gbWF0TGluZT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5MQUJFTFMuVEFTS19TVUJUSVRMRScgfCB0cmFuc2xhdGU6e3VzZXI6IGdldFVzZXJGdWxsTmFtZSh0YXNrLmFzc2lnbmVlKSwgY3JlYXRlZDogZ2V0Rm9ybWF0RGF0ZSh0YXNrLmNyZWF0ZWQsICdtZWRpdW1EYXRlJykgfSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDwvbWF0LWxpc3Q+XG48L2Rpdj5cblxuPCEtLSBTVEFSVCBGT1JNIC0tPlxuXG48ZGl2ICpuZ0lmPVwiYWN0aXZlVGFza3M/Lmxlbmd0aCA9PT0gMFwiIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjdGl2ZS10YXNrcy1ub25lXCIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAge3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5UQVNLUy5OT19BQ1RJVkUnIHwgdHJhbnNsYXRlIH19XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImhhc1N0YXJ0Rm9ybURlZmluZWQoKVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiYWRmLWFjdGl2aXRpLWxhYmVsXCI+e3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5MQUJFTFMuU1RBUlRfRk9STSd8dHJhbnNsYXRlIH19PC9zcGFuPlxuXG4gICAgPCEtLUlGIFNUQVJUIFRBU0sgQ09NUExFVEVEIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIGRhdGEtYXV0b21hdGlvbi1pZD1cInN0YXJ0LWZvcm1cIj5cbiAgICAgICAgPG1hdC1saXN0PlxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJwcm9jZXNzLXRhc2tzX190YXNrLWl0ZW1cIiAoY2xpY2spPVwiY2xpY2tTdGFydFRhc2soKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUxpbmU+YXNzaWdubWVudDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGgzIG1hdExpbmU+e3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5MQUJFTFMuU1RBUlRfRk9STSd8dHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8c3BhbiBtYXRMaW5lPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkxBQkVMUy5UQVNLX1NVQlRJVExFJyB8IHRyYW5zbGF0ZTp7dXNlcjpnZXRVc2VyRnVsbE5hbWUocHJvY2Vzc0luc3RhbmNlRGV0YWlscy5zdGFydGVkQnkpLCBjcmVhdGVkOiBnZXRGb3JtYXREYXRlKHByb2Nlc3NJbnN0YW5jZURldGFpbHMuc3RhcnRlZCwgJ21lZGl1bURhdGUnKSB9IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPCEtLSBDT01QTEVURUQgRk9STSAtLT5cbjxtYXQtY2hpcC1saXN0Ym94PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1jaGlwLWxhYmVsXCI+e3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5MQUJFTFMuVEFTS1NfQ09NUExFVEVEJ3x0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDxtYXQtY2hpcC1vcHRpb24gY2xhc3M9XCJhZGYtcHJvY2Vzcy1iYWRnZVwiIGNvbG9yPVwiYWNjZW50XCIgc2VsZWN0ZWQ9XCJ0cnVlXCI+e3tjb21wbGV0ZWRUYXNrcz8ubGVuZ3RofX08L21hdC1jaGlwLW9wdGlvbj5cbjwvbWF0LWNoaXAtbGlzdGJveD5cblxuPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgKm5nSWY9XCJjb21wbGV0ZWRUYXNrcz8ubGVuZ3RoID4gMFwiIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbXBsZXRlZC10YXNrc1wiPlxuICAgIDxtYXQtbGlzdD5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJwcm9jZXNzLXRhc2tzX190YXNrLWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFzayBvZiBjb21wbGV0ZWRUYXNrc1wiIChjbGljayk9XCJjbGlja1Rhc2sodGFzaylcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUxpbmU+YXNzaWdubWVudDwvbWF0LWljb24+XG4gICAgICAgICAgICA8aDMgbWF0TGluZT57e3Rhc2submFtZSB8fCAnTmFtZWxlc3MgdGFzayd9fTwvaDM+XG4gICAgICAgICAgICA8c3BhbiBtYXRMaW5lPlxuICAgICAgICAgICAgICAgIHt7ICdBREZfUFJPQ0VTU19MSVNULkRFVEFJTFMuTEFCRUxTLlRBU0tfU1VCVElUTEUnIHwgdHJhbnNsYXRlOnt1c2VyOmdldFVzZXJGdWxsTmFtZSh0YXNrLmFzc2lnbmVlKSwgY3JlYXRlZDogZ2V0Rm9ybWF0RGF0ZSh0YXNrLmNyZWF0ZWQsICdtZWRpdW1EYXRlJykgfSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPC9tYXQtbGlzdD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiY29tcGxldGVkVGFza3M/Lmxlbmd0aCA9PT0gMFwiIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbXBsZXRlZC10YXNrcy1ub25lXCIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAge3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5UQVNLUy5OT19DT01QTEVURUQnIHwgdHJhbnNsYXRlIH19XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICpuZ0lmPVwiaGFzU3RhcnRGb3JtRGVmaW5lZCgpXCIgI3N0YXJ0RGlhbG9nPlxuICAgIDxkaXYgaWQ9XCJhZGYtc3RhcnQtcHJvY2Vzcy1kaWFsb2dcIiBjbGFzcz1cImFkZi1zdGFydC1wcm9jZXNzLWRpYWxvZ1wiPlxuICAgICAgICA8aDQgbWF0RGlhbG9nVGl0bGU+e3sgJ0FERl9QUk9DRVNTX0xJU1QuREVUQUlMUy5MQUJFTFMuU1RBUlRfRk9STSd8dHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJhZGYtc3RhcnQtcHJvY2Vzcy1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICAgICAgPGFkZi1zdGFydC1mb3JtIFtwcm9jZXNzSWRdPVwicHJvY2Vzc0lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UmVmcmVzaEJ1dHRvbl09XCJmYWxzZVwiIFtyZWFkT25seUZvcm1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNvbnRlbnRDbGlja2VkKT0nb25Gb3JtQ29udGVudENsaWNrKCknIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFkZi1zdGFydC1wcm9jZXNzLWRpYWxvZy1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVN0YXJ0RGlhbG9nKClcIj57eyAnQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLlRBU0tTLlRBU0tfQ0xPU0UnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,327 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { DataTableSchema, CustomEmptyContentTemplateDirective, CustomLoadingContentTemplateDirective, AppConfigService, UserPreferencesService, DEFAULT_PAGINATION, EmptyContentComponent, DataTableComponent, LoadingContentTemplateDirective, NoContentTemplateDirective } from '@alfresco/adf-core';
18
- import { Component, ContentChild, EventEmitter, Input, Output } from '@angular/core';
19
- import { ProcessService } from '../../services/process.service';
20
- import { BehaviorSubject } from 'rxjs';
21
- import { finalize } from 'rxjs/operators';
22
- import { CommonModule } from '@angular/common';
23
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
24
- import { TranslatePipe } from '@ngx-translate/core';
25
- import * as i0 from "@angular/core";
26
- import * as i1 from "../../services/process.service";
27
- import * as i2 from "@alfresco/adf-core";
28
- import * as i3 from "@angular/common";
29
- import * as i4 from "@angular/material/progress-spinner";
30
- const PRESET_KEY = 'adf-process-list.presets';
31
- export const processPresetsDefaultModel = {
32
- default: [
33
- {
34
- key: 'name',
35
- type: 'text',
36
- title: 'ADF_PROCESS_LIST.PROPERTIES.NAME',
37
- sortable: true
38
- },
39
- {
40
- key: 'created',
41
- type: 'text',
42
- title: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',
43
- cssClass: 'hidden',
44
- sortable: true
45
- }
46
- ]
47
- };
48
- export class ProcessInstanceListComponent extends DataTableSchema {
49
- constructor(processService, userPreferences, appConfig) {
50
- super(appConfig, PRESET_KEY, processPresetsDefaultModel);
51
- this.processService = processService;
52
- this.userPreferences = userPreferences;
53
- /** The page number of the processes to fetch. */
54
- this.page = 0;
55
- /** The number of processes to fetch in each page. */
56
- this.size = DEFAULT_PAGINATION.maxItems;
57
- /** Toggles multiple row selection, which renders checkboxes at the beginning of each row */
58
- this.multiselect = false;
59
- /**
60
- * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,
61
- * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for
62
- * multiple rows.
63
- */
64
- this.selectionMode = 'single'; // none|single|multiple
65
- /** Toggles default selection of the first row */
66
- this.selectFirstRow = true;
67
- /** Toggles the sticky header mode. */
68
- this.stickyHeader = false;
69
- /** Toggles custom context menu for the component. */
70
- this.showContextMenu = false;
71
- /** Enables column resizing for datatable */
72
- this.isResizingEnabled = false;
73
- /** Enables blur when resizing datatable columns */
74
- this.blurOnResize = true;
75
- /** Emitted before the context menu is displayed for a row. */
76
- this.showRowContextMenu = new EventEmitter();
77
- /**
78
- * Resolver function is used to show dynamic complex column objects
79
- * see the docs to learn how to configure a resolverFn.
80
- */
81
- this.resolverFn = null;
82
- /** Emitted when a row in the process list is clicked. */
83
- this.rowClick = new EventEmitter();
84
- /** Emitted when the list of process instances has been loaded successfully from the server. */
85
- // eslint-disable-next-line @angular-eslint/no-output-native
86
- this.success = new EventEmitter();
87
- /** Emitted when an error occurs while loading the list of process instances from the server. */
88
- // eslint-disable-next-line @angular-eslint/no-output-native
89
- this.error = new EventEmitter();
90
- /** Emitted when rows are selected/unselected */
91
- this.rowsSelected = new EventEmitter();
92
- this.isLoading = true;
93
- this.rows = [];
94
- this.sorting = ['created', 'desc'];
95
- this.size = this.userPreferences.paginationSize;
96
- this.pagination = new BehaviorSubject({
97
- maxItems: this.size,
98
- skipCount: 0,
99
- totalItems: 0
100
- });
101
- }
102
- ngAfterContentInit() {
103
- this.createDatatableSchema();
104
- if (this.data?.getColumns().length === 0) {
105
- this.data.setColumns(this.columns);
106
- }
107
- if (this.appId != null) {
108
- this.reload();
109
- }
110
- }
111
- ngOnChanges(changes) {
112
- if (this.isPropertyChanged(changes)) {
113
- if (this.isSortChanged(changes)) {
114
- this.sorting = this.sort ? this.sort.split('-') : this.sorting;
115
- }
116
- this.reload();
117
- }
118
- const presetColumnChanges = changes['presetColumn'];
119
- if (presetColumnChanges && !presetColumnChanges.firstChange) {
120
- this.columns = this.mergeJsonAndHtmlSchema();
121
- }
122
- }
123
- reload() {
124
- this.requestNode = this.createRequestNode();
125
- this.load(this.requestNode);
126
- }
127
- /**
128
- * Select the first instance of a list if present
129
- */
130
- selectFirst() {
131
- if (this.selectFirstRow) {
132
- if (!this.isListEmpty()) {
133
- const dataRow = this.rows[0];
134
- dataRow.isSelected = true;
135
- this.currentInstanceId = dataRow['id'];
136
- }
137
- else {
138
- this.currentInstanceId = null;
139
- }
140
- }
141
- }
142
- /**
143
- * Get the id of the current instance
144
- *
145
- * @returns instance id
146
- */
147
- getCurrentId() {
148
- return this.currentInstanceId;
149
- }
150
- /**
151
- * Check if the list is empty
152
- *
153
- * @returns `true` if list is empty, otherwise `false`
154
- */
155
- isListEmpty() {
156
- return !this.rows || this.rows.length === 0;
157
- }
158
- /**
159
- * Emit the event rowClick passing the current task id when the row is clicked
160
- *
161
- * @param event input event
162
- */
163
- onRowClick(event) {
164
- const item = event;
165
- this.currentInstanceId = item.value.getValue('id');
166
- this.rowClick.emit(this.currentInstanceId);
167
- }
168
- onRowCheckboxToggle(event) {
169
- this.rowsSelected.emit([...event.detail.selection]);
170
- }
171
- /**
172
- * Emit the event rowClick passing the current task id when pressed the Enter key on the selected row
173
- *
174
- * @param event keyboard event
175
- */
176
- onRowKeyUp(event) {
177
- if (event.detail.keyboardEvent.key === 'Enter') {
178
- event.preventDefault();
179
- this.currentInstanceId = event.detail.row.getValue('id');
180
- this.rowClick.emit(this.currentInstanceId);
181
- }
182
- }
183
- onShowRowContextMenu(event) {
184
- this.showRowContextMenu.emit(event);
185
- }
186
- updatePagination(params) {
187
- const needsReload = params.maxItems || params.skipCount;
188
- this.size = params.maxItems;
189
- this.page = this.currentPage(params.skipCount, params.maxItems);
190
- if (needsReload) {
191
- this.reload();
192
- }
193
- }
194
- currentPage(skipCount, maxItems) {
195
- return skipCount && maxItems ? Math.floor(skipCount / maxItems) : 0;
196
- }
197
- createRequestNode() {
198
- return {
199
- appDefinitionId: this.appId,
200
- processDefinitionId: this.processDefinitionId,
201
- processInstanceId: this.processInstanceId,
202
- state: this.state,
203
- sort: this.sort,
204
- page: this.page,
205
- size: this.size,
206
- start: 0
207
- };
208
- }
209
- isSortChanged(changes) {
210
- const actualSort = changes['sort'];
211
- return actualSort?.currentValue && actualSort.currentValue !== actualSort.previousValue;
212
- }
213
- isPropertyChanged(changes) {
214
- let changed = false;
215
- const appId = changes['appId'];
216
- const processDefinitionId = changes['processDefinitionId'];
217
- const processInstanceId = changes['processInstanceId'];
218
- const state = changes['state'];
219
- const sort = changes['sort'];
220
- const page = changes['page'];
221
- const size = changes['size'];
222
- if (appId?.currentValue) {
223
- changed = true;
224
- }
225
- else if (processDefinitionId) {
226
- changed = true;
227
- }
228
- else if (processInstanceId) {
229
- changed = true;
230
- }
231
- else if (state?.currentValue) {
232
- changed = true;
233
- }
234
- else if (sort?.currentValue) {
235
- changed = true;
236
- }
237
- else if (page && page?.currentValue !== page.previousValue) {
238
- changed = true;
239
- }
240
- else if (size && size.currentValue !== size.previousValue) {
241
- changed = true;
242
- }
243
- return changed;
244
- }
245
- load(requestNode) {
246
- this.isLoading = true;
247
- this.processService
248
- .getProcesses(requestNode)
249
- .pipe(finalize(() => (this.isLoading = false)))
250
- .subscribe((response) => {
251
- this.rows = response.data;
252
- this.selectFirst();
253
- this.success.emit(response);
254
- this.pagination.next({
255
- count: (response.data || []).length,
256
- maxItems: this.size,
257
- skipCount: this.page * this.size,
258
- totalItems: response.total
259
- });
260
- }, (error) => {
261
- this.error.emit(error);
262
- });
263
- }
264
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceListComponent, deps: [{ token: i1.ProcessService }, { token: i2.UserPreferencesService }, { token: i2.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
265
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessInstanceListComponent, isStandalone: true, selector: "adf-process-instance-list", inputs: { appId: "appId", processDefinitionId: "processDefinitionId", processInstanceId: "processInstanceId", state: "state", sort: "sort", page: "page", size: "size", data: "data", multiselect: "multiselect", selectionMode: "selectionMode", selectFirstRow: "selectFirstRow", stickyHeader: "stickyHeader", showContextMenu: "showContextMenu", isResizingEnabled: "isResizingEnabled", blurOnResize: "blurOnResize", resolverFn: "resolverFn" }, outputs: { showRowContextMenu: "showRowContextMenu", rowClick: "rowClick", success: "success", error: "error", rowsSelected: "rowsSelected" }, queries: [{ propertyName: "customEmptyContent", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (row-select)=\"onRowCheckboxToggle($any($event))\"\n (row-unselect)=\"onRowCheckboxToggle($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n", styles: [".adf-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.no-content-message{font-size:var(--theme-subheading-2-font-size);font-weight:700;text-align:center;opacity:.54;color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }, { kind: "directive", type: LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }] }); }
266
- }
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessInstanceListComponent, decorators: [{
268
- type: Component,
269
- args: [{ selector: 'adf-process-instance-list', standalone: true, imports: [
270
- CommonModule,
271
- MatProgressSpinnerModule,
272
- EmptyContentComponent,
273
- TranslatePipe,
274
- DataTableComponent,
275
- LoadingContentTemplateDirective,
276
- NoContentTemplateDirective
277
- ], template: "<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (row-select)=\"onRowCheckboxToggle($any($event))\"\n (row-unselect)=\"onRowCheckboxToggle($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n", styles: [".adf-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.no-content-message{font-size:var(--theme-subheading-2-font-size);font-weight:700;text-align:center;opacity:.54;color:#000}\n"] }]
278
- }], ctorParameters: () => [{ type: i1.ProcessService }, { type: i2.UserPreferencesService }, { type: i2.AppConfigService }], propDecorators: { customEmptyContent: [{
279
- type: ContentChild,
280
- args: [CustomEmptyContentTemplateDirective]
281
- }], customLoadingContent: [{
282
- type: ContentChild,
283
- args: [CustomLoadingContentTemplateDirective]
284
- }], appId: [{
285
- type: Input
286
- }], processDefinitionId: [{
287
- type: Input
288
- }], processInstanceId: [{
289
- type: Input
290
- }], state: [{
291
- type: Input
292
- }], sort: [{
293
- type: Input
294
- }], page: [{
295
- type: Input
296
- }], size: [{
297
- type: Input
298
- }], data: [{
299
- type: Input
300
- }], multiselect: [{
301
- type: Input
302
- }], selectionMode: [{
303
- type: Input
304
- }], selectFirstRow: [{
305
- type: Input
306
- }], stickyHeader: [{
307
- type: Input
308
- }], showContextMenu: [{
309
- type: Input
310
- }], isResizingEnabled: [{
311
- type: Input
312
- }], blurOnResize: [{
313
- type: Input
314
- }], showRowContextMenu: [{
315
- type: Output
316
- }], resolverFn: [{
317
- type: Input
318
- }], rowClick: [{
319
- type: Output
320
- }], success: [{
321
- type: Output
322
- }], error: [{
323
- type: Output
324
- }], rowsSelected: [{
325
- type: Output
326
- }] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvcHJvY2Vzcy1saXN0L2NvbXBvbmVudHMvcHJvY2Vzcy1saXN0L3Byb2Nlc3MtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC9wcm9jZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGVBQWUsRUFHZixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBR3JDLGdCQUFnQixFQUdoQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsK0JBQStCLEVBQy9CLDBCQUEwQixFQUU3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUVwRCxNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQztB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QWZ4QyxTQUFTOytCQUNJLDJCQUEyQixjQUN6QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLCtCQUErQjt3QkFDL0IsMEJBQTBCO3FCQUM3Qjt1SkFNRCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsbUNBQW1DO2dCQUlqRCxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMscUNBQXFDO2dCQUtuRCxLQUFLO3NCQURKLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBUVAsVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsTUFBTTtnQkFNUCxPQUFPO3NCQUROLE1BQU07Z0JBTVAsS0FBSztzQkFESixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBEYXRhVGFibGVTY2hlbWEsXG4gICAgRGF0YVJvd0V2ZW50LFxuICAgIERhdGFUYWJsZUFkYXB0ZXIsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhUm93LFxuICAgIERhdGFDb2x1bW4sXG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBQYWdpbmF0ZWRDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbk1vZGVsLFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgRGF0YUNlbGxFdmVudCxcbiAgICBERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgRW1wdHlDb250ZW50Q29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE5vQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE9iamVjdERhdGFSb3dcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvY2Vzc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvbixcbiAgICBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uU29ydCxcbiAgICBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uU3RhdGUsXG4gICAgUmVzdWx0TGlzdERhdGFSZXByZXNlbnRhdGlvblByb2Nlc3NJbnN0YW5jZVJlcHJlc2VudGF0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCBQUkVTRVRfS0VZID0gJ2FkZi1wcm9jZXNzLWxpc3QucHJlc2V0cyc7XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUHJlc2V0c0RlZmF1bHRNb2RlbCA9IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ25hbWUnLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdGl0bGU6ICdBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuTkFNRScsXG4gICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdjcmVhdGVkJyxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLkNSRUFURUQnLFxuICAgICAgICAgICAgY3NzQ2xhc3M6ICdoaWRkZW4nLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXByb2Nlc3MtaW5zdGFuY2UtbGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBFbXB0eUNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmVcbiAgICBdLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtbGlzdC5jb21wb25lbnQuY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0luc3RhbmNlTGlzdENvbXBvbmVudCBleHRlbmRzIERhdGFUYWJsZVNjaGVtYSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgUGFnaW5hdGVkQ29tcG9uZW50IHtcbiAgICBAQ29udGVudENoaWxkKEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbUVtcHR5Q29udGVudDogQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgICBAQ29udGVudENoaWxkKEN1c3RvbUxvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgY3VzdG9tTG9hZGluZ0NvbnRlbnQ6IEN1c3RvbUxvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgICAvKiogVGhlIGlkIG9mIHRoZSBhcHAuICovXG4gICAgQElucHV0KClcbiAgICBhcHBJZDogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSBEZWZpbml0aW9uIElkIG9mIHRoZSBwcm9jZXNzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBpZCBvZiB0aGUgcHJvY2VzcyBpbnN0YW5jZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogRGVmaW5lcyB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3Nlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXRlOiBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uU3RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzb3J0IG9yZGVyaW5nIG9mIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc29ydDogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvblNvcnQ7XG5cbiAgICAvKiogVGhlIHBhZ2UgbnVtYmVyIG9mIHRoZSBwcm9jZXNzZXMgdG8gZmV0Y2guICovXG4gICAgQElucHV0KClcbiAgICBwYWdlOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqIFRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIGZldGNoIGluIGVhY2ggcGFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IG51bWJlciA9IERFRkFVTFRfUEFHSU5BVElPTi5tYXhJdGVtcztcblxuICAgIC8qKiBEYXRhIHNvdXJjZSB0byBkZWZpbmUgdGhlIGRhdGF0YWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRhdGE6IERhdGFUYWJsZUFkYXB0ZXI7XG5cbiAgICAvKiogVG9nZ2xlcyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uLCB3aGljaCByZW5kZXJzIGNoZWNrYm94ZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBzZWxlY3Rpb24gbW9kZS4gQ2FuIGJlIG5vbmUsIGBzaW5nbGVgIG9yIGBtdWx0aXBsZWAuIEZvciBgbXVsdGlwbGVgIG1vZGUsXG4gICAgICogeW91IGNhbiB1c2UgQ21kIChtYWNPUykgb3IgQ3RybCAoV2luKSBtb2RpZmllciBrZXkgdG8gdG9nZ2xlIHNlbGVjdGlvbiBmb3JcbiAgICAgKiBtdWx0aXBsZSByb3dzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gJ3NpbmdsZSc7IC8vIG5vbmV8c2luZ2xlfG11bHRpcGxlXG5cbiAgICAvKiogVG9nZ2xlcyBkZWZhdWx0IHNlbGVjdGlvbiBvZiB0aGUgZmlyc3Qgcm93ICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RGaXJzdFJvdzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgc3RpY2t5IGhlYWRlciBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyBjdXN0b20gY29udGV4dCBtZW51IGZvciB0aGUgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NvbnRleHRNZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlcyBjb2x1bW4gcmVzaXppbmcgZm9yIGRhdGF0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNSZXNpemluZ0VuYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBFbmFibGVzIGJsdXIgd2hlbiByZXNpemluZyBkYXRhdGFibGUgY29sdW1ucyAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmx1ck9uUmVzaXplID0gdHJ1ZTtcblxuICAgIC8qKiBFbWl0dGVkIGJlZm9yZSB0aGUgY29udGV4dCBtZW51IGlzIGRpc3BsYXllZCBmb3IgYSByb3cuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd1Jvd0NvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhQ2VsbEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXIgZnVuY3Rpb24gaXMgdXNlZCB0byBzaG93IGR5bmFtaWMgY29tcGxleCBjb2x1bW4gb2JqZWN0c1xuICAgICAqIHNlZSB0aGUgZG9jcyB0byBsZWFybiBob3cgdG8gY29uZmlndXJlIGEgcmVzb2x2ZXJGbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc29sdmVyRm46IChyb3c6IERhdGFSb3csIGNvbDogRGF0YUNvbHVtbikgPT4gYW55ID0gbnVsbDtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSByb3cgaW4gdGhlIHByb2Nlc3MgbGlzdCBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBsaXN0IG9mIHByb2Nlc3MgaW5zdGFuY2VzIGhhcyBiZWVuIGxvYWRlZCBzdWNjZXNzZnVsbHkgZnJvbSB0aGUgc2VydmVyLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKVxuICAgIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc3VsdExpc3REYXRhUmVwcmVzZW50YXRpb25Qcm9jZXNzSW5zdGFuY2VSZXByZXNlbnRhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGxvYWRpbmcgdGhlIGxpc3Qgb2YgcHJvY2VzcyBpbnN0YW5jZXMgZnJvbSB0aGUgc2VydmVyLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHJvd3MgYXJlIHNlbGVjdGVkL3Vuc2VsZWN0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByb3dzU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdERhdGFSb3dbXT4oKTtcblxuICAgIHJlcXVlc3ROb2RlOiBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uO1xuICAgIGN1cnJlbnRJbnN0YW5jZUlkOiBzdHJpbmc7XG4gICAgaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgICByb3dzOiBhbnlbXSA9IFtdO1xuICAgIHNvcnRpbmc6IGFueVtdID0gWydjcmVhdGVkJywgJ2Rlc2MnXTtcbiAgICBwYWdpbmF0aW9uOiBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbk1vZGVsPjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLCBwcml2YXRlIHVzZXJQcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZSwgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGFwcENvbmZpZywgUFJFU0VUX0tFWSwgcHJvY2Vzc1ByZXNldHNEZWZhdWx0TW9kZWwpO1xuICAgICAgICB0aGlzLnNpemUgPSB0aGlzLnVzZXJQcmVmZXJlbmNlcy5wYWdpbmF0aW9uU2l6ZTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4oe1xuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGF0YWJsZVNjaGVtYSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRhdGE/LmdldENvbHVtbnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcHBJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5pc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTb3J0Q2hhbmdlZChjaGFuZ2VzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydGluZyA9IHRoaXMuc29ydCA/IHRoaXMuc29ydC5zcGxpdCgnLScpIDogdGhpcy5zb3J0aW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXNldENvbHVtbkNoYW5nZXMgPSBjaGFuZ2VzWydwcmVzZXRDb2x1bW4nXTtcbiAgICAgICAgaWYgKHByZXNldENvbHVtbkNoYW5nZXMgJiYgIXByZXNldENvbHVtbkNoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMubWVyZ2VKc29uQW5kSHRtbFNjaGVtYSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVsb2FkKCkge1xuICAgICAgICB0aGlzLnJlcXVlc3ROb2RlID0gdGhpcy5jcmVhdGVSZXF1ZXN0Tm9kZSgpO1xuICAgICAgICB0aGlzLmxvYWQodGhpcy5yZXF1ZXN0Tm9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhIGxpc3QgaWYgcHJlc2VudFxuICAgICAqL1xuICAgIHNlbGVjdEZpcnN0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RGaXJzdFJvdykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTGlzdEVtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhUm93ID0gdGhpcy5yb3dzWzBdO1xuICAgICAgICAgICAgICAgIGRhdGFSb3cuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5zdGFuY2VJZCA9IGRhdGFSb3dbJ2lkJ107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluc3RhbmNlSWQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBpZCBvZiB0aGUgY3VycmVudCBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHJldHVybnMgaW5zdGFuY2UgaWRcbiAgICAgKi9cbiAgICBnZXRDdXJyZW50SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEluc3RhbmNlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGxpc3QgaXMgZW1wdHlcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBsaXN0IGlzIGVtcHR5LCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGlzTGlzdEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucm93cyB8fCB0aGlzLnJvd3MubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXQgdGhlIGV2ZW50IHJvd0NsaWNrIHBhc3NpbmcgdGhlIGN1cnJlbnQgdGFzayBpZCB3aGVuIHRoZSByb3cgaXMgY2xpY2tlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IGlucHV0IGV2ZW50XG4gICAgICovXG4gICAgb25Sb3dDbGljayhldmVudDogRGF0YVJvd0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBldmVudDtcblxuICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gaXRlbS52YWx1ZS5nZXRWYWx1ZSgnaWQnKTtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHRoaXMuY3VycmVudEluc3RhbmNlSWQpO1xuICAgIH1cblxuICAgIG9uUm93Q2hlY2tib3hUb2dnbGUoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMucm93c1NlbGVjdGVkLmVtaXQoWy4uLmV2ZW50LmRldGFpbC5zZWxlY3Rpb25dKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0IHRoZSBldmVudCByb3dDbGljayBwYXNzaW5nIHRoZSBjdXJyZW50IHRhc2sgaWQgd2hlbiBwcmVzc2VkIHRoZSBFbnRlciBrZXkgb24gdGhlIHNlbGVjdGVkIHJvd1xuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IGtleWJvYXJkIGV2ZW50XG4gICAgICovXG4gICAgb25Sb3dLZXlVcChldmVudDogQ3VzdG9tRXZlbnQ8YW55Pikge1xuICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLmtleWJvYXJkRXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gZXZlbnQuZGV0YWlsLnJvdy5nZXRWYWx1ZSgnaWQnKTtcbiAgICAgICAgICAgIHRoaXMucm93Q2xpY2suZW1pdCh0aGlzLmN1cnJlbnRJbnN0YW5jZUlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2hvd1Jvd0NvbnRleHRNZW51KGV2ZW50OiBEYXRhQ2VsbEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2hvd1Jvd0NvbnRleHRNZW51LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBhZ2luYXRpb24ocGFyYW1zOiBQYWdpbmF0aW9uTW9kZWwpIHtcbiAgICAgICAgY29uc3QgbmVlZHNSZWxvYWQgPSBwYXJhbXMubWF4SXRlbXMgfHwgcGFyYW1zLnNraXBDb3VudDtcblxuICAgICAgICB0aGlzLnNpemUgPSBwYXJhbXMubWF4SXRlbXM7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMuY3VycmVudFBhZ2UocGFyYW1zLnNraXBDb3VudCwgcGFyYW1zLm1heEl0ZW1zKTtcblxuICAgICAgICBpZiAobmVlZHNSZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjdXJyZW50UGFnZShza2lwQ291bnQ6IG51bWJlciwgbWF4SXRlbXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBza2lwQ291bnQgJiYgbWF4SXRlbXMgPyBNYXRoLmZsb29yKHNraXBDb3VudCAvIG1heEl0ZW1zKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0Tm9kZSgpOiBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFwcERlZmluaXRpb25JZDogdGhpcy5hcHBJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgICAgIHByb2Nlc3NJbnN0YW5jZUlkOiB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkLFxuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgICAgICBzb3J0OiB0aGlzLnNvcnQsXG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgICAgICBzdGFydDogMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTb3J0Q2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFjdHVhbFNvcnQgPSBjaGFuZ2VzWydzb3J0J107XG4gICAgICAgIHJldHVybiBhY3R1YWxTb3J0Py5jdXJyZW50VmFsdWUgJiYgYWN0dWFsU29ydC5jdXJyZW50VmFsdWUgIT09IGFjdHVhbFNvcnQucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvcGVydHlDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBhcHBJZCA9IGNoYW5nZXNbJ2FwcElkJ107XG4gICAgICAgIGNvbnN0IHByb2Nlc3NEZWZpbml0aW9uSWQgPSBjaGFuZ2VzWydwcm9jZXNzRGVmaW5pdGlvbklkJ107XG4gICAgICAgIGNvbnN0IHByb2Nlc3NJbnN0YW5jZUlkID0gY2hhbmdlc1sncHJvY2Vzc0luc3RhbmNlSWQnXTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjaGFuZ2VzWydzdGF0ZSddO1xuICAgICAgICBjb25zdCBzb3J0ID0gY2hhbmdlc1snc29ydCddO1xuICAgICAgICBjb25zdCBwYWdlID0gY2hhbmdlc1sncGFnZSddO1xuICAgICAgICBjb25zdCBzaXplID0gY2hhbmdlc1snc2l6ZSddO1xuXG4gICAgICAgIGlmIChhcHBJZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzRGVmaW5pdGlvbklkKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc29ydD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwYWdlICYmIHBhZ2U/LmN1cnJlbnRWYWx1ZSAhPT0gcGFnZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChzaXplICYmIHNpemUuY3VycmVudFZhbHVlICE9PSBzaXplLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZChyZXF1ZXN0Tm9kZTogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvbikge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9jZXNzZXMocmVxdWVzdE5vZGUpXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiAocmVzcG9uc2UuZGF0YSB8fCBbXSkubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb3VudDogdGhpcy5wYWdlICogdGhpcy5zaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogcmVzcG9uc2UudG90YWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxhZGYtZGF0YXRhYmxlXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW3Jvd3NdPVwicm93c1wiXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW3NvcnRpbmddPVwic29ydGluZ1wiXG4gICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgIFtibHVyT25SZXNpemVdPVwiYmx1ck9uUmVzaXplXCJcbiAgICBbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICBbcmVzb2x2ZXJGbl09XCJyZXNvbHZlckZuXCJcbiAgICBbY29udGV4dE1lbnVdPVwic2hvd0NvbnRleHRNZW51XCJcbiAgICAoc2hvd1Jvd0NvbnRleHRNZW51KT1cIm9uU2hvd1Jvd0NvbnRleHRNZW51KCRldmVudClcIlxuICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgIChyb3cta2V5dXApPVwib25Sb3dLZXlVcCgkYW55KCRldmVudCkpXCJcbiAgICAocm93LXNlbGVjdCk9XCJvblJvd0NoZWNrYm94VG9nZ2xlKCRhbnkoJGV2ZW50KSlcIlxuICAgIChyb3ctdW5zZWxlY3QpPVwib25Sb3dDaGVja2JveFRvZ2dsZSgkYW55KCRldmVudCkpXCJcbj5cbiAgICA8YWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY3VzdG9tTG9hZGluZ0NvbnRlbnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb2Nlc3MtbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIC8+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtY3VzdG9tLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudCAqbmdJZj1cIiFjdXN0b21FbXB0eUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzZXNzbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIocmVxdWVzdE5vZGUgPyAnQURGX1BST0NFU1NfTElTVC5MSVNULlRJVExFJyA6ICdBREZfUFJPQ0VTU19MSVNULkZJTFRFUlMuTUVTU0FHRVMuTk9ORScpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIidBREZfUFJPQ0VTU19MSVNULkxJU1QuU1VCVElUTEUnfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlXCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuPC9hZGYtZGF0YXRhYmxlPlxuIl19